Outils pour utilisateurs

Outils du site


braveo:docinstallcluster

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

braveo:docinstallcluster [2016/07/19 15:36] (Version actuelle)
Ligne 1: Ligne 1:
 +
 +===== Installation d'un cluster ejabberd =====
 +Source : http://​wblitz.free.fr/​contrib/​ejabberd/​cluster_ejabberd.html
 +===== Présentation =====
 + 
 +Son architecture lui permet de fonctionner sur un cluster de machines avec la possibilité d'​ajouter ou de supprimer des noeuds sans arrêter le service.
 +Le cluster comportera 2 noeuds :
 +
 + ​**ejabberd@jabber** (noeud primaire) et **ejabberd@jabber2** (noeud secondaire)
 +
 +
 +
 +=====  Installation du premier noeud =====
 +L'​installation ​ est expliquée ​ ici : http://​mdl29.net/​doku.php?​id=braveo:​docinstallejabberd ​
 +
 +Pour que les noeuds soient pris en compte, nous devons modifier le script d'init du server ejabberd.
 +
 +Editons le fichier /​etc/​init.d/​ejabberd
 +
 +<​code>​
 +start()
 +{
 +    mkrundir
 +
 +    cd /​var/​lib/​ejabberd
 +#  su $EJABBERDUSER -c "​$EJABBERD -noshell -detached"​
 +su $EJABBERDUSER -c "​$EJABBERD -noshell -detached extra_db_nodes \"​['​ejabberd@jabber',​ '​ejabberd@jabber2'​]\""​
 +...
 +}
 +
 +</​code>​
 +où **jabber**, **jabber2** sont les noeuds de notre cluster. ​
 +
 +On redémarre le serveur :
 +  /​etc/​init.d/​ejabberd start
 +
 +
 +
 +
 +=====  Installation sur le second noeud =====
 +
 +
 +Pour que notre serveur fonctionne correctement,​ il est important de bien configurer
 +le serveur dns (bind).
 +<​code>​
 +
 +jabber2 IN A 92.xxx.xxx.xxx ​    # ip publique
 +_jabber._tcp.mdl29.net. IN SRV  ​       0 0 5269   ​jabber2
 +_jabber._tcp IN SRV 5 0 5269   ​jabber2 ​
 +_xmpp-server IN SRV 5 0 5269   ​jabber2
 +_xmpp-client._tcp IN SRV 5 0 5222   ​jabber2
 +</​code>​
 +
 +Une fois cette configuration faite, nous lançons une installation «classqiue» : 
 +  apt-get install ejabberd
 +  ​
 +
 +
 +=====  Configuration =====
 +Avant de faire les manipulations suivantes, il est important de bien stopper
 +les serveurs destinés à faire partie du cluster.
 +
 +La première étape consiste à recopier le cookie du serveur primaire vers le serveur secondaire. **En effet, ce cookie est utilisé par les différents noeuds pour l'​appartenance ou non au cluster**.
 +
 + <​note important>​Le cookie .erlang.cookie ​ se trouve dans le dossier /​var/​lib/​ejabberd</​note>​
 +
 +
 +On récupère le cookie depuis notre serveur primaire :
 +<​code>​
 +scp user@noeud.primaire:​~ejabberd/​.erlang_cookie ~ejabberd
 +sudo chown ejabberd: ~ejabberd/​.erlang_cookie
 +</​code>​
 +
 +Note: ~ejabberd => /​var/​lib/​ejabberd
 +
 +C'​est ​ au tour du fichier de configuration d'​être copié ​ : 
 +<​code>​
 +scp user@noeud.primaire:/​etc/​ejabberd.cfg .
 +sudo mv /​etc/​ejabberd/​ejabberd.cfg{,​.dist}
 +sudo mv ejabberd.cfg /​etc/​ejabberd
 +sudo chown ejabberd: /​etc/​ejabberd/​ejabberd.cfg
 +</​code>​
 +
 +Pensez à faire une sauvegarde de vos fichiers de configuration :-)
 +
 +Une fois ces étapes finies, théoriquement il est conseillé d'​éditer le fichier /​etc/​default/​ejabberd et de modifier la valeur de la variable ERLANG_NODE.
 +ERLANG_NODE=ejabberd@`hostname -s`.
 +Il sert à définir le nom de notre noeud.
 +
 +Mais je laisse par le réglage par défaut qui fonctionne très bien, c'est à dire #​ERLANG_NODE=ejabberd
 +
 +===== Exportation de la base de données du noeud primaire =====
 +
 +La dernière étape concerne la base de données «internes» du noeud primaire. En effet, ejabberd utilise une base de données mnesia pour stocker diverses informations relatives à la dernière activité des utilisateurs,​ aux messages hors ligne, aux historiques des salons, etc... Il convient donc de la rapatrier sur nos second noeud.
 +
 +
 +Nous stoppons le serveur ejabberd :
 +  /​etc/​init.d/​ejabberd stop
 +
 +<​note>​ Assurez-vous que le démon ejabberd est effectivement arrêtez. La commande 'ps -aef | grep ejabberd'​ vous indiquera quels processus doivent éventuellement être tués (utilisez à cet effet 'kill <​pid>'​. </​note> ​
 +**Savegarde de la base courante**
 +
 +Nous allons sauvegarder la base courante dans un répertoire save.
 +<​code>​
 +sudo mkdir /​var/​lib/​ejabberd/​save
 +sudo mv /​var/​lib/​ejabberd/​* /​var/​lib/​ejabberd/​save
 +</​code>​
 +
 +Un petit message d'​erreur va apparaître,​ normal on essaie de le déplacer dans lui même. Maintenant on doit se trouver avec un dossier /​var/​lib/​ejabberd qui contient juste un dossier save.
 +
 +**Recopions la base de données depuis le serveur primaire**
 +<​code>​
 +mkdir /​tmp/​ejabberd
 +cd /​tmp/​ejabberd
 +scp user@noeud.primaire:/​var/​lib/​ejabberd/​* .
 +sudo cp * /​var/​lib/​ejabberd/​
 +sudo chown ejabberd: /​var/​lib/​ejabberd/​*
 +</​code>​
 +
 +
 +Une fois la base recopiée, il nous faut modifier le fichier /​etc/​init.d/​ejabberd.
 +
 +
 +Editons enfin le script d'init de manière à modifier la commande lancée lors de l'​appel de la fonction start : 
 +
 +<​code>​
 +start()
 +{
 +    mkrundir
 +
 +    cd /​var/​lib/​ejabberd
 +#    su $EJABBERDUSER -c "​$EJABBERD -noshell -detached"​
 +su $EJABBERDUSER -c "​$EJABBERD -noshell -detached extra_db_nodes \"​['​ejabberd@jabber',​ '​ejabberd@jabber2'​]\""​
 +...
 +}
 +
 +</​code>​
 +
 +où **jabber**, **jabber2** sont les noeuds de notre cluster. ​
 +
 +===== Vérification =====
 +Nous allons faire un tour dans l'​interface web et vérifier si nos noeuds sont bien actifs.
 +
 +{{ :​braveo:​plateforme:​cluster_jabber.png?​nolink&​660 |}}
 +
 +
 +Et voilà, nos 2 noeuds sont bien actifs :-P
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
  
braveo/docinstallcluster.txt · Dernière modification: 2016/07/19 15:36 (modification externe)