Mise en place d’un cluster NLB avec Windows Server
Sommaire
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.
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".
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 :
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".
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".
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
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.
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.
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.
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.
Cliquer sur le bouton "Terminer" pour valider la création du cluster et l'intégration de ce premier nœud.
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".
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...).
Une fois l'ajout terminé et un temps d'initialisation du cluster avec les deux noeuds vous obtiendrez l'état suivant :
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.
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)?
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
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
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
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
Bonjour,
Est il possible d’utiliser cette fonctionnalité pour monter un cluster de serveur d’impression ?