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:
$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
$wgLBFactoryConf = [ 'class' => 'Wikimedia\\Rdbms\\LBFactorySimple', ];
$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
$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 .