Création d'un Load Balancing entre deux loadbalancer.

1. Avant-propos
1.1. Présentation
1.2. Introduction
2. Installation du serveur HeartBeat
2.1. Installation des binaires du HeartBeat
2.2. Configuration du HeartBeat
2.2.1 Fichier ha.cf
2.2.2 Fichier hosts
2.2.3 Fichier haresources
2.2.4 Fichier authkeys
2.3. Activation du HeartBeat
2.3.1 Désactiver HaProxy au démarrage
2.3.2 Arrêt du HaProxy
2.3.3 Démarrage du HeartBeat
3. Test du serveur HeartBeat
3.1. Visualisation des IP
3.2. Visualisation fonctionnelle
3.3. Test fonctionnel

1. Avant-propos


1.1 - Présentation.




+------------------------------+                                               +--------------------------------------+ 
| Client Ping                  |                                               | Serveur HaProxy                      | 
| Hostname : windaube          |                                               | Version : 1.5.2                      | 
| Os : Windows 7               |                                               | Hostname : Arecibo                   | 
|                              |                                               |                                      | 
| IP : 10.25.85.125            |                                               | IP : 10.25.85.56                     | 
|                              |                                               |                                      | 
| +--------------------------+ |         Ping vers 10.25.85.55                 | +---------------------------------+  | 
| | Va vers l'IP du HeartBeat|-|-----------------------------------------------|-|---> Proxy                       |  | 
| +--------------------------+ |                                               | |                                 |  |
|                              |                                               | |  Load Balancing                 |  |
|                              |                                               | |  PRIMAIRE                       |  |
|                              |                                               | |                                 |  |
|                              |                                               | +---------------------------------+  | 
+------------------------------+                                               +--------------------------------------+ 
                                                                                                     A
                                                                                                     |
                                                                                                     |
                                                                                             +----------------+ 
                                                                                             | HeartBeat      |
                                                                                             | IP Flottante   |
                                                                                             |                |
                                                                                             | 10.25.85.55    |
                                                                                             |                |
                                                                                             +----------------+
                                                                                                     |
                                                                                                     |
                                                                                                     V
                                                                                +--------------------------------------+ 
                                                                                | Serveur HaProxy                      | 
                                                                                | Version : 1.5.2                      | 
                                                                                | Hostname : Venus                     | 
                                                                                |                                      | 
                                                                                | IP : 10.25.85.57                     | 
                                                                                |                                      | 
                                                                                | +---------------------------------+  | 
                                                                                | |  Proxy                          |  | 
                                                                                | |                                 |  |
                                                                                | |  Load Balancing                 |  |
                                                                                | |  SECONDAIRE (backup)            |  |
                                                                                | |                                 |  |
                                                                                | +---------------------------------+  | 
                                                                                +--------------------------------------+ 


1.2 - Introduction


Nous allons réaliser l'installation d'un cluster HeartBeat sur deux serveurs en mode actif/passif avec une adresse ip flottante.

2. Installation du serveur HeartBeat


Pour installer les binaires du serveur HeartBeat, nous allons utiliser les binaires déjà présent sur notre repository.
Toutes les actions d'écrite dans ce chapitre on lieu sur le serveur arecibo.
Il faudra répèter les mêmes actions sur le serveur Venus en modifiant dans la configuration l'adresse ip et les ports.

2.1 - Installation des binaires du HeartBeat


Pour installer les binaires du serveur HeartBeat, lancer la commande suivante :
[root@arecibo] # yum install heartbeat
Cependant, il est tout à fait possible de télécharger le fichier rpm adéquat (heartbeat.x86_64 0:3.0.4-2.el6.rpm).
[root@arecibo] # rpm -i heartbeat.x86_64 0:3.0.4-2.el6.rpm
Ou bien, passer via Internet avec la commande "apt-get".
[root@arecibo] # apt-get install heartbeat
-(mer. janv. 06 14:56:23)--(PROD arecibo:/etc/haproxy)-
[root] # yum install heartbeat
Loaded plugins: fastestmirror
Determining fastest mirrors
addons-socle-2012-2.31-jboss430-x86_64                                                                          | 2.5 kB     00:00     
errata-socle-2012-2.31-jboss430-x86_64                                                                          | 2.5 kB     00:00     
nua                                                                                                             | 2.9 kB     00:00     
socle-2012-2.31-jboss430-x86_64                                                                                 | 1.9 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package heartbeat.x86_64 0:3.0.4-2.el6 will be installed
--> Processing Dependency: resource-agents for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: cluster-glue-libs for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: PyXML for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: cluster-glue for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: libplumb.so.2()(64bit) for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: libltdl.so.7()(64bit) for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: libapphb.so.2()(64bit) for package: heartbeat-3.0.4-2.el6.x86_64
--> Processing Dependency: libhbclient.so.1()(64bit) for package: heartbeat-3.0.4-2.el6.x86_64
--> Running transaction check
---> Package PyXML.x86_64 0:0.8.4-19.el6 will be installed
---> Package cluster-glue.x86_64 0:1.0.5-6.el6 will be installed
---> Package cluster-glue-libs.x86_64 0:1.0.5-6.el6 will be installed
---> Package heartbeat-libs.x86_64 0:3.0.4-2.el6 will be installed
---> Package libtool-ltdl.x86_64 0:2.2.6-15.5.el6 will be installed
---> Package resource-agents.x86_64 0:3.9.2-40.el6_5.7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================================================
 Package                        Arch                Version                         Repository                                    Size
=======================================================================================================================================
Installing:
 heartbeat                      x86_64              3.0.4-2.el6                     socle-2012-2.31-jboss430-x86_64              161 k
Installing for dependencies:
 PyXML                          x86_64              0.8.4-19.el6                    socle-2012-2.31-jboss430-x86_64              892 k
 cluster-glue                   x86_64              1.0.5-6.el6                     socle-2012-2.31-jboss430-x86_64               71 k
 cluster-glue-libs              x86_64              1.0.5-6.el6                     socle-2012-2.31-jboss430-x86_64              116 k
 heartbeat-libs                 x86_64              3.0.4-2.el6                     socle-2012-2.31-jboss430-x86_64              263 k
 libtool-ltdl                   x86_64              2.2.6-15.5.el6                  socle-2012-2.31-jboss430-x86_64               44 k
 resource-agents                x86_64              3.9.2-40.el6_5.7                socle-2012-2.31-jboss430-x86_64              324 k

Transaction Summary
=======================================================================================================================================
Install       7 Package(s)

Total download size: 1.8 M
Installed size: 6.5 M
Is this ok [y/N]: y
Downloading Packages:
(1/7): PyXML-0.8.4-19.el6.x86_64.rpm                                                                            | 892 kB     00:00     
(2/7): cluster-glue-1.0.5-6.el6.x86_64.rpm                                                                      |  71 kB     00:00     
(3/7): cluster-glue-libs-1.0.5-6.el6.x86_64.rpm                                                                 | 116 kB     00:00     
(4/7): heartbeat-3.0.4-2.el6.x86_64.rpm                                                                         | 161 kB     00:00     
(5/7): heartbeat-libs-3.0.4-2.el6.x86_64.rpm                                                                    | 263 kB     00:00     
(6/7): libtool-ltdl-2.2.6-15.5.el6.x86_64.rpm                                                                   |  44 kB     00:00     
(7/7): resource-agents-3.9.2-40.el6_5.7.x86_64.rpm                                                              | 324 kB     00:00     
---------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                   17 MB/s | 1.8 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : libtool-ltdl-2.2.6-15.5.el6.x86_64                                                                                  1/7 
  Installing : cluster-glue-libs-1.0.5-6.el6.x86_64                                                                                2/7 
  Installing : cluster-glue-1.0.5-6.el6.x86_64                                                                                     3/7 
  Installing : resource-agents-3.9.2-40.el6_5.7.x86_64                                                                             4/7 
  Installing : PyXML-0.8.4-19.el6.x86_64                                                                                           5/7 
  Installing : heartbeat-libs-3.0.4-2.el6.x86_64                                                                                   6/7 
  Installing : heartbeat-3.0.4-2.el6.x86_64                                                                                        7/7 
  Verifying  : cluster-glue-libs-1.0.5-6.el6.x86_64                                                                                1/7 
  Verifying  : PyXML-0.8.4-19.el6.x86_64                                                                                           2/7 
  Verifying  : cluster-glue-1.0.5-6.el6.x86_64                                                                                     3/7 
  Verifying  : heartbeat-libs-3.0.4-2.el6.x86_64                                                                                   4/7 
  Verifying  : heartbeat-3.0.4-2.el6.x86_64                                                                                        5/7 
  Verifying  : resource-agents-3.9.2-40.el6_5.7.x86_64                                                                             6/7 
  Verifying  : libtool-ltdl-2.2.6-15.5.el6.x86_64                                                                                  7/7 

Installed:
  heartbeat.x86_64 0:3.0.4-2.el6                                                                                                       

Dependency Installed:
  PyXML.x86_64 0:0.8.4-19.el6               cluster-glue.x86_64 0:1.0.5-6.el6          cluster-glue-libs.x86_64 0:1.0.5-6.el6         
  heartbeat-libs.x86_64 0:3.0.4-2.el6       libtool-ltdl.x86_64 0:2.2.6-15.5.el6       resource-agents.x86_64 0:3.9.2-40.el6_5.7      

Complete!
-(mer. janv. 06 15:25:46)--(PROD arecibo:/etc/haproxy)-
[root] # 




2.2 - Configuration du HeartBeat


Afin de configurer le serveur HeartBeat allez dans le répertoire où se trouve les fichiers de configuration "/etc/ha.d/".
[root@arecibo] # cd /etc/ha.d/
Une fois HeartBeat installé nous allons devoir créer trois fichiers dans le dossier /etc/ha.d/.
Profitez-en pour lire la documentation très courte (README.config).
Puis nous allons devoir modifier notre fichier /etc/hosts.
  • ha.cf : Pour la configuration générale de HeartBeat
  • hosts : Pour le rajout des deux serveurs HaProxy
  • haresources : Pour la configuration des ressources
  • authkeys : Pour la clef partagée entre les serveurs du cluster

  • 2.2.1 - Fichier ha.cf


    Voici le contenu du fichier ha.cf :
    mcast eth0 168.1.0.11 694 1 0
     
    warntime 4
    deadtime 5
    initdead 15
    keepalive 2
     
    #Re-balance les services sur le loadbalancer primaire 'HaProxy' quand il revient en ligne
    auto_failback on
     
    #Serveurs du cluster
    node arecibo
    node venus
    

    2.2.2 - Fichier hosts


    Attention! Pour que tout fonctionne bien il faut s'assurer que vous puissiez ping lb2db depuis lb1db et vice-versa.
    Pensez donc à rajouter les deux lignes suivantes sur le fichier /etc/hosts sur vos deux lb:
    ##LBDB
    10.25.85.56   arecibo
    10.25.85.57   venus
    

    2.2.3 - Fichier haresources


    Nous allons maintenant créer le contenu du fichier haresources.
    lb1db IPaddr::10.25.85.55/24/eth0 haproxy
    
    Dans l'exemple ci-dessus le lb1db est le nom de l'interface qui à l'adresse IP flottante.
    lb1db = loadbalancer primaire du cluster
    IPaddr::10.1.0.40/24/eth0 = Adresse IP balancé pour les HaProxy
    haproxy = service que HeartBeat va démarrer

    2.2.4 - Fichier authkeys


    Nous allons maintenant créer le fichier authkeys.
    Ce fichier contient une clef partagée entre les deux serveurs.
    Cela peut être un mot de passe, ou un simple mot.
    auth 3
    3 md5 cluster-db-key
    

    Ce fichier la doit avoir les permissions 600.
    Donc sur les deux serveurs tapez:
    chmod 600 /etc/ha.d/authkeys

    2.3 - Activation du HeartBeat


    2.3.1 - Désactivation du HaProxy au démarrage


    Enfin nous allons désactiver le démarrage automatique de HaProxy sur les deux serveurs:
    [root@arecibo] # insserv -r haproxy
    [root@arecibo] # insserv -r haproxy
    [root@arecibo] # 
    

    2.3.2 - Arrêt du HaProxy


    Finalisation du balancement.
    Sur les deux serveur arrêter HaProxy:
    [root@arecibo] # /etc/init.d/haproxy stop
    Arrêt de haproxy :                                         [  OK  ]
    [root@arecibo] # 
    

    2.3.3 - Démaarage du HeartBeat


    Puis sur arecibo démarrer HeartBeat.
    [root@arecibo] # /etc/init.d/heartbeat start
    Starting High-Availability services: Done.
    [root@arecibo] # 
    

    3. Test du HeartBeat


    3.1 - Visualisation des IP


    Attendez quelques secondes et tapez la commande ifconfig:
    root@arecibo:~# ifconfig
    eth0      Link encap:Ethernet  HWaddr 09:20:28:f2:e5:19
              inet addr:10.25.85.56  Bcast:10.1.0.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fe35:e519/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:2234 errors:0 dropped:0 overruns:0 frame:0
              TX packets:3670 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:292562 (285.7 KiB)  TX bytes:692754 (676.5 KiB)
     
    eth0:0    Link encap:Ethernet  HWaddr 09:20:28:f2:e5:19
              inet addr:10.25.85.55  Bcast:10.1.0.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    

    Vous voyez que l'IP 10.25.85.55 est configurée sur arecibo
    Maintenant, démarrez heartbeat sur venus.

    3.2 - Visualisation fonctionnelle


    Le balancement entre les deux serveurs est maintenant pleinement fonctionnel.

    Vous pouvez maintenant visualiser depuis l'IP de balancement web les statisques de HaProxy http://168.1.0.11:8080/stats.
    Pour que cela fonctionne, il faut que au moins un des serveurs LB configurés pour le balancement Web soit actif.

    3.3 - Test fonctionnelle


    Pour tester le balancement, il vous suffit d'arrêter HeartBeat sur arecibo (ou le serveur lui même) avec la commande:
    [root@arecibo] # /etc/init.d/heartbeat stop
    [root@arecibo] # /etc/init.d/heartbeat stop
    Stopping High-Availability services: Done.
    [root@arecibo] # 
    

    Patientez quelques secondes et faites un ifconfig sur venus et vous verrez que l'IP balancée est maintenant sur ce serveur.
    Relancer HeartBeat sur arecibo afin de remettre l'IP sur celui-ci.