La haute disponibilité logicielle via Heartbeat
Une adresse IP virtuelle unique pour les gouverner tous
La haute disponibilité sous-entend que plusieurs machines seront utilisées pour répondre à un même service.
Seulement, chaque machine a normalement une adresse IP différente sur le réseau. Ce qui est problématique.
Imaginons qu'un internaute veuille accéder au site internet de l'entreprise. Il entrera le nom idoine (par exemple
www.the_knights_who_say_ni.uk), qui n'est associé qu'à une seule adresse IP, obtenue par interrogation d'un
serveur DNS (pour plus de détails à ce sujet, consulter l'article Wikipedia sur les DNS).
Si la machine correspondante tombe en panne, le site n'est plus accessible. Or donc, comment faire en sorte que
toutes les machines en haute disponibilité répondent à la même adresse ?
Il faut mettre en place une adresse IP virtuelle, c'est-à-dire une adresse IP qui ne sera pas toujours reliée à
la même machine physique. L'utilisateur ne connaîtra que cette adresse, et sera en fait redirigé vers l'un ou
l'autre des serveurs par un mécanisme réseau.
Il existe au moins deux manières de faire, selon le nombre de machines utilisées.
Si l'on n'utilise que 2 machines (une active et une passive)
Si sur les deux machines en haute disponibilité, une seule d'entre elles fonctionne pour répondre aux requêtes, on peut lui demander de reconnaître 2 adresses IP au lieu d'une : la sienne et l'adresse virtuelle.
Lorsqu'elle tombe en panne, la machine passive prend la main, lance ses services et se met à répondre à son tour
aux requêtes à destination de l'IP virtuelle
Si l'IP virtuelle est diffusée par le gestionnaire
Lorsque plusieurs machines sont nécessaires pour répondre à toutes les requêtes, et donc lorsque deux gestionnaires sont nécessaires, on peut les utiliser pour diffuser l'adresse virtuelle. Ils intercepteront les trames réseaux à destination de cette adresse, et feront en sorte de les renvoyer vers la machine qu'ils auront choisi.
Le gestionnaire dispose de plusieurs méthodes pour rediriger les trames. Voici celles qui sont utilisées par The Linux Virtual Server :
- Routage simple
- Le gestionnaire va se contenter de transférer les paquets venant des clients et à destination de l'IP virtuelle, vers le serveur réel qu'il aura choisit. Cette manipulation se fait sans modification du paquet. L'adresse source étant conservée, le serveur répondra directement au client. C'est la méthode la plus efficace.
- IP Tunneling
- Le gestionnaire va encapsuler un paquet IP (datagramme) venant d'un client dans un autre datagramme, avec une destination différente : celle du serveur qu'il aura choisit. L'avantage de cette méthode est que les paquets peuvent être redirigés vers une adresse d'un autre réseau. Ici encore, la réponse sera envoyée directement au client.
- NAT (Network Address Translation)
- Le gestionnaire va manipuler l'adresse de destination (et éventuellement le port) d'un paquet venant d'un client, pour le rediriger vers le vrai serveur. Il va également modifier l'adresse source du paquet, pour que le serveur lui retourne la réponse. Lorsqu'il la recevra, il refera la manipulation inverse, remettra les sources et destinations données au départ et renverra le tout au client. C'est la méthode la plus souple possible, mais elle a un inconvénient majeur : TOUS les paquets passent par le gestionnaire, qui peut devenir un point d'étranglement.
Voilà. C'en est maintenant terminé de la théorie ! C'est le moment ou jamais de vous faire une
pause-café,
avant de passer à des exemples concrets !