Chapitre 1. Aperçu du serveur virtuel linux
LVS (de l'anglais Linux Virtual Server) est un ensemble de composants logiciels intégrés permettant de répartir la charge IP à travers un ensemble de serveurs réels. LVS s'exécute sur une paire d'ordinateurs ayant la même configuration : un routeur LVS actif et un routeur LVS de sauvegarde. Le routeur LVS actif joue deux rôles :
- Répartition de la charge sur les serveurs réels.
- Vérification de l'intégrité des services sur chaque serveur réel.
Le routeur LVS de sauvegarde surveille le routeur LVS actif et prend le pas sur ce dernier s'il échoue.
Ce chapitre fournit un aperçu des composants et fonctions LVS et comporte les sections suivantes :
1.1. A Basic LVS Configuration
Figure 1.1, « A Basic LVS Configuration » shows a simple LVS configuration consisting of two layers. On the first layer are two LVS routers — one active and one backup. Each of the LVS routers has two network interfaces, one interface on the Internet and one on the private network, enabling them to regulate traffic between the two networks. For this example the active router is using Network Address Translation or NAT to direct traffic from the Internet to a variable number of real servers on the second layer, which in turn provide the necessary services. Therefore, the real servers in this example are connected to a dedicated private network segment and pass all public traffic back and forth through the active LVS router. To the outside world, the servers appears as one entity.
Figure 1.1. A Basic LVS Configuration
Service requests arriving at the LVS routers are addressed to a virtual IP address, or VIP. This is a publicly-routable address the administrator of the site associates with a fully-qualified domain name, such as www.example.com, and is assigned to one or more virtual servers. A virtual server is a service configured to listen on a specific virtual IP. Refer to Section 4.6, « VIRTUAL SERVERS » for more information on configuring a virtual server using the Piranha Configuration Tool. A VIP address migrates from one LVS router to the other during a failover, thus maintaining a presence at that IP address (also known as floating IP addresses).
Les adresses VIP peuvent avoir un alias pour le même périphérique connectant le routeur LVS au réseau public. Par exemple, si eth0 est connecté à Internet, plusieurs serveurs virtuels peuvent être nommés
eth0:1
. De façon alternative, chaque serveur virtuel peut être associé à un périphérique différent par service. Par exemple, le trafic HTTP peut être traité sur eth0:1
et le trafic FTP peut être traité sur eth0:2
.
Only one LVS router is active at a time. The role of the active router is to redirect service requests from virtual IP addresses to the real servers. The redirection is based on one of eight supported load-balancing algorithms described further in Section 1.3, « Aperçu de la programmation LVS ».
Le routeur LVS contrôle dynamiquement la santé globale des services spécifiques sur les serveurs réels à travers de simples scripts send/expect. Pour aider à détecter la santé des services nécessitant des données dynamiques, tels que HTTPS ou SSL, l'administrateur peut également appeler des exécutables externes. Si le service d'un serveur réel ne fonctionne plus correctement, le routeur LVS actif arrête de lui envoyer des travaux jusqu'à ce qu'il fonctionne à nouveau.
Le routeur LVS de sauvegarde joue le rôle de système de secours. Régulièrement, les routeurs LVS échangent des messages "heartbeat" à travers l'interface publique externe primaire et, en cas d'échec, l'interface privée. Si le noeud de sauvegarde ne reçoit pas de message "heartbeat" dans un intervalle défini, il initie un failover et endosse le rôle de routeur LVS actif. Durant le failover, le routeur LVS de sauvegarde récupère les adresses VIP desservies par le routeur ayant échoué en utilisant une technique appelée ARP spoofing — où le routeur LVS de sauvegarde s'annonce lui-même comme destinataire des paquets IP adressés au noeud défaillant. Lorsque le noeud ayant échoué fonctionne à nouveau, le noeud de sauvegarde reprend son rôle de sauvegarde à chaud (hot-backup).
The simple, two-layered configuration used in Figure 1.1, « A Basic LVS Configuration » is best for serving data which does not change very frequently — such as static webpages — because the individual real servers do not automatically sync data between each node.
1.1.1. Réplication et partage de données entre les serveurs réels
Étant donné qu'il n'y a pas de composant intégré dans LVS pour partager les données entre les serveurs réels, l'administrateur a deux options de base :
- Synchroniser les données à travers le pool de serveurs réels.
- Ajouter une troisième couche à la topologie pour l'accès aux données partagées.
La première option est préférable pour les serveurs qui n'autorisent pas un grand nombre d'utilisateurs à télécharger ou changer des données sur les serveurs réels. Si la configuration autorise un grand nombre d'utilisateurs à modifier les données, par exemple un site Web de e-commerce, ajouter une troisième couche est préférable.
1.1.1.1. Configuration des serveurs réels pour synchroniser les données
Il existe de nombreuses façons afin de synchroniser les données à travers le pool de serveurs réels. Des scripts shell peuvent par exemple être utilisés de telle manière que, lorsqu'un ingénieur Web modifie une page, celle-ci est postée simultanément sur tous les serveurs. De plus, l'administrateur système peut également utiliser des programmes comme
rsync
pour répliquer les données modifiées à travers tous les noeuds à un intervalle défini.
Toutefois, ce type de synchronisation de données ne fonctionne pas de façon optimale lorsque la configuration est surchargée par des utilisateurs qui téléchargent fréquemment des fichiers ou émettent constamment des transactions avec la base de données. Pour une configuration avec une charge élevée, la topologie trois tiers est la solution idéale.