La haute disponibilité via Heartbeat, concepts et exemples pratiques Jérémie LEGRAND Université de Marne La Vallée Informatique et Réseaux 3ème année La haute disponibilité via Heartbeat, concepts et exemples pratiques Exposé Système, Année 2006-2007
Ce que l’on va voir… Généralités sur la haute disponibilité Concepts à maîtriser Exemples d’applications Heartbeat par la pratique IR3 2006-2007 - Système - Jérémie Legrand
Principes généraux « You'd better pump even if nothing happens than risking something worse happens if you do not pump.» (The Shadoks) IR3 2006-2007 - Système - Jérémie Legrand
La haute disponibilité, c’est quoi « On appelle « haute disponibilité »toutes les dispositions visant à garantir la disponibilité d'un service et son bon fonctionnement 24H/24. » (www.commentcamarche.net) IR3 2006-2007 - Système - Jérémie Legrand
Pourquoi faire ? Un grand nombre d’entreprises proposent des services à leurs salariés, clients, etc. Ces services peuvent pénaliser l’entreprise en cas de défaillances (commandes en ligne par exemple) Employés au chômage technique Clients mécontents passant à la concurrence … Manque à gagner pour l’entreprise (1/250ème des bénéfices par jour d’arrêt) Votre directeur financier et votre responsable hiérarchique seront TRES mécontents de vous… Une nouvelle offre d’emploi sortira bientôt dans les journaux spécialisés IR3 2006-2007 - Système - Jérémie Legrand
Comment peut-on agir ? Le terme « Haute disponibilité » couvre un grand nombre de domaines : Manipulations des serveurs « à chaud » : Reconfiguration des services Sauvegarde des données, … Redondance du matériel Répartition dynamique des données (RAID, etc.) Stockage des données à un emplacement physique différent Plan de secours Fonctionnement en mode dégradé (fournir un service jugé indispensable sans ses ressources habituelles humaines ou matérielles) … IR3 2006-2007 - Système - Jérémie Legrand
Domaine de définition de cet exposé Un seul point étudié ici : la détection automatique d'une défaillance d'un serveur, et la reprise du service qu'il offrait par d'autres machines. Réalisé par le programme Heartbeat, faisant partie de la suite « The Linux Virtual Server » (LVS) Question importante : ai-je besoin d’une seule machine active pour répondre à tous les clients, ou de plusieurs simultanément ? IR3 2006-2007 - Système - Jérémie Legrand
« Avant de détruire quelqu'un, l'ordinateur le rend fou. » Concepts à maîtriser « Avant de détruire quelqu'un, l'ordinateur le rend fou. » (Anonyme) IR3 2006-2007 - Système - Jérémie Legrand
Si une seule machine suffit (1) Une machine active, qui répond aux clients Une machine configurée à l’identique : service arrêtés surveillant la première en permanence Lorsqu’elle détecte une panne : elle lance ses services elle répond aux clients à la place de l’autre Si la première est réparée : Soit elle se met à son tour en écoute Soit elle demande à reprendre la main IR3 2006-2007 - Système - Jérémie Legrand
Si une seule machine suffit (2) Une méthode de surveillance : la tachycardie (heartbeat) IR3 2006-2007 - Système - Jérémie Legrand
S’il faut plusieurs machines (1) Plusieurs serveurs proposant le même service Pouvoir rediriger les requêtes des clients de manière équitable sur tous les serveurs 1ère approche : ‘Round Robin DNS’ IR3 2006-2007 - Système - Jérémie Legrand
S’il faut plusieurs machines (2) On peut faire mieux : le répartiteur de charge En Anglais : « load balancer » Prendre en compte de la puissance des machines, le nombre d’utilisateurs déjà connectés, etc. IR3 2006-2007 - Système - Jérémie Legrand
Algorithmes de load balancing Pléthore d’algorithmes. Ceux utilisés par « The Linux Virtual Server » (LVS) : Least-Connection Weighted Least Connection Round-Robin Weighted Round-Robin Locality-Based Least-Connection Destination-Hashing Source-Hashing Short Expected Delay Never Queue (Caféine inside) IR3 2006-2007 - Système - Jérémie Legrand
Cela fonctionne mais… Gestionnaire unique = point de faiblesse requêtes ? Client Gestionnaire Machines proposant le même service requêtes répartition de charge Gestionnaires (en haute disponibilité) Client Au final : Machines proposant le même service IR3 2006-2007 - Système - Jérémie Legrand
Comment le gestionnaire redirige les clients ? Machine active / machine passive IP normale IP virtuelle requête Client Machine active IP virtuelle = xxx Haute disponibilité Services Client Plusieurs machines actives Routage Simple Encapsulation IP-IP N.A.T. IR3 2006-2007 - Système - Jérémie Legrand
Exemples d’applications « En théorie, il n'y a pas de différences entre la théorie et la pratique. En pratique, il y en a. » (Chuck Reid) IR3 2006-2007 - Système - Jérémie Legrand
Exemple : relais de messagerie Serveur mail n°1 (actif) Serveur mail n°2 (passif) Echanges Haute disponibilité IR3 2006-2007 - Système - Jérémie Legrand
Exemple : serveurs MySQL Echanges Haute disponibilité Serveur SQL n°1 (actif) Serveur SQL n°2 (passif) NFS : Accès aux données de MySQL Serveur de fichiers IR3 2006-2007 - Système - Jérémie Legrand
Exemple : serveurs Web IR3 2006-2007 - Système - Jérémie Legrand Echanges Haute disponibilité Serveur web n°1 (actif) Serveur web n°2 (passif) NFS. Accès aux : - pages web - données du site - fichiers de sessions Serveur de fichiers IR3 2006-2007 - Système - Jérémie Legrand
Plus dur : serveurs de fichiers Serveur NFS Serveur NFS (inactif) lecture écriture DRBD Réplication Partition DRBD lecture écriture écriture Partition Serveur 1 Serveur 2 IR3 2006-2007 - Système - Jérémie Legrand
Heartbeat par la pratique… « The box said: "install on Windows 95, NT 4.0 or better". So I installed it on Linux. » (Anonyme) IR3 2006-2007 - Système - Jérémie Legrand
Sous le capot d’heartbeat (1) Installation (sous Debian) : /etc/heartbeat/ha.cf # apt-get update # apt-get install heartbeat logfacility local0 keepalive 2 deadtime 10 bcast eth0 node ##nom_pc1## ##nom_pc2## auto_failback no respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail uid=hacluster gid=haclient IR3 2006-2007 - Système - Jérémie Legrand
Sous le capot d’heartbeat (2) /etc/heartbeat/authkeys 3 méthodes de protection crc (réseaux sûrs, comme un câble croisé) md5 (bonne alternative de sécurité) sha1 (meilleure sécurité, utilise du temps CPU) Ne pas oublier : auth 3 3 md5 ###mot_de_passe### # chmod 600 /etc/heartbeat/authkeys IR3 2006-2007 - Système - Jérémie Legrand
Sous le capot d’heartbeat (3) /etc/heartbeat/haresources Pleins d’actions différentes possibles. Paramètres d’une option séparés par 4 points : “::” ##nom_pc1## action1 action2 ... actionN IR3 2006-2007 - Système - Jérémie Legrand
Sous le capot d’heartbeat (4) Activer une adresse IP virtuelle : pc1 IPaddr:192.x.x.x/24/eth0 Monter un système de fichiers local : pc1 Filesystem::/dev/sda1::/mnt/scsi::vfat Monter un système de fichiers distant (NFS) pc1 Filesystem::192.x.x.x:/src::/mnt/dest::nfs Monter un système de fichiers distant (NFS) avec des options pc1 Filesystem::192.x.x.x:/src::/mnt/dest::nfs::rsize=8192 IR3 2006-2007 - Système - Jérémie Legrand
Sous le capot d’heartbeat (5) Et enfin : lancer un service : pc1 apache2 Restrictions : Doit être dans /etc/init.d/ (ou /etc/heartbeat/ressource.d/) Doit reconnaître les arguments ‘start’ et ‘stop’ Ne doit PAS être lancé automatiquement au démarrage de Linux : # update-rc.d –f apache2 remove IR3 2006-2007 - Système - Jérémie Legrand
Fin de cet exposé. De plus amples informations sont disponibles sur la partie ‘web’. Explications plus fournies et plus complètes Liens vers des tutoriels complets Astuces non trouvées dans les liens, etc. IR3 2006-2007 - Système - Jérémie Legrand
Références / Annexes IR3 2006-2007 - Système - Jérémie Legrand Heartbeat : http://linux-ha.org/ConfiguringHeartbeat Configurer Heartbeat (Ubuntu) : http://doc.ubuntu-fr.org/serveur/heartbeat The Linux Virtual Server (LVS) : http://www.linuxvirtualserver.org/ Mécanismes de répartition de charges de LVS : http://www.ultramonkey.org/3/lvs.html Mécanismes de redirection IP de LVS : http://www.linuxvirtualserver.org/how.html Cluster Apache : http://www.howtoforge.com/high_availability_loadbalanced_apache_cluster Cluster NFS : http://www.howtoforge.com/high_availability_nfs_drbd_heartbeat Discussions sur la haute disponibilité : http://lea-linux.org/cached/index/Leapro-pro_sys-dispo.html IR3 2006-2007 - Système - Jérémie Legrand