Qu’est ce qu’un Cluster au sens Microsoft
Un cluster est un groupe de serveurs indépendants, appelés noeuds, qui exécutent Windows 2000/2003 Server et fonctionnent ensemble comme s’il s’agissait d’un seul système pour garantir que des applications et des ressources stratégiques restent disponibles pour les clients.
Chaque noeud est connecté à un ou plusieurs périphériques de stockage de cluster. Les clusters serveur permettent aux utilisateurs et aux administrateurs d’accéder aux noeuds et de les gérer, non comme des ordinateurs distincts, mais comme un seul système.
Les clusters serveur garantissent une haute disponibilité des applications grâce au basculement des ressources situées sur les serveurs exécutant Windows 2000/2003 Server. Le service de cluster permet le fonctionnement des clusters serveur. Vous pouvez installer le service de cluster à l’aide de l’Assistant Composants de Windows qui fait partie de Configuration de votre serveur Windows .
Le service de cluster à deux nœuds permet la reprise, sur défaut du matériel ou du logiciel, des applications critiques comme les bases de données, les systèmes de gestion de la connaissance, les progiciels de gestion intégrés et les services de fichiers et d’impression.
Une application peut s’exécuter sur un cluster serveur dans les conditions suivantes :
La connexion avec les clients est configurée pour utiliser TCP/IP (ou DCOM, Canaux nommés ou RPC sur TCP/IP).
L’application doit pouvoir spécifier l’emplacement où les données d’application sont stockées.
Les clients qui se connectent aux applications situées sur un cluster serveur doivent être capables d’essayer de se reconnecter en cas de défaillance réseau.
Service Équilibrage de Charge Réseau (Load balancing)
Le service Équilibrage de charge réseau est disponible sur les systèmes d’exploitation Windows 2000 Advanced Server / Windows 2000 Datacenter Server / Windows 2003 Entreprise / Windows 2003 Datacenter Server. Il améliore la disponibilité et l’évolutivité des programmes de serveur Internet tels que ceux utilisés sur les serveurs Web, FTP et autres serveurs stratégiques. Avec un seul ordinateur exécutant Windows 2000/2003, la fiabilité du serveur et l’adaptation des performances sont parfois limités. Toutefois, en combinant dans un cluster les ressources d’au moins deux ordinateurs hôtes exécutant Windows Server, le service Équilibrage de charge réseau peut fournir la fiabilité et les performances attendues pour les serveurs stratégiques.
Chaque hôte exécute une copie séparée des programmes de serveur demandés tels que les programmes des serveurs Web, FTP, Telnet ou de courrier électronique. Pour certains services tels que ceux utilisés sur un serveur Web, une copie du programme s’exécute sur tous les hôtes du cluster, le service Équilibrage de charge réseau se chargeant alors de distribuer la charge de travail entre eux. Pour d’autres services, par exemple de courrier électronique, un seul hôte gère la charge de travail. Dans ce cas, l’Équilibrage de charge réseau achemine le trafic réseau sur l’hôte en question et ne le redirige sur un autre hôte qu’en cas de problème.
L’Équilibrage de charge réseau s’exécute comme un pilote de réseau Windows. Ses opérations sont transparentes pour la pile réseau TCP/IP.
Pour garantir des performances maximales, l’Équilibrage de charge réseau utilise en général une carte réseau pour gérer le trafic de client à cluster et une autre pour acheminer sur le serveur le trafic réseau de nature différente. Cependant, cette seconde carte réseau n’est pas obligatoire.
Certains programmes de serveur accèdent à une base de données mise à jour par les demandes de clients. Lorsque la charge de ces programmes est équilibrée dans le cluster, les mises à jour doivent être correctement synchronisées. Chaque hôte peut utiliser des copies locales et indépendantes d’une base de données, copies qui sont ensuite fusionnées en mode hors connexion, le cas échéant. Une autre possibilité est que les hôtes en cluster partagent l’accès à un serveur de base de données distinct mis en réseau. Une combinaison de ces deux approches peut également être envisagée. Par exemple, des pages Web statiques peuvent être répliquées sur tous les serveurs en cluster afin de garantir un accès rapide et une tolérance de pannes complète. Toutefois, les demandes des bases de données sont alors envoyées à un serveur de base de données classique qui gère les mises à jour de plusieurs serveurs Web.
Certains programmes stratégiques peuvent nécessiter l’utilisation de moteurs de bases de données à haute disponibilité pour garantir la tolérance aux pannes complète pour le service. Les logiciels de bases de données adaptés au fonctionnement en clusters seront de plus en plus déployés pour fournir un accès évolutif et à haute disponibilité aux bases de données, au sein d’un schéma global d’organisation en clusters. Microsoft SQL Server en est un exemple parfait, puisqu’il peut être déployé dans une configuration à deux nœuds à l’aide du service de cluster. Ce service garantit qu’en cas de défaillance d’un nœud, le nœud restant prend le relais de l’ordinateur défaillant, fournissant ainsi un service continu aux clients de Microsoft SQL Server. Cette situation est possible car les deux ordinateurs partagent un sous-système disque commun.
Remarques Il est important de faire la distinction entre les deux solutions de cluster évoquées dans ce document. La première, l’Équilibrage de charge réseau, est d’abord destinée à la distribution du trafic TCP/IP (Transmission Control Protocol/Internet Protocol) entrant. Les ordinateurs participant à cette solution forment un type de cluster. La seconde solution, le service de cluster, vise surtout à fournir un service de basculement d’un ordinateur à un autre. Les ordinateurs participant à cette solution forment un autre type de cluster. Le cluster du service d’Équilibrage de charge réseau exécute plutôt des programmes de serveur Web. Le service de cluster, quant à lui, exécute plutôt des programmes de bases de données (lorsqu’il est utilisé conjointement au service Équilibrage de charge). Si les deux clusters sont associés pour fonctionner de façon complémentaire, l’utilisateur crée un schéma global d’organisation en clusters.
Mode de fonctionnement du service Équilibrage de charge
Le service Équilibrage de charge réseau procure une disponibilité et une évolutivité élevées aux serveurs Web, grâce à l’utilisation d’un cluster d’au moins deux ordinateurs hôtes fonctionnant ensemble. Les clients Internet accèdent au cluster à l’aide d’une adresse IP unique (ou d’un ensemble d’adresses pour un hôte multirésident). Ils ne sont pas capables pas faire la différence entre le cluster et un serveur unique. Les programmes du serveur ne se rendent pas compte qu’ils s’exécutent dans un cluster. Un cluster d’Équilibrage de charge réseau se distingue toutefois radicalement d’un hôte unique exécutant un programme de serveur unique car il fournit un service ininterrompu, même si l’un des hôtes du cluster tombe en panne. Le cluster peut également répondre plus rapidement aux demandes du client qu’un hôte unique (dans le cas de ports à charge équilibrée).
Le service Équilibrage de charge réseau offre une disponibilité élevée en cas de panne ou de mise hors connexion d’un hôte du cluster, en redirigeant le trafic réseau entrant vers les hôtes restés actifs. Les connexions existantes à un hôte hors connexion sont perdues, mais les services Internet restent disponibles. Le plus souvent (avec les serveurs Web, par exemple), les logiciels clients effectuent automatiquement de nouvelles tentatives après des échecs de connexion, de telle sorte que les clients ne connaissent que quelques secondes d’attente avant de recevoir une réponse.
Le service Équilibrage de charge réseau offre des performances modulables en distribuant le trafic réseau entrant sur une ou plusieurs adresses IP virtuelles affectées au cluster. Les hôtes du cluster répondent alors simultanément aux différentes demandes du client, même si plusieurs demandes émanent du même client. Par exemple, un navigateur Web peut obtenir chacune des images multiples d’une page Web unique à partir de différents hôtes d’un cluster. Ceci accélère le traitement et réduit le temps de réponse aux clients.
Sur un sous-réseau simple, le service Équilibrage de charge réseau permet à tous les hôtes du cluster de détecter simultanément le trafic réseau entrant pour l’adresse IP principale du cluster (et pour les adresses IP supplémentaires dans le cas d’hôtes multirésidents). Sur chaque hôte du cluster, le pilote de l’Équilibrage de charge réseau agit comme un filtre entre le pilote de la carte cluster et la pile TCP/IP pour permettre à une partie du trafic réseau entrant d’être reçue par l’hôte.
Le service Équilibrage de charge réseau utilise un algorithme totalement distribué qui mappe de façon statistique les clients entrants sur les hôtes du cluster en fonction de leur adresse IP, de leur port et d’autres informations. Lors de l’examen d’un paquet entrant, tous les hôtes effectuent simultanément ce mappage pour très vite déterminer quel hôte va traiter le paquet. Le mappage reste inchangé tant que le nombre d’hôtes du cluster ne change pas non plus. L’algorithme de filtrage de l’Équilibrage de charge réseau est beaucoup plus efficace pour le traitement des paquets que les programmes centralisés d’équilibrage de charge, qui doivent modifier et retransmettre les paquets. Cette caractéristique permet au service d’Équilibrage de charge réseau de fournir une bande passante mieux utilisée. Lorsque le service Équilibrage de charge réseau est exécuté directement sur les hôtes du cluster, ses performances ne sont pas limitées par une génération spécifique de technologies processeur ou réseau.
Le service Équilibrage de charge réseau contrôle la distribution du trafic TCP et UDP (User Datagram Protocol) des clients Internet vers certains hôtes d’un cluster, en procédant comme suit : une fois le service Équilibrage de charge réseau configuré, les demandes client entrantes qui sont adressées aux adresses IP du cluster sont réceptionnées par tous les hôtes du cluster. Le service filtre alors les datagrammes entrants qui sont adressés vers des ports TCP et UDP spécifiques, avant que ces datagrammes n’atteignent les logiciels du protocole TCP/IP. L’Équilibrage de charge réseau gère uniquement les protocoles TCP et UDP dans TCP/IP, en surveillant leurs actions suivant le port utilisé.
Hormis le trafic TCP et UDP adressé sur des ports spécifiques, le service Équilibrage de charge réseau ne contrôle aucun autre trafic IP entrant. Il ne filtre pas les protocoles ICMP (Internet Control Message Protocol), IGMP (Internet Group Membership Protocol), ARP (Address Resolution Protocol) ou tout autre protocole IP. Le trafic de ce type est passé tel quel aux logiciels du protocole TCP/IP sur tous les hôtes du cluster. Compte tenu de la robustesse de TCP/IP et de sa capacité à traiter les datagrammes répliqués, les autres protocoles se comportent correctement dans un environnement en cluster. Attendez-vous toutefois à voir des réponses dupliquées émanant de certains programmes TCP/IP point-à-point (tels que les programmes ping) lorsque l’adresse IP du cluster est utilisée. Afin d’éviter ce comportement, vous pouvez utiliser l’adresse IP dédiée pour chaque hôte avec ces programmes.
Pour coordonner leurs actions, les hôtes de l’Équilibrage de charge réseau échangent périodiquement des messages à diffusion générale ou à multidiffusion au sein du cluster, ce qui leur permet de surveiller l’état de ce dernier. Lorsque l’état du cluster change (par exemple, si des hôtes échouent, quittent ou rejoignent le cluster), l’Équilibrage de charge réseau appelle un processus appelé “ convergence ”. Par ce processus, les hôtes échangent des messages pour déterminer un nouvel état cohérent du cluster et pour choisir un nouvel hôte par défaut, avec le niveau de priorité le plus élevé. Lorsque tous les hôtes du cluster sont d’accord sur le nouvel état du cluster, ils enregistrent la fin de la convergence dans le journal des événements Windows.
Au cours de la convergence, les hôtes continuent comme d’ordinaire à gérer le trafic réseau entrant, à l’exception du trafic destiné à un hôte défaillant, qui n’est pas pris en charge par le service. Les demandes des clients destinées aux hôtes actifs ne sont pas perturbées. à la fin de la convergence, le trafic destiné à un hôte défaillant est redistribué aux hôtes restants. Le trafic à charge équilibrée est réparti sur les hôtes restants pour permettre le meilleur équilibre possible sur les ports spécifiques TCP ou UDP. Le processus de convergence permet à un hôte ajouté au cluster de prendre le contrôle des ports pour lesquels il a la priorité la plus élevée et de recevoir sa part du trafic à charge équilibrée. L’extension du cluster n’affecte pas les opérations en cours et est réalisée de façon transparente pour les clients Internet et pour les programmes serveur. Elle peut toutefois perturber les sessions clientes réparties sur plusieurs connexions TCP si l’affinité client est sélectionnée, car les clients risquent d’être remappés sur des hôtes différents du cluster entre leurs connexions.
L’Équilibrage de charge réseau considère qu’un hôte fonctionne correctement dans le cluster tant qu’il participe à l’échange normal de messages entre les hôtes du cluster. Si les autres hôtes ne reçoivent aucune réponse d’un membre sur plusieurs périodes d’échange de messages, ils initient la convergence pour redistribuer la charge précédemment traitée par l’hôte défaillant. Vous pouvez contrôler à la fois la durée d’échange de messages et le nombre de messages manquants requis pour initier la convergence. Les valeurs par défaut sont respectivement de 1 000 millisecondes (1 seconde) et de 5 périodes d’échanges de messages soldées par un échec. Comme ces paramètres n’ont normalement pas besoin d’être modifiés, ils ne sont pas configurables par le biais de la boîte de dialogue Propriétés de Équilibrage de charge réseau, mais peuvent être ajustés manuellement dans le Registre, si nécessaire.