Jump to content

Manuel:$wgLBFactoryConf

From mediawiki.org
This page is a translated version of the page Manual:$wgLBFactoryConf and the translation is 100% complete.
Paramètre du partage de charge: $wgLBFactoryConf
Configuration pour le service ILBFactory
Introduit dans la version :1.13.0 (r32578)
Retiré dans la version :Encore utilisé
Valeurs autorisées :(tableau)
Valeur par défaut :(voir ci-dessous)

Détails

Pour mettre en place une ferme de wikis multi-maîtres, initialisez la classe ici à quelque chose qui peut renvoyer un Wikimedia\Rdbms\LBFactory avec un maître approprié, sur l'appel de getMainLB(). La classe identifiée ici est responsable de lire $wgDBservers , $wgDBserver , etc., donc l'écraser peut faire que ces variables globales sont ignorées.

La classe Wikimedia\Rdbms\LBFactoryMulti est fournie dans ce but; la configuration pour cette classe est fournie ci-dessous :

Avertissement Avertissement : Si vous utilisez cette classe, tous les paramètres précédents comme $wgDBservers , $wgExternalServers , ... seront ignorés.
sectionsByDB
Une table correspondance des noms de bases de données et des noms de sections
sectionLoads
Une table de correspondance à deux dimensions. Pour chaque section, elle donne la liste des noms des serveurs et les ratios de charge associés. Par exemple: array( 'section1' => array( 'db1' => 100, 'db2' => 100 ) )
serverTemplate
Un tableau associatif d'informations de serveur, comme documenté pour $wgDBservers. L'hôte, le hostName et les entrées de charge seront écrasées.
groupLoadsBySection
Une table de correspondance à trois dimensions donnant les ratios de charge des serveurs pour chaque section et groupe. Par exemple: array( 'section1' => array( 'group1' => array( 'db1' => 100, 'db2' => 100 ) ) )
groupLoadsByDB
Une table de correspondance à trois dimensions donnant les ratios de charge des serveurs par nom de base de données.
hostsByName
Une table de noms d'hôtes vers les adresses IP associées.
externalLoads
Une carte des noms de grappe de stockage externe vers la carte de charge du serveur.
externalTemplate
Une structure d'information du serveur utilisée pour les serveurs de stockage externe
templateOverridesByServer
Une table de correspondance à deux dimensions écrasant mainTemplate ou externalTemplate sur une base serveur par serveur.
templateOverridesByCluster
Une carte 2D écrasant externalTemplate par grappe
masterTemplateOverrides
Un tableau d'annulation pour mainTemplate et externalTemplate pour tous les serveurs maître.

Valeurs par défaut

Version de MediaWiki :
1.39
$wgLBFactoryConf = [
	'class' => 'Wikimedia\\Rdbms\\LBFactorySimple',
];
Versions de MediaWiki :
1.31 – 1.38
$wgLBFactoryConf = [ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ];
Versions de MediaWiki :
1.23 – 1.30
$wgLBFactoryConf = [ 'class' => 'LBFactorySimple' ];
Versions de MediaWiki :
1.13 – 1.22
$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );

Exemples simples

3 wikis utilisant tous Localhost comme serveur de base de données

Voici comment une configuration simple devrait fonctionner, dans laquelle vous avez trois wikis (wikidb1, wikidb2 et wikidb3), qui utilisent tous le même serveur de base de données (mais avec des noms de base différents), et qui ont tous un seul serveur maître qui est le même que votre serveur web (c'est à dire Localhost)

$wgDBuser = 'your db username'; //doit être identique pour les 3 wikis dans  cette configuration simplifiée
$wgDBpassword = 'pass'; // Le même ''pass'' doit être utilisable pour les 3 wikis
$wgLBFactoryConf = array(
    'class' => 'LBFactoryMulti',

    'sectionsByDB' => array(
        'wikidb1' => 'DEFAULT', // suppose que le nom de la base de données du premier wiki est wikidb1
        'wikidb2' => 'DEFAULT', // et ainsi de suite.
        'wikidb3' => 'DEFAULT',
    ),

    'sectionLoads' => array(
        'DEFAULT' => array(
            'localhost'  => 0, // tout sur la section DEFAULT, qui a un seul primaire, sur localhost.
        ),
    ),

    'serverTemplate' => array(
        'dbname'      => $wgDBname,
        'user'          => $wgDBuser,
        'password'      => $wgDBpassword,
        'type'          => 'mysql',
        'flags'          => DBO_DEFAULT,
        'max lag'      => 30,
    ),
);

3 wikis utilisant des hôtes différents comme base de données avec une base de données esclave

Disons que votre wik a grossi un peu. Choisissons de séparer maintenant le serveur de base de données du serveur web. Et vous avez un serveur esclave sur lequel vous avez déclaré la réplication. Et maintenant vous mettez wikidb3 sur un serveur complètement séparé.

Donc maintenant disons que nous avons wikidb1 et wikidb2 qui se partagent un serveur maître (db1) et un esclave répliqué (db2). Wikidb3 a sons propre serveur de base de données db3 (et pas d'esclave). Vous auriez quelque chose comme ceci :

$wgDBuser = 'your db username'; //doit être identique pour les 3 wikis dans  cette configuration simplifiée
$wgDBpassword = 'pass'; // Le même ''pass'' doit être utilisable pour les 3 wikis
$wgLBFactoryConf = array(
    'class' => 'LBFactoryMulti',

    'sectionsByDB' => array(
        'wikidb1' => 'DEFAULT', // Suppose que le nom de la base de données du premier wiki est wikidb1
        'wikidb2' => 'DEFAULT', // ainsi de suite.
        'wikidb3' => 's1',
    ),

    'sectionLoads' => array(
        'DEFAULT' => array(
            'db1'  => 0,
            'db2'  => 50, /* 50 est le poids (des serveurs de réplication). C'est important si vous en avez plusieurs */
        ),
        's1' => array(
            'db3' => 0
        ),
    ),

    'serverTemplate' => array(
        'dbname'      => $wgDBname,
        'user'          => $wgDBuser,
        'password'      => $wgDBpassword,
        'type'          => 'mysql',
        'flags'          => DBO_DEFAULT,
        'max lag'      => 30,
    ),
);

Configuration de Wikimedia

Pour voir comment Wikimedia utilise $wgLBFactoryConf pour configurer ses wikis, voyez:

Une grande partie des informations de ce fichier a été enregistrée dans un dépôt etcd (clé - valeur). Pour un exemple plus ancien, voir db-eqiad.php de 2019.

La configuration de Wikimedia utilise aussi $wgCdnReboundPurgeDelay .