Příručka:$wgLBFactoryConf
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) |
Další nastavení: Podle abecedy | Podle funkce |
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:
- 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' => 'DEFAULT', // Předpokládá, že název db pro první wiki je wikidb1
'wikidb2' => 'DEFAULT', // a tak dále.
'wikidb3' => 'DEFAULT',
),
'sectionLoads' => array(
'DEFAULT' => array(
'localhost' => 0, // Vše v sekci DEFAULT, 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' => 'DEFAULT', // Předpokládá, že název db pro první wiki je wikidb1
'wikidb2' => 'DEFAULT', // a tak dále.
'wikidb3' => 's1',
),
'sectionLoads' => array(
'DEFAULT' => array(
'db1' => 0,
'db2' => 50, /* 50 je zatížení (replikovaných serverů). Záleželo by na tom, kdybyste jich měli více */
),
's1' => 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 .