26/12/2024

Windows Server

Mise en place d’un cluster NLB avec Windows Server

I. Présentation

Ce tutoriel explique la mise en place d'un cluster NLB c'est-à-dire de répartition de charge réseau. Ce type de cluster devient utile et intéressant lorsqu'un seul serveur ne suffit plus pour tenir toute la charge, mais aussi lorsqu'il a un temps de réponse insuffisant par rapport à vos besoins.

Libre à vous de décider s'il est préférable d'ajouter un second serveur est de faire un cluster plutôt que de booster la configuration matériel du serveur actuel. Si vous lisez ce tutoriel, vous avez surement choisi la première solution...

La mise en place n'est pas compliquée techniquement, par contre il est nécessaire de bien comprendre certaines options afin de faire les bons choix au niveau du :

- Mode d'opération du cluster
- Mode de filtrage
- Mode d'affinité

II. L'architecture

Le cluster sera composé de deux serveurs sous Windows Server 2012 R2, accompagné d'un serveur Active Directory contrôleur de domaine du domaine it-connect.fr. Les serveurs devant être liés au cluster se nomment SRV01 et SRV02, le serveur Active Directory quant à lui se nommer SRV-AD01.

clusterwin0

III. Prérequis

Au niveau des serveurs voici quelques prérequis et conseils :

- Mise à jour : Il est préférable de faire le maximum de mises à jour Windows avant de créer le cluster. Cela pourrait être fait plus tard, mais ainsi on évite un arrêt de service... Au moins jusqu'à la prochaine fois où vous déciderez d'installer les mises à jour.

- Contrôleur de domaine : Les serveurs membres du cluster ne doivent pas être contrôleur de domaine, c'est un impératif.

- Matériel : Afin de garantir le support par Microsoft et une stabilité optimale, il est fortement recommandé d'utiliser un serveur et des composants certifiés au minimum Windows Server 2012 (cela peut être vérifié avec la présence d'un logo).

- Réseau : Bien qu'une seule interface réseau peut être utilisée, il est conseillé d'en utiliser au moins deux : une pour le trafic avec les machines clientes qui effectueront les requêtes, et une seconde pour le trafic interne au cluster entre les différents nœuds. Plus de détails sur la configuration seront indiqués plus tard dans l'article.

IV. Mode d'opération du cluster

Trois modes d'opération de cluster sont disponibles : Monodiffusion, multidiffusion et multidiffusion IGMP. Voici plus de détails sur le fonctionnement de ces trois modes.

A. Monodiffusion (unicast)

Ce mode attribue une adresse MAC unique à l'ensemble des nœuds du cluster. Cependant cela pose problème au niveau du switch puisque par définition un switch attribue une adresse MAC par port, il ne peut pas enregistrer deux fois la même adresse MAC. Ce problème de diffusion obligera le switch à flooder l'ensemble des ports pour savoir à qui appartient réellement cette adresse. Cela fonctionnera, mais va générer une quantité de trafic importante, ce qui est loin d'être top... Une solution annexe, mais ne faisant pas partie des bonnes pratiques consiste à placer un hub entre le switch et les nœuds du cluster, comme ça l'adresse MAC sera enregistrée uniquement sur un port du switch et le trafic redistribué à l'ensemble des nœuds grâce au hub.

Ce mode bien qu'il soit fonctionnel requiert des équipements supplémentaires sans pour autant obtenir de meilleures performances qui seront fortement descente à cause du flooding ou du hub.

Note : Pour plus d'informations, vous pouvez également vous renseigner d'un attribut nommé "MaskSourceMAC"

B. Multidiffusion (multicast)

Ce mode règle le problème lié à l'unicité de l'adresse MAC puisqu'une adresse MAC de type multidiffusion est utilisée, tout en empêchant les équipements réseau de mémoriser l'adresse MAC du cluster. Par contre, ce mode ne résout pas le problème de flooding sur les ports du switch.

Certains commutateurs peuvent être configurés partiellement en hub, ce qui permet d'indiquer à l'équipement de transférer systématiquement les paquets pour l'adresse MAC du cluster aux ports où sont connectés les nœuds. Cela est notamment supporté sur certains équipements Cisco.

C. Multidiffusion IGMP

Ce mode reprend le comportement du mode précédent sauf que l'on ajoute l'utilisation de l'IGMP (Internet Group Management Protocol). De ce fait, les nœuds du cluster s'enregistrent avec une adresse IP de classe D. Avec ce mode, les problèmes de flooding n'existent plus.

Pour rappel, la classe D contient les adresses IP de 224.0.0.0 à 239.255.255.255 et est réservée uniquement aux communications multicast.

V. Mode de filtrage

Le choix du mode de filtrage permet de définir le mode de fonctionnement du cluster au niveau des flux réseaux.

A. Hôte multiple

Ce mode est le plus intéressant et permet une véritable répartition de charge entre les nœuds du cluster. En effet, il est de type "actif/actif" donc plusieurs nœuds travaillent simultanément afin de se répartir la charge.

B. Hôte unique

Ce mode est de type "actif/passif" est va à l'encontre de la répartition de charge... Le nœud avec le plus petit ID sera actif et le nœud actif sera le seul à recevoir le flux réseau.

C. Aucun

Ce mode de filtrage permet de bloquer le trafic sur certains ports définis. Intéressant pour protéger les nœuds du cluster.

VI. Mode d'affinité

Vous remarquerez que lorsque vous choisissez le mode de filtrage "hôte multiple" afin de faire de la véritable répartition de charge, vous aurez le choix entre trois modes d'affinité : Aucun, unique et réseau.

A. Aucun

Ce mode assure la meilleure répartition puisqu'à chaque connexion TCP d'un même client, ce dernier sera dirigé vers le nœud ayant le moins de clients à l'instant t.

Attention tout de même si vous utilisez ce mécanisme d'affinité sur un site comprenant une gestion des sessions voir même des paniers, cela pourrait poser des problèmes. Il vaut mieux garder le client sur un même nœud pendant l'intégralité de sa connexion.

B. Unique

Maintiens le client sur un même nœud par rapport à son adresse IP, tant que la topologie du cluster n'est pas modifiée, je m'explique : Tant qu'il n'y a pas de suppression ou d'ajout de nœud.

Bien sûr, si les clients arrivent tous avec une adresse IP derrière un NAT ou un Proxy la répartition ne sera pas équitable. Il est important que chaque client arrive avec sa propre adresse IP afin d'assurer une meilleure répartition.

C. Réseau

Plutôt que de répartir les clients par rapport à leur adresse IP, la répartition est effectuée par rapport au réseau. Par exemple, tous les clients du réseau 192.168.1.0/24 iront sur un nœud et tous ceux du réseau 192.168.2.0/24 sur un autre nœud.

Cette méthode peut s'avérer utile et pertinente dans le cas de l'utilisation de plusieurs réseaux, sinon un seul nœud recevra toute la charge... Ce qui n'est pas le but.

VII. Configuration des cartes réseau

La carte réseau utilisée pour la connexion au LAN et qui recevra les requêtes clientes, n'a pas besoin de configuration particulière.

Par contre, celle qui sera utilisée pour le trafic dédié au cluster elle doit recevoir une configuration adaptée.

Tout d'abord, n'indiquez pas de serveurs DNS ni de serveurs WINS pour cette carte. Ensuite, dans les propriétés TCP/IP de la carte il faut désactiver l'option "Enregistrer les adresses de cette connexion dans le système DNS".

clusterwin12

Si besoin, nettoyez également les enregistrements DNS contenus dans votre DNS concernant l'adresse IP attribuée à cette carte. Enfin, attribuez une adresse IP fixe à cette carte (dans un sous-réseau à part).

Indiquez la même configuration au niveau des paramètres de la carte réseau concernant le mode duplex, le type de média ou encore le contrôle des flux.

Pour conclure sur les cartes réseau, sachez qu'il est possible d'utiliser des cartes réseau montées en teaming.

VIII. Installation des rôles

Sur les deux serveurs qui doivent devenir noeud du cluster, il est nécessaire d'installer la fonctionnalité NLB et la console de gestion NLB.

Pour cela nous utiliserons PowerShell afin de gagner du temps.

Sur chaque serveur, exécutez la commande suivante :

Install-Windows Feature NLB,RSAT-NLB

Sinon, vous pouvez exécuter la commande à distance depuis un autre serveur comme le contrôleur de domaine par exemple. La commande changera légèrement puisqu'il faut invoquer la commande à distance :

Invoke-Command -ComputerName SRV01,SRV02 -Command {Install-Windows Feature NLB,RSAT-NLB}

Pour ma part j'utilise la méthode à distance par Invoke-Command, qui permet de gagner encore plus en efficacité par rapport à la première méthode. A la fin de l'installation j'obtiens le message suivant :

Installer NLB PowerShell

IX. Création de la ferme

Passons à la création de la ferme (cluster) via l'interface graphique (il est également possible de le faire via PowerShell). Connectez-vous sur un de vos futurs noeuds.

Accédez à l'Accueil, Outils d’administration et ouvrez le Gestionnaire d’équilibrage de la charge réseau. Effectuez un clic droit sur "Cluster d'équilibrage de la charge réseau" puis "Nouveau cluster".

Nouveau cluster

Dans le champ "Hôte" indiquez le nom DNS du serveur constituant le premier noeud du cluster. Pour ma part, je commence par SRV01 qui est également le serveur depuis lequel j'effectue la configuration. Cliquez sur "Connexion" et vous verrez apparaître les cartes réseau disponibles sur le serveur.

Sélectionnez celle qui sera utilisée pour le partage de l'adresse IP virtuelle et la réception des données à destination du cluster. Cliquez sur "Suivant".

clusterwin6

Maintenant, indiquez la priorité de ce serveur vis-à-vis des autres nœuds avec une valeur comprise entre 1 et 32 (32, car il peut y avoir 32 nœuds au maximum). Intéressez-vous ensuite au champ "Adresses IP dédiées" afin de préciser l'adresse IP spécifique à ce nœud.

Par défaut, l'adresse IP de la carte sélectionnée précédemment sera reprise comme adresse dédiée. Il n'est pas utile de la changer... mais libre à vous de la changer ou non.

Enfin, sélectionnez un mode initial pour cet hôte :

- Démarré
- Arrêté
- Exécution suspendue

clusterwin7

Cette étape consiste à indiquer une adresse IP virtuelle pour ce cluster (rappel : adresse IP virtuelle = adresse IP partagée entre les noeuds).

Cliquez sur "Ajouter" pour ajouter une nouvelle adresse IPv4 ou IPv6.

clusterwin8

Indiquez un nom pour ce cluster en remplissant le champ "Nom Internet complet" et sélectionnez un mode d'opération du cluster. Référez-vous aux informations de l'étape précédente.

clusterwin9

Cette étape consiste à créer des règles de port afin d'indiquer sur quels types de requêtes doit répondre le cluster. Par défaut, il "écoute" sur toute la plage de ports c'est-à-dire de 0 à 65 535, aussi bien en TCP qu'en UDP.

clusterwin9bis

Par exemple, pour un serveur web il peut être intéressant d'écouter uniquement sur le port 80. Pour cela on crée la règle adéquate et on supprime la règle par défaut. La règle ci-dessous est fonctionnelle dans le cas d'un serveur web, mais doit être adaptée selon vos besoins.

clusterwin10

Cliquer sur le bouton "Terminer" pour valider la création du cluster et l'intégration de ce premier nœud.

clusterwin11

X. Ajouter un second nœud

Pour le moment le cluster comprend uniquement un nœud, nous allons voir comment ajouter le second nœud. Au sein de la console "Gestionnaire d'équilibrage de la charge réseau", effectuez un clic droit sur le nom du cluster puis "Ajouter l'hôte au cluster".

Ajouter un hôte au cluster

Reprenez ensuite la même procédure que lors de l'ajout du premier nœud, car vous retrouverez les mêmes étapes (sauf certaines qui n'ont pas lieu d'être comme celle qui demande le nom du cluster...).

clusterwin14

Une fois l'ajout terminé et un temps d'initialisation du cluster avec les deux noeuds vous obtiendrez l'état suivant :

clusterwin15

La création du cluster NLB est désormais terminée, à vous de le configurer selon les applications que vous hébergez pour adapter les règles de filtrage, ensuite pensez à adapter la configuration des applications en mode cluster si elles le permettent.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

6 commentaires sur “Mise en place d’un cluster NLB avec Windows Server

  • Merci beaucoup pour ce brillant article. J’ai juste une question. Comment faire coahabiter les deux cluster MSCS et le NLB sur deux noeud identiques (sur les memes serveurs)?

    Répondre
  • Bonjour ,

    Merci pour ce tuto , lors de l’ajout des serveurs au cluster NLB il faut choisir la carte dédié au cluster ( la carte ou on met pas de DNS ) ou la carte configuré normalement ?

    Cordialement

    Répondre
  • Bonjour,

    Vous dites qu’il faut utiliser la carte réseau dédiée au cluster mais vous utilisez celle configurée pour le LAN…

    J’ai un doute du coup…

    Pouvez-vous clarifier un peu svp ?

    Cordialement

    Laurent

    Répondre
  • Pour répondre à la question du choix de la carte, il me semble qu’il faut choisir la carte réseau « LAN ».
    En effet, il faut choisir la carte avec l’adresse IP qui sera dans le même réseau que l’adresse IP Virtuelle.

    Corrigez moi si je me trompe.

    Dordouf

    Répondre
  • Bonjour,

    « Libre à vous de décider s’il est préférable d’ajouter un second serveur est de faire un cluster plutôt que de booster la configuration matériel du serveur actuel »
    Il doit y avoir une petite faute au niveau de la phrase « S’il est préférable d’ajouter un second serveur ET de faire un cluster »

    J’ai une question concernant le service, en cas de plantage du serveur qui héberge le service NLB, j’imagine que la répartition de charge ne se fait plus et que cela occasionne un « SPOF », est-il possible d’ajouter un service sur un autre serveur afin d’ajouter une sécurité ?

    Merci

    Répondre
  • Bonjour,
    Est il possible d’utiliser cette fonctionnalité pour monter un cluster de serveur d’impression ?

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.