Příručka:$wgLBFactoryConf

This page is a translated version of the page Manual:$wgLBFactoryConf and the translation is 100% complete.
Nastavení LoadBalanceru: $wgLBFactoryConf
Konfigurace pro službu ILBFactory
Zavedeno od verze:1.13.0 (r32578)
Odstraněno od verze:stále se používá
Povolené hodnoty:(pole)
Výchozí hodnota:(viz níže)

Podrobnosti

Chcete-li nastavit multi-primární (dříve nazývanou multi-master) wiki farmu, nastavte zde třídu na něco, co může vrátit Wikimedia\Rdbms\LBFactory s příslušným primárním voláním na getMainLB(). Zde uvedená třída je zodpovědná za čtení $wgDBservers , $wgDBserver atd., takže její přepsání může způsobit ignorování těchto globálů.

Pro tento účel je poskytována třída Wikimedia\Rdbms\LBFactoryMulti, konfigurace pro tuto třídu je uvedena níže:

  Varování: Pokud použijete tuto třídu, všechna předchozí nastavení jako $wgDBservers , $wgExternalServers , ... budou ignorována.
sectionsByDB
Mapa názvů databází na názvy sekcí
sectionLoads
2D mapa. Pro každou sekci poskytuje mapu názvů serverů k poměrům zatížení. Například: array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
serverTemplate
Asociativní pole informací o serveru, jak je zdokumentováno pro $wgDBservers. Položky hostitele, názvu hostitele a zatížení budou přepsány.
groupLoadsBySection
3D mapa udávající poměry zatížení serveru pro každou sekci a skupinu. Například: array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
groupLoadsByDB
3D mapa udávající poměry zatížení serveru podle názvu DB.
hostsByName
Mapa názvu hostitele k IP adrese.
externalLoads
Mapa názvu clusteru externího úložiště na mapu zatížení serveru
externalTemplate
Informační struktura serveru používaná pro externí úložné servery
templateOverridesByServer
2D mapa překrývající mainTemplate nebo externalTemplate na bázi server po serveru.
templateOverridesByCluster
2D mapa přepisující externalTemplate po clusteru
masterTemplateOverrides
Přepisovací pole pro mainTemplate a externalTemplate pro všechny primární servery.

Výchozí hodnoty

Verze MediaWiki:
1.39
$wgLBFactoryConf = [
	'class' => 'Wikimedia\\Rdbms\\LBFactorySimple',
];
Verze MediaWiki:
1.31 – 1.38
$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
Verze MediaWiki:
1.23 – 1.30
$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
Verze MediaWiki:
1.13 – 1.22
$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );

Jednoduché příklady

3 wikiny všechny používající localhost jako db server

Zde je návod, jak by fungovala jednoduchá konfigurace, kde máte tři wiki (wikidb1, wikidb2 a wikidb3), z nichž všechny používají stejný databázový server (ale s různými názvy databází) a všechny mají jeden primární server, který je stejný jako váš webový server (localhost)

$wgDBuser = 'your db username'; //musí být stejné pro všechny 3 wikiny v tomto zjednodušeném nastavení
$wgDBpassword = 'pass'; // Stejný průchod musí být použitelný pro všechny 3 wikiny
$wgLBFactoryConf = array(

'class' => 'LBFactoryMulti',

'sectionsByDB' => array(
    'wikidb1' => 's1', // Předpokládá, že název db pro první wiki je wikidb1
    'wikidb2' => 's1', // a tak dále.
    'wikidb3' => 's1',
),

'sectionLoads' => array(
    's1' => array(
        'localhost'  => 0, // Vše v sekci s1, která má jeden primární, na localhost.
    ),
),


'serverTemplate' => array(
    'dbname'      => $wgDBname,
    'user'          => $wgDBuser,
    'password'      => $wgDBpassword,
    'type'          => 'mysql',
    'flags'          => DBO_DEFAULT,
    'max lag'      => 30,
),
);

3 wiki používající různé hostitele jako db a jednu replikovanou databázi

Řekněme, že vaše wiki se trochu rozrostla. Řekněme, že chcete oddělit váš db server od vašeho webového serveru. A máte replikační server, pro který jste nastavili replikaci. A nyní umístíte wikidb3 na zcela samostatný server.

Řekněme tedy, že wikidb1 a wikidb2 sdílejí primární server (db1) a repliku (db2). Wikidb3 má svůj vlastní db server db3 (a žádnou repliku). Udělali byste něco jako:

$wgDBuser = 'your db username'; //musí být stejné pro všechny 3 wikiny v tomto zjednodušeném nastavení
$wgDBpassword = 'pass'; // Stejný průchod musí být použitelný pro všechny 3 wikiny
$wgLBFactoryConf = array(

'class' => 'LBFactoryMulti',

'sectionsByDB' => array(
    'wikidb1' => 's1', // Předpokládá, že název db pro první wiki je wikidb1
    'wikidb2' => 's1', // a tak dále.
    'wikidb3' => 's2',
),

'sectionLoads' => array(
    's1' => array(
        'db1'  => 0,
        'db2'  => 50, /* 50 je zatížení (replikovaných serverů). Záleželo by na tom, kdybyste jich měli více */
    ),
    's2' => array(
        'db3' => 0
    ),
),


'serverTemplate' => array(
    'dbname'      => $wgDBname,
    'user'          => $wgDBuser,
    'password'      => $wgDBpassword,
    'type'          => 'mysql',
    'flags'          => DBO_DEFAULT,
    'max lag'      => 30,
),
);

Konfigurace Wikimedie

Chcete-li vidět, jak Wikimedie používá $wgLBFactoryConf ke konfiguraci svých wiki, podívejte se na:

Velká část informací v tomto souboru byla přesunuta do úložiště etcd (klíč-hodnota). Starší příklad viz např. db-eqiad.php od roku 2019.

Konfigurace Wikimedie používá také $wgCdnReboundPurgeDelay .