Jump to content

Manual:$wgLBFactoryConf

From mediawiki.org
This page is a translated version of the page Manual:$wgLBFactoryConf and the translation is 100% complete.
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.)

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:

Waarschuwing Waarschuwing: Als u deze klasse gebruikt, zullen alle eerdere instellingen zoals $wgDBservers , $wgExternalServers , ... genegeerd worden.
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 .