haute_disponibilite_avec_2_machines

Haute Disponibilité avec VRRP

Cas simple avec l'utilisation de keepalive seul (protocole VRRP)

2 serveurs: * serverHA1 * serverHA2

Les 2 serveurs peuvent sont reliés entre eux par un reseau ethernet. Pour le test de disponibilité ils peuvent être relié par un cable serie.

Pour ce cas simple de Haute Disponibilité il s'agit juste de faire basculer une adresse IP virtuelle (VIP) entre un serveur Master et un serveur de Backup.

Pour la surveillance applicative on peut utiliser mon ou monit.

Il faut installer le package keepalived:

yum install keepalived

Le fichier à configurer est /etc/keepalived/keepalived.conf

Sur le serveur Master (serverha1):

vrrp_instance test_ha {

      state MASTER
      interface eth0
      virtual_router_id 52
      priority 100
      authentication {
              auth_type PASS
              auth_pass TESTHA
      }
      virtual_ipaddress {
              192.168.200.1/32 dev eth0
      }

}

Sur le serveur Backup (serverha2):

vrrp_instance test_ha {

      state BACKUP 
      interface eth0
      virtual_router_id 52
      priority 50
      authentication {
              auth_type PASS
              auth_pass TESTHA
      }
      virtual_ipaddress {
              192.168.200.1 dev eth0
      }

}

Sur les 2 serveurs, pour eviter de polluer le réseau, ajouter dans /etc/sysctl.conf:

# Répondre aux requêtes ARP sur eth1, uniquement si l’adresse demandée est celle configurée sur cette interface, donc ignore les requêtes avec IP destination correspondant à la VIP net.ipv4.conf.eth0.arp_ignore = 1 # Envois des requêtes ARP sur eth1, uniquement avec l’adresse source IP primaire de l’interface eth1, mais jamais avec la VIP comme adresse IP source. net.ipv4.conf.eth0.arp_announce = 2

Haute Disponibilité et repartition de charge

Utilisation de Keepalive et lvs pour de la haute disponibilité avec repartition de charge.

2 serveurs: * serverHA1 * serverHA2

Les 2 serveurs peuvent sont reliés entre eux par un reseau ethernet. Pour le test de disponibilité ils peuvent être relié par un cable serie.

Le service à rendre hautement disponible est http.

Habituellement pour de la haute disponibilité, on peut utiliser un Load Balancer qui redirige les requetes vers une ferme de serveurs. Le probleme étant que le Load Balancer devient un SPOF. Ici le Load Balancer est integré dans la ferme de serveur à l'aide d'une VIP, et ce service sera deplacer sur une autre machine de la ferme en cas de panne.

Un des deux machines sert de noeud actif qui contiendra un repartiteur de charge basé sur ipvs. Cette machine active dispose de la VIP qui sera utilisée par les clients pour joindre le service. Entre les 2 machines heartbeat surveille que la VIP réponde bien.

L'accès au service http passe par une repartition de charger de type round robin pondéré. Il y a donc repartition de charge.

Si un des services tombe, comme il s'agit de round robin pondéré, ipvs ne pouvant joindre le service il va affecté une valeur faible sur le poid de la route menant au service inaccessible. Ainsi les paquets ne seront plus routés vers le service qui ne repond plus.

Quand le service redemarre, le poid de la route vers se service remonte et est de nouveau utilisé.

Il s'agit du meme cas que la panne du service.

Le noeud actif est celui qui heberge le load balancer à l'instant T. Si heartbeat detecte depuis le noeud secondaire que la VIP n'est plus joignable, il va monter la VIP sur son interface et configurer ipvs pour devenir le load balancer.

IPVS fait parti du projet LVS. Pour s'assurer que le kernel supporte ipvs il suffit de verifier la présence des modules suivants: * up_vs_dh.ko * ip_vs_ftp.ko * ip_vs.ko

Ces modules se trouvent normalement dans /lib/modules/`uname -r`/kernel/net/ipv4/ipvs/

L'utilitaire d'administration d'ipvs s'appelle ipvsadm. Il faut l'installer (yum install ipvsadm).

  • haute_disponibilite_avec_2_machines.txt
  • Dernière modification : 2012/10/30 22:47
  • de 127.0.0.1