Manual:$wgLBFactoryConf
LoadBalancer-instellingen: $wgLBFactoryConf | |
---|---|
Configuratie van de service ILBFactory |
|
Geïntroduceerd in versie: | 1.13.0 (r32578) |
Verwijderd in versie: | nog steeds in gebruik |
Toegelaten waardes: | (array) |
Standaardwaarde: | (Zie onder.) |
Andere instellingen: Alfabetisch | Per functie |
Details
Om een multi-master wiki farm op te zetten, zet de klasse hier op iets dat een Wikimedia\Rdbms\LBFactory met een geschikte master op een oproep naar getMainLB()
kan terugsturen.
De hier geïdentificeerde klasse is verantwoordelijk voor het lezen van $wgDBservers
, $wgDBserver
, etc., dus het kan ertoe leiden dat die globalen genegeerd worden.
De Wikimedia\Rdbms\LBFactoryMulti klasse is voor dit doel voorzien, de configuratie voor deze klasse is hieronder weergegeven:
- sectionsByDB
- Een mapping met databasenamen naar sectienamen
- sectionLoads
- Een 2d mapping. Geeft voor elke sectie een mapping met servernamen om de laadverhoudingen te bepalen. Bijvoorbeeld:
array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
- serverTemplate
- Een server info associatieve array zoals gedocumenteerd voor
$wgDBservers
. De host, hostName en load entries zullen worden overschreven. - groupLoadsBySection
- Een 3-d mapping die de serverbelasting voor elke sectie en groep aangeeft. Bijvoorbeeld:
array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
- groupLoadsByDB
- Een 3-d mapping die de belastingsratio's van de server aangeeft op naam van de DB.
- hostsByName
- Een mapping van hostnaam naar IP-adres
- externalLoads
- Een mapping met de naam van een extern opslagcluster om de mapping van de server te laden
- externalTemplate
- Een serverinfo-structuur die wordt gebruikt voor externe opslagservers
- templateOverridesByServer
- Een 2d mapping die de mainTemplate of externeTemplate op een server-per-server basis overschrijft.
- templateOverridesByCluster
- Een 2d mapping die externalTemplate per cluster overschrijft
- masterTemplateOverrides
- Een override array voor mainTemplate en externalTemplate voor alle master servers.
Standaardwaarden
MediaWiki-versie: | ≥ 1.39 |
$wgLBFactoryConf = [
'class' => 'Wikimedia\\Rdbms\\LBFactorySimple',
];
MediaWiki-versies: | 1.31 – 1.38 |
$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
MediaWiki-versies: | 1.23 – 1.30 |
$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
MediaWiki-versies: | 1.13 – 1.22 |
$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
Simpele voorbeelden
3 wiki's die allemaal localhost gebruiken als db server
Hier is hoe een eenvoudige configuratie zou werken, waarbij u drie wiki's (wikidb1, wikidb2 en wikidb3) hebt, die allemaal dezelfde databaseserver gebruiken (maar met verschillende databasenamen), en die allemaal een enkele hoofdserver hebben die hetzelfde is als uw webserver (localhost)
$wgDBuser = 'your db username'; //moet hetzelfde zijn voor alle 3 wiki's in deze vereenvoudigde configuratie
$wgDBpassword = 'pass'; // Hetzelfde wachtwoord moet voor alle 3 wiki's gebruikt kunnen worden
$wgLBFactoryConf = array(
'class' => 'LBFactoryMulti',
'sectionsByDB' => array(
'wikidb1' => 'DEFAULT', // Veronderstelt dat database-naam voor de eerste wiki wikidb1 is
'wikidb2' => 'DEFAULT', // en zo verder.
'wikidb3' => 'DEFAULT',
),
'sectionLoads' => array(
'DEFAULT' => array(
'localhost' => 0, // Alles in sectie DEFAULT, die één primaire heeft, bij localhost.
),
),
'serverTemplate' => array(
'dbname' => $wgDBname,
'user' => $wgDBuser,
'password' => $wgDBpassword,
'type' => 'mysql',
'flags' => DBO_DEFAULT,
'max lag' => 30,
),
);
3 wiki's die verschillende hosts gebruiken als db en één slavedatabase
Laten we zeggen dat uw wiki wat gegroeid is. Laten we zeggen dat u uw db-server wilt scheiden van uw webserver. En u heeft een replica server waarvoor u replicatie heeft opgezet. En u zet nu wikidb3 op een andere server.
Stel dat we wikidb1 en wikidb2 een hoofdserver (db1) en een slave replica (db2) delen. Wikidb3 heeft zijn eigen db-server db3 (en geen slave). U zou iets doen als:
$wgDBuser = 'your db username'; //moet hetzelfde zijn voor alle 3 wiki's in deze vereenvoudigde configuratie
$wgDBpassword = 'pass'; // Hetzelfde wachtwoord moet voor alle 3 wiki's gebruikt kunnen worden
$wgLBFactoryConf = array(
'class' => 'LBFactoryMulti',
'sectionsByDB' => array(
'wikidb1' => 'DEFAULT', // Veronderstelt dat de database-naam voor de eerste wiki wikidb1 is
'wikidb2' => 'DEFAULT', // en zo verder.
'wikidb3' => 's1',
),
'sectionLoads' => array(
'DEFAULT' => array(
'db1' => 0,
'db2' => 50, /* De 50 is het gewicht (van replica servers). Het zou ertoe doen als u er meerdere hebt */
),
's1' => array(
'db3' => 0
),
),
'serverTemplate' => array(
'dbname' => $wgDBname,
'user' => $wgDBuser,
'password' => $wgDBpassword,
'type' => 'mysql',
'flags' => DBO_DEFAULT,
'max lag' => 30,
),
);
Wikimedia-configuratie
Om te zien hoe Wikimedia $wgLBFactoryConf
gebruikt om haar wiki's te configureren, zie:
Veel van de gegevens in dit bestand is verplaatst naar een etcd (key-value) store. Voor een ouder voorbeeldː db-eqiad.php uit 2019.
Wikimedia configuratie gebruikt ook $wgCdnReboundPurgeDelay .