Outils pour utilisateurs

Outils du site


braveo:docinstallcluster
no way to compare when less than two revisions

Différences

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


braveo:docinstallcluster [2022/09/04 21:02] (Version actuelle) – créée - modification externe 127.0.0.1
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 : 2022/09/04 21:02 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki