Recherche de site Web

Configuration et maintenance de la haute disponibilité/clustering sous Linux


La haute disponibilité (HA) fait simplement référence à la qualité d’un système à fonctionner en continu sans défaillance pendant une longue période. Les solutions de haute disponibilité peuvent être mises en œuvre à l’aide de matériel et/ou de logiciels, et l’une des solutions courantes de mise en œuvre de la haute disponibilité est le clustering.

En informatique, un cluster est composé d’au moins deux ordinateurs (communément appelés nœuds ou membres) qui travaillent ensemble pour effectuer une tâche. Dans une telle configuration, un seul nœud fournit le service, le ou les nœuds secondaires prenant le relais en cas d’échec.

Les grappes se divisent en quatre types principaux :

  • Stockage : fournit une image de système de fichiers cohérente sur tous les serveurs d’un cluster, ce qui permet aux serveurs de lire et d’écrire simultanément dans un seul système de fichiers partagé.
  • Haute disponibilité : éliminez les points de défaillance uniques et basculez les services d’un nœud de cluster à un autre en cas de défaillance d’un nœud.
  • Équilibrage de charge : répartissez les demandes de service réseau vers plusieurs nœuds de cluster pour équilibrer la charge de demande entre les nœuds de cluster.
  • Haute Performance : effectuer des traitements parallèles ou simultanés, contribuant ainsi à améliorer les performances des applications.

Une autre solution largement utilisée pour fournir de la haute disponibilité est la réplication (en particulier les réplications de données). La réplication est le processus par lequel une ou plusieurs bases de données (secondaires) peuvent être synchronisées avec une seule base de données primaire (ou maître).

Pour configurer un cluster, nous avons besoin d’au moins deux serveurs. Pour les besoins de ce guide, nous allons utiliser deux serveurs Linux :

  • Nœud 1 : 192.168.10.10
  • Nœud 2 : 192.168.10.11

Dans cet article, nous allons vous montrer les bases du déploiement, de la configuration et de la maintenance de la haute disponibilité/clustering dans Ubuntu 16.04/18.04 et CentOS 7. Nous allons montrer comment ajouter le service HTTP Nginx au cluster.

Configuration des paramètres DNS locaux sur chaque serveur

Pour que les deux serveurs puissent communiquer entre eux, nous devons configurer les paramètres DNS locaux appropriés dans le fichier /etc/hosts sur les deux serveurs.

Ouvrez et modifiez le fichier à l’aide de votre éditeur de ligne de commande préféré.

$ sudo vim /etc/hosts  

Ajoutez les entrées suivantes avec les adresses IP réelles de vos serveurs.

192.168.10.10	node1.example.com
192.168.10.11 	node2.example.com

Enregistrez les modifications et fermez le fichier.

Installation de Nginx Web Server

Installez maintenant le serveur Web Nginx à l’aide des commandes suivantes.

$ sudo apt install nginx  [On Ubuntu]
sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

Une fois l’installation terminée, démarrez le service Nginx pour l’instant et activez-le pour qu’il démarre automatiquement au démarrage, puis vérifiez s’il est opérationnel à l’aide de la commande systemctl.
Sur Ubuntu, le service doit être démarré automatiquement immédiatement après la fin de la préconfiguration du paquet, vous pouvez simplement l’activer.

$ sudo systemctl enable nginx
sudo systemctl start nginx
sudo systemctl status nginx

Après avoir démarré le service Nginx, nous devons créer des pages Web personnalisées pour identifier et tester les opérations sur les deux serveurs. Nous modifierons le contenu de la page d’index Nginx par défaut comme indiqué.

$ echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS1
echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html 	#VPS2

Installation et configuration de Corosync et Pacemaker

Ensuite, nous devons installer Pacemaker, Corosync et Pcs sur chaque nœud comme suit.

$ sudo apt install corosync pacemaker pcs	#Ubuntu 
sudo yum install corosync pacemaker pcs	#CentOS 

Une fois l’installation terminée, assurez-vous que le démon pcs s’exécute sur les deux serveurs.

$ sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl status pcsd

Création du cluster

Lors de l’installation, un utilisateur système appelé « hacluster » est créé. Nous devons donc mettre en place l’authentification nécessaire pour les PC. Commençons par créer un nouveau mot de passe pour l’utilisateur « hacluster », nous devons utiliser le même mot de passe sur tous les serveurs :

$ sudo passwd hacluster

Ensuite, sur l’un des serveurs (Node1), exécutez la commande suivante pour configurer l’authentification nécessaire pour les PC.

$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force

Créez maintenant un cluster et remplissez-le avec quelques nœuds (le nom du cluster ne peut pas dépasser 15 caractères, dans cet exemple, nous avons utilisé examplecluster) sur le serveur Node1.

$ sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com 

Activez maintenant le cluster au démarrage et démarrez le service.

$ sudo pcs cluster enable --all
sudo pcs cluster start --all

Vérifiez maintenant si le service de cluster est opérationnel à l’aide de la commande suivante.

$ sudo pcs status
OR
sudo crm_mon -1

À partir de la sortie de la commande ci-dessus, vous pouvez voir qu’il y a un avertissement concernant l’absence de périphériques SONITH, mais que STONITH est toujours activé dans le cluster. En outre, aucune ressource/service de cluster n’a été configuré.

Configuration des options de cluster

La première option consiste à désactiver STONITH (ou Shoot The Other Node In The Head), l’implémentation de l’escrime sur Pacemaker.

Ce composant permet de protéger vos données contre la corruption par un accès simultané. Dans le cadre de ce guide, nous allons le désactiver car nous n’avons configuré aucun appareil.

Pour désactiver STONITH, exécutez la commande suivante :

$ sudo pcs property set stonith-enabled=false

Ensuite, ignorez également la stratégie Quorum en exécutant la commande suivante :

$ sudo pcs property set no-quorum-policy=ignore

Après avoir défini les options ci-dessus, exécutez la commande suivante pour afficher la liste des propriétés et assurez-vous que les options ci-dessus, stonith et la politique de quorum sont désactivées.

$ sudo pcs property list

Ajout d’un service de ressource/cluster

Dans cette section, nous allons voir comment ajouter une ressource de cluster. Nous allons configurer une adresse IP flottante, c’est-à-dire l’adresse IP qui peut être instantanément déplacée d’un serveur à un autre au sein du même réseau ou centre de données. En bref, une IP flottante est un terme technique courant, utilisé pour les IP qui ne sont pas strictement liées à une seule interface.

Dans ce cas, il sera utilisé pour prendre en charge le basculement dans un cluster à haute disponibilité. Gardez à l’esprit que les adresses IP flottantes ne sont pas seulement destinées aux situations de basculement, elles ont quelques autres cas d’utilisation. Nous devons configurer le cluster de manière à ce que seul le membre actif du cluster « possède » ou réponde à l’adresse IP flottante à un moment donné.

Nous allons ajouter deux ressources de cluster : la ressource d’adresse IP flottante appelée « floating_ip » et une ressource pour le serveur web Nginx appelée « http_server ».

Commencez par ajouter les floating_ip comme suit. Dans cet exemple, notre adresse IP flottante est 192.168.10.20.

$ sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s

où:

  • floating_ip : est le nom du service.
  • « ocf :heartbeat :IPaddr2 " : indique à Pacemaker quel script utiliser, IPaddr2 dans ce cas, dans quel espace de noms il se trouve (pacemaker) et à quelle norme il se conforme ocf.
  • « op monitor interval=60s » : indique à Pacemaker de vérifier l’état de ce service toutes les minutes en appelant l’action du moniteur de l’agent.

Ajoutez ensuite la deuxième ressource, nommée http_server. Ici, l’agent de ressource du service est ocf :heartbeat :nginx.

$ sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

Une fois que vous avez ajouté les services de cluster, exécutez la commande suivante pour vérifier l’état des ressources.

$ sudo pcs status resources

En regardant le résultat de la commande, les deux ressources ajoutées : « floating_ip " et « http_server " ont été répertoriés. Le service floating_ip est désactivé car le nœud principal est en fonctionnement.

Si le pare-feu est activé sur votre système, vous devez autoriser tout le trafic vers Nginx et tous les services de haute disponibilité à travers le pare-feu pour une bonne communication entre les nœuds :

-------------- CentOS 7 -------------- 
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=high-availability		
sudo firewall-cmd --reload

-------------- Ubuntu -------------- 
sudo ufw allow http	
sudo ufw allow high-availability						
sudo ufw reload 

Test de la haute disponibilité/clustering

La dernière étape, qui est importante, consiste à vérifier que notre configuration de haute disponibilité fonctionne. Ouvrez un navigateur Web et accédez à l’adresse 192.168.10.20, vous devriez voir la page Nginx par défaut à partir de la node2.example.com comme indiqué dans la capture d’écran.

Pour simuler une défaillance, exécutez la commande suivante pour arrêter le cluster sur le node2.example.com.

$ sudo pcs cluster stop http_server

Rechargez ensuite la page à 192.168.10.20, vous devez maintenant accéder à la page Web Nginx par défaut à partir du node1.example.com.

Vous pouvez également simuler une erreur en demandant au service de s’arrêter directement, sans arrêter le cluster sur un nœud, à l’aide de la commande suivante sur l’un des nœuds :

 
sudo crm_resource --resource http_server --force-stop 

Ensuite, vous devez exécuter crm_mon en mode interactif (par défaut), dans l’intervalle de surveillance de 2 minutes, vous devriez être en mesure de voir l’avis du cluster qui http_server échoué et de le déplacer vers un autre nœud.

Pour que vos services de cluster s’exécutent efficacement, vous devrez peut-être définir certaines contraintes. Vous pouvez consulter la page de manuel pcs (man pcs) pour obtenir la liste de toutes les commandes d’utilisation.

Pour plus d’informations sur Corosync et Pacemaker, consultez : https://clusterlabs.org/

Résumé

Dans ce guide, nous avons montré les bases du déploiement, de la configuration et de la maintenance de la haute disponibilité, du clustering et de la réplication dans Ubuntu 16.04/18.04 et CentOS 7. Nous avons montré comment ajouter le service HTTP Nginx à un cluster. Si vous avez des réflexions à partager ou des questions, utilisez le formulaire de commentaires ci-dessous.

Articles connexes: