Open main menu

Manuel:$wgLBFactoryConf

This page is a translated version of the page Manual:$wgLBFactoryConf and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎中文 • ‎日本語
Paramètre du partage de charge: $wgLBFactoryConf
Configuration usine de l'équilibrage de charge.
Introduit dans la version :1.13.0 (r32578)
Retiré dans la version :Encore utilisé
Valeurs autorisées :(tableau)
Valeur par défaut :[ 'class' => \Wikimedia\Rdbms\LBFactorySimple::class ] (1.31-)
[ 'class' => 'LBFactorySimple' ] (1.13-1.30)

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 : 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.

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'; //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 master, at 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'; //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 slave 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,
),
);

Configuration de Wikimedia

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

La configuration de Wikimedia utilise aussi $wgCdnReboundPurgeDelay .