Thứ Ba, 23 tháng 3, 2010

Cluster de Basculement via "Heartbeat" sur CentOS5.4

Objectif :
- Mettre un serveur CentOS 5.4 en Haute Disponibilité via le logiciel "Heartbeat".
Matériels requis :
-2 Serveur identiques en configuration.
-1 Switch

Cluster de Basculement via "Heartbeat" sur CentOS5.4


RAPPEL : Toutes les manipulations, sont a effectuer sur les 2 machines
Il est préférable de faire ceci sur une machine identique et de configuration exactement pareil.
Il est conseillé d'installer le serveur primaire et de faire une image de celui-ci et de la restauré sur le second pc et de ne modifier que l'IP.

Installation :

Lors de l'installation de CentOS indiquer le nom des machines tels que :
-serveur1 pour la machine primaire d'ip : 192.168.10.1
-serveur2 pour la machine secondaire d'ip : 192.168.10.2

Pour effectuer un changement d'adresse IP sur une CentOS il y a 2 solution en mode console.
la première relativement simple, il faut taper "setup" dans la console et une fenêtre comme celle-ci vas s'ouvrir :

La seconde méthode plus classique il faut modifier le fichier "/etc/resolv.conf" pour le DNS :

    "HOSTNAME=192.168.1.254"

Pour les IPs modifier: "/etc/sysconfig/network-script/ifcfg-eth0"

    "DEVICE=eth0 
    BOOTPROTO=static 
    HWADDR=00:11:85:BC:7D:5F (YOUR NIC MAC ADDRESS) 
    IPADDR=111.111.111.111 
    NETMASK=255.255.255.0 
    ONBOOT=yes 
    TYPE=Ethernet
    GATEWAY=111.111.111.111"

Cela permet de modifier l'adresse MAC, de le mettre en DHCP, de changer l'IP, le masque, de la démarrer au démarrage, le type de connexion et la passerelle.

Il faut affecter donc l'IP : 192.168.10.1/24 au PC serveur1 et 192.168.10.2/24 au serveur2.

RAPPEL : les modifications d'effectue via la commande "nano" ou "vi"

Ne pas créer de compte utilisateur et désactiver le pare-feu et SE linux lors de l'installation.

Toutes les actions sont a effectuer sur les 2 machines.
On peut directement modifier le fichier de configuration du serveur1 vers le serveur2 via la commande :

    "scp /etc/httpd/conf/httpd.conf root@node02:/etc/httpd/conf/"

Dans cet exemple le fichier "httpd.conf" du server1 sera envoyé au "serveur2" en se connectant en root sur la machine.
L'installation de "heartbeat" doit se faire directement sur la machine pour les 2 serveurs.
Commencer donc par installer Heartbeat via la commande :
    "yum install heartbeat"

Suite à un Bug en installant le paquet et les dépendances effectuer la commande 2 fois.

A présent on va déplacer les 3 fichiers de configuration de "heartbeat" dans le fichier "/etc/ha.d/"
Les 3 fichiers se trouve dans la Doc fournis pas "heartbeat" on va donc les copier dans le dossier de "heartbeat" via les commandes :

   "cp /usr/share/doc/heartbeat-2.1.2/authkeys /etc/ha.d/
    cp /usr/share/doc/heartbeat-2.1.2/ha.cf /etc/ha.d/
    cp /usr/share/doc/heartbeat-2.1.2/haresources /etc/ha.d/"
 Ces commande vont donc copier les fichier de configuration dans le dossier de "heartbeat"

On peut commencer à configurer c'est fichier, pour une meilleure visibilité on peut supprimer tous le contenu de ces fichiers.

Je commence avec le fichier "ha.cf"
Je me place dans le dossier "/etc/ha.d/"

    "cd /etc/ha.d/"

Puis :

    "nano /etc/ha.cf"

Ce fichier contient la configuration de "heartbeat"

Voici ma configuration détaillée :

    "bcast  eth0      #Ceci est l'interface réseaux utilisé pour faire le "lien de vie". Elle sera utilisée pour envoyer du serveur1 au 2 un signal pour indiquer que le serveur fonctionne.
                                #On peut donc dédier une carte spécifique mais dans notre exemple se sera la carte eth0

    baud  19200      #Cette option n'est utilise que si vous souhaité effectuer le "lien de vie" via un port série, cette option définit la vitesse en bauds du port série.
    
    serial  /dev/ttyS0    #Ceci est le chemin du port du série utilisé.
                                        #Je ne rentre pas dans les détails car c'est un moyen peu utilisé et que nous n'utiliserons pas.
    
    debugfile /var/log/ha-debug    #C'est 3 options permette de spécifier 2 fichier log en cas d'erreur afin de trouver la source du problème et d'avoir un détails précis
    logfile  /var/logha-log                
#en cas de basculement de serveur avec la date et l'heure précise.
    logfacility local0                            #


    keepalive  2                                    #Cet option permet de définir le temps entre 2 envoie de "signe de vie" en seconde par default, mais on peut faire en Ms par ex : "1500ms"

    deadtime   10                                 
#Ceci définit le temps avant de déclarée le serveur1 comme mort, dans notre exemple si aucun signal de vie est envoyer pendant 10s,
                                                              #celle-ci est déclarée comme morte.

    warntime   6                                    
#C'est le délai avant d'inscrire un avertissement dans les logs.   
   initdead   20                                      #C'est le temps que mettra la machine "serveur2" a basculer après que la machine "serveur1" soit déclaré "morte"
                                                               #Soit un Total de 30s sera écoulé si le serveur1 devient HS ou plante etc ...
    


    udport  694                                    #Défini le port UDP qui sera utilisé pour la prise de pouls "694 port par Default recommandé".

    node  serv1                                    
#Définit le nom des 2 machines, pour le vérifier sur vaux machine il faut taper la commande "uname -n".
    node  serv2                                    #

    nice_failback on                             
#Si "ON" cette option sert que après la mort du serveur01 celui-ci renvoie un signal de vie, le serveur2 redonne la main a celui-ci en "Off" le serveur2
                                                              #garde la main malgré le signal de vie du serveur2.

Voilà les détails complets du fichier de configuration à adapter selon vos besoins.

A présent on modifie le fichier "
 haresources"

Ce fichier permet de spécifier quel service doit être démarré.
Notre serveur test, est donc un serveur "Apache2" et "Samba"
Mon fichier va donc avoir la ligne :

    node01 192.168.10.20 smb httpd

Alors voyons plus en détail cette ligne, "node01" spécifie la machine maitre, "192.168.10.20" est l'ip virtuelle utilisé par les clients pour se connecté au Samba et au Apache et "smb et Apache2" sont tous simplement les services à démarrer.
"Smb" pour samba et "httpd" pour Apache2

Le dernier fichier est "authkeys", il permet de définir le protocole de transfert sécurisé ou non sécurisé.

Ce fichier se compose du mot clef "auth" suivi d'une valeur d'index qui va déterminer quelle ligne doit être prise en compte. Dans le cas d'une liaison série ou en câble croisé il n'est pas la peine de s'assurer de l'identité des nodes, mais sinon il est important d'utiliser une méthode d'authentification robuste avec l'utilisation du MD5 (Message Digest version 5) ou SHA (Secure Hash Algorithme).

Nous allons choisir SHA1 encore plus sécurisé voilà donc le fichier :

auth 2
2 sha1 test-ha

Le mot de passe pour de cryptage est "test-ha"

Voilà "
 heatbeat" est configurer, mais ce n'est pas finit il faut à présent s'occuper de Samba et Apache.
Je rappelle que les fichiers de configuration de Apache et Samba doivent être les mêmes.

Je définis le port d'écoute d’Apache et Samba sur 192.168.10.20.
Pour cela se rendre dans le fichier "/etc/https/conf/httpd.confet renseigner le port d'écoute via l'option :

    "Listen 192.168.10.20:80"

Attention de ne pas démarrer le service "httpd" ou "smb" c'est "hearbeat" qui le fera.

Faire de même pour samba, modifier le fichier "/etc/samba/smb.conf" et renseigner le port d'écoute comme ceci :

    "interfaces = eth0 192.168.10.20"

A présent vérifié le statu de samba et apache sur les 2 serveurs via les commandes :

    "/etc/init.d/smb status" et "/etc/init.d/httpd status"

Ils doivent être stoppé, s'ils sont démarres faite "stop" à la place de "status

A présent démarré "heartbeat" sur les 2 serveurs via la commande :

    "/etc/init.d/heartbeat start"

Vérifier que les services "smb" et "httpd" sont bien en exécution sur le serveur1 et arrêter sur le serveur2
Essayer d'effectuer un basculement en déconnectant le câble réseau du serveur1
Patienté 30s et actualisé samba ou apache et si vous avez bien travaillé il fonctionnera.
En cas de soucis allez voir les Logs.

Et voilà, si j'ai oublié des trucs merci de me le dire !

Blog: https://toannhan.com

Không có nhận xét nào:

Đăng nhận xét