Příručka:$wgLBFactoryConf
Nastavení LoadBalanceru: $wgLBFactoryConf | |
---|---|
Tovární konfigurace load balanceru. |
|
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'; //must be same for all 3 wikis in this simplified setup
$wgDBpassword = 'pass'; // Same pass must be usable for all 3 wikis
$wgLBFactoryConf = array(
'class' => 'LBFactoryMulti',
'sectionsByDB' => array(
'wikidb1' => 's1', // Assumes db name for first wiki is wikidb1
'wikidb2' => 's1', // and so on.
'wikidb3' => 's1',
),
'sectionLoads' => array(
's1' => array(
'localhost' => 0, // All on section s1, which has single primary, at 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'; //must be same for all 3 wikis in this simplified setup
$wgDBpassword = 'pass'; // Same pass must be usable for all 3 wikis
$wgLBFactoryConf = array(
'class' => 'LBFactoryMulti',
'sectionsByDB' => array(
'wikidb1' => 's1', // Assumes db name for first wiki is wikidb1
'wikidb2' => 's1', // and so on.
'wikidb3' => 's2',
),
'sectionLoads' => array(
's1' => array(
'db1' => 0,
'db2' => 50, /* the 50 is the weight (of replica servers). Would matter if you had multiple */
),
'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:
Much of the information in this file has been moved into an etcd (key-value) store. For an older example see e.g. db-eqiad.php from 2019.
Konfigurace Wikimedie používá také $wgCdnReboundPurgeDelay .