Serveur d'impression

Comment configurer un cluster à haute disponibilité sur CentOS 7 / RHEL 7 – Bien choisir son serveur d impression

Le 10 juin 2020 - 15 minutes de lecture

Le cluster haute disponibilité aka Failover-cluster (cluster actif-passif) est l'un des types de cluster les plus utilisés dans l'environnement de production. Ce type de cluster vous offre la disponibilité continue des services même si l'un des nœuds de cluster tombe en panne. Si le serveur exécutant l'application a échoué pour une raison quelconque (défaillance matérielle), le logiciel de cluster (stimulateur cardiaque) redémarrera l'application sur un autre nœud.

La haute disponibilité est principalement utilisée pour les bases de données, les applications personnalisées et également pour le partage de fichiers. Le basculement ne consiste pas seulement à démarrer une application. Il a une série d'opérations qui lui sont associées, comme le montage de systèmes de fichiers, la configuration de réseaux et le démarrage d'applications dépendantes.

Environnement

CentOS 7 / RHEL 7 prend en charge le cluster de basculement à l'aide du stimulateur cardiaque. Ici, nous chercherons à configurer le serveur Apache (Web) en tant qu'application hautement disponible.

Comme je l'ai dit, le basculement est une série d'opérations, nous devons donc configurer le système de fichiers et les réseaux en tant que ressource. Pour un système de fichiers, nous utiliserions un stockage partagé à partir du stockage iSCSI.

Configurer un cluster à haute disponibilité sur CentOS 7 - Infrastructure
Configurer un cluster haute disponibilité sur CentOS 7 – Infrastructure
Nom d'hôte Adresse IP OS Objectif
node1.itzgeek.local 192.168.1.11 CentOS 7 Noeud de cluster 1
node2.itzgeek.local 192.168.1.12 Noeud de cluster 1
server.itzgeek.local 192.168.1.20 Stockage partagé iSCSI
192.168.1.100 IP de cluster virtuel (Apache)

Tous s'exécutent sur VMware Workstation.

Stockage partagé

Le stockage partagé est l'une des ressources importantes du cluster à haute disponibilité car il contient les données d'une application en cours d'exécution. Tous les nœuds d'un cluster auront accès au stockage partagé pour les données récentes. Le stockage SAN est le stockage partagé le plus utilisé dans l'environnement de production. Pour cette démonstration, nous allons configurer un cluster avec stockage iSCSI à des fins de démonstration.

Installer des packages

Serveur iSCSI

[[email protected]    ~]# yum install targetcli -y

Noeuds de cluster

Il est temps de configurer les nœuds de cluster pour utiliser le stockage iSCSI, effectuez les étapes ci-dessous sur tous vos nœuds de cluster.

# yum install iscsi-initiator-utils -y

Disque d'installation

Ici, nous allons créer 10 Go de disque LVM sur le serveur iSCSI à utiliser comme stockage partagé pour nos nœuds de cluster. Répertorions les disques disponibles attachés au serveur cible à l'aide de la commande.

[[email protected]    ~]# fdisk -l | grep -i sd

Production:

Disque / dev / sda: 107,4 Go, 107374182400 octets, 209715200 secteurs
/ dev / sda1 * 2048 1026047 512000 83 Linux
/ dev / sda2 1026048 209715199 104344576 8e Linux LVM
Disque / dev / sdb: 10,7 Go, 10737418240 octets, 20971520 secteurs

De la sortie ci-dessus, vous pouvez voir que mon système dispose de 10 Go de disque dur (/ dev / sdb). Créez un LVM avec / dev / sdb (remplacer / dev / sdb avec le nom de votre disque)

[[email protected]    ~]# pvcreate / dev / sdb

[[email protected] ~]# vgcreate vg_iscsi / dev / sdb

[[email protected] ~]# lvcreate -l 100% GRATUIT -n lv_iscsi vg_iscsi

Créer un stockage partagé

Obtenez les détails de l'initiateur des nœuds.

chat /etc/iscsi/initiatorname.iscsi

Noeud 1:

InitiatorName = iqn.1994-05.com.redhat: b11df35b6f75

Noeud 2:

InitiatorName = iqn.1994-05.com.redhat: 119eaf9252a

Entrez la commande ci-dessous pour obtenir une CLI iSCSI pour une invite interactive.

[[email protected]    ~]# targetcli

Production:

shell shell targetcli version 2.1.fb46
Copyright 2011-2013 par Datera, Inc et autres.
Pour obtenir de l'aide sur les commandes, tapez «help».

/> cd / backstores / bloc



/ backstores / block> créer iscsi_shared_storage / dev / vg_iscsi / lv_iscsi



L'objet de stockage de bloc créé est iscsi_shared_storage à l'aide de / dev / vg_iscsi / lv_iscsi.
/ backstores / block> cd / iscsi



/ iscsi> créer



Cible créée iqn.2003-01.org.linux-iscsi.server.x8664: sn.518a1f561ad5.
TPG créé 1.
Global pref auto_add_default_portal = true
Création du portail par défaut à l'écoute sur toutes les IP (0.0.0.0), port 3260.
/ iscsi> cd iqn.2003-01.org.linux-iscsi.server.x8664: sn.518a1f561ad5 / tpg1 / acls



/iscsi/iqn.20 ... ad5 / tpg1 / acls> créer iqn.1994-05.com.redhat: b11df35b6f75   << Initiateur du nœud 1



ACL du noeud créé pour iqn.1994-05.com.redhat: b11df35b6f75
/iscsi/iqn.20 ... ad5 / tpg1 / acls> créer iqn.1994-05.com.redhat: 119eaf9252a    << Initiateur du nœud 1



ACL du noeud créé pour iqn.1994-05.com.redhat: 119eaf9252a
/iscsi/iqn.20 ... ad5 / tpg1 / acls> cd /iscsi/iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5/tpg1/luns



/iscsi/iqn.20 ... ad5 / tpg1 / luns> créer / backstores / block / iscsi_shared_storage



Création du LUN 0.
Création du mappage de LUN 0-> 0 dans le noeud ACL iqn.1994-05.com.redhat: 119eaf9252a
Création du mappage LUN 0-> 0 dans le noeud ACL iqn.1994-05.com.redhat: b11df35b6f75
/iscsi/iqn.20 ... ad5 / tpg1 / luns> cd /



/> ls



o- / ............................................... .................................................. ..... [...]
  o- backstores ............................................... ............................................ [...]
  | o- block ............................................... ................................ [Storage Objects: 1]
  | | o- iscsi_shared_storage ........................... [/dev/vg_iscsi/lv_iscsi (10.0GiB) write-thru activated]
  | | o- alua ............................................... ................................. [ALUA Groups: 1]
  | | o- default_tg_pt_gp ............................................... ..... [ALUA state: Active/optimized]
  | o- fileio ............................................... ............................... [Storage Objects: 0]
  | o- pscsi ............................................... ................................ [Storage Objects: 0]
  | o- ramdisk ............................................... .............................. [Storage Objects: 0]
  o- iscsi ............................................... .......................................... [Targets: 1]
  | o- iqn.2003-01.org.linux-iscsi.server.x8664: sn.518a1f561ad5 ............................. .......... [TPGs: 1]
  | o- tpg1 ............................................... ............................. [no-gen-acls, no-auth]
  | o- acls ............................................... ........................................ [ACLs: 2]
  | | o- iqn.1994-05.com.redhat: 119eaf9252a ..................................... ........... [Mapped LUNs: 1]
  | | | o- mapped_lun0 ............................................... [lun0 block/iscsi_shared_storage (rw)]
  | | o- iqn.1994-05.com.redhat: b11df35b6f75 ..................................... .......... [Mapped LUNs: 1]
  | | o- mapped_lun0 ............................................... [lun0 block/iscsi_shared_storage (rw)]
  | o- luns ............................................... ........................................ [LUNs: 1]
  | | o- lun0 ...................... [block/iscsi_shared_storage (/dev/vg_iscsi/lv_iscsi) (default_tg_pt_gp)]
  | o- portails ............................................... .................................. [Portals: 1]
  | o- 0.0.0.0:3260 ........................................... ....................................... [OK]
  o- bouclage ............................................... ....................................... [Targets: 0]
/> saveconfig



Configuration enregistrée dans /etc/target/saveconfig.json
/> sortie



Préférence globale auto_save_on_exit = true
Les 10 dernières configurations enregistrées dans / etc / target / backup /.
Configuration enregistrée dans /etc/target/saveconfig.json
[[email protected] ~]#

Activez et redémarrez le service cible.

[[email protected]    ~]# systemctl enable target

[[email protected] ~]# cible de redémarrage systemctl

Configurez le pare-feu pour autoriser le trafic iSCSI.

[[email protected]    ~]# firewall-cmd --permanent --add-port = 3260 / tcp

[[email protected] ~]# firewall-cmd --reload

Découvrez le stockage partagé

Sur les deux nœuds de cluster, découvrez la cible à l'aide de la commande ci-dessous.

# iscsiadm -m discovery -t st -p 192.168.1.20

Production:

192.168.1.20:3260,1 iqn.2003-01.org.linux-iscsi.server.x8664: sn.518a1f561ad5

Maintenant, connectez-vous à la cible avec la commande ci-dessous.

# iscsiadm -m node -T iqn.2003-01.org.linux-iscsi.server.x8664: sn.518a1f561ad5 -p 192.168.1.20 -l

Production:

Se connecter à [iface: default, target: iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5, portal: 192.168.1.20,3260] (plusieurs)
Se connecter à [iface: default, target: iqn.2003-01.org.linux-iscsi.server.x8664:sn.518a1f561ad5, portal: 192.168.1.20,3260] réussi.

Redémarrez et activez le service initiateur.

# systemctl restart iscsid

# systemctl enable iscsid

Configuration des nœuds de cluster

Entrée d'hôte

Effectuez une entrée d'hôte sur chaque nœud pour tous les nœuds. Le cluster utilisera le nom d'hôte pour communiquer entre eux.

# vi / etc / hosts

Les entrées d'hôte seront quelque chose comme ci-dessous.

192.168.1.11 node1.itzgeek.local node1
192.168.1.12 node2.itzgeek.local node2

Stockage partagé

Accédez à tous vos nœuds et vérifiez si le nouveau disque est visible ou non. Dans mes nœuds, / dev / sdb est le disque provenant de notre stockage iSCSI.

# fdisk -l | grep -i sd

Production:

Disque / dev / sda: 107,4 Go, 107374182400 octets, 209715200 secteurs
/ dev / sda1 * 2048 1026047 512000 83 Linux
/ dev / sda2 1026048 209715199 104344576 8e Linux LVM
Disque / dev / sdb: 10,7 Go, 10733223936 octets, 20963328 secteurs

Sur n'importe lequel de vos nœuds (Ex, nœud1), créez un système de fichiers pour le serveur Web Apache pour contenir les fichiers du site Web. Nous allons créer un système de fichiers avec LVM.

[[email protected]    ~]# pvcreate / dev / sdb

[[email protected] ~]# vgcreate vg_apache / dev / sdb

[[email protected] ~]# lvcreate -n lv_apache -l 100% GRATUIT vg_apache

[[email protected] ~]# mkfs.ext4 / dev / vg_apache / lv_apache

Maintenant, allez sur un autre nœud et exécutez les commandes ci-dessous pour détecter le nouveau système de fichiers.

[[email protected]    ~]# pvscan

[[email protected] ~]# vgscan

[[email protected] ~]# lvscan

Enfin, vérifiez le LVM que nous avons créé sur node1 est disponible pour vous sur un autre nœud (Ex. nœud2) en utilisant la commande ci-dessous.

[[email protected]    ~]# lvdisplay / dev / vg_apache / lv_apache

Production: Tu devrais voir / dev / vg_apache / lv_apache sur node2.itzgeek.local

    --- Volume logique ---
  Chemin LV / dev / vg_apache / lv_apache
  Nom LV lv_apache
  VG Name vg_apache
  LV UUID mFUyuk-xTtK-r7PV-PLPq-yoVC-Ktto-TcaYpS
  Accès en écriture LV lecture / écriture
  Hôte de création LV, heure node1.itzgeek.local, 2019-07-05 08:57:33 +0530
  Statut LV disponible
  # ouvert 0
  Taille BT 9,96 Gio
  Entreprise actuelle
  Segments 1
  Héritage d'allocation
  Lire à l'avance secteurs auto
  - actuellement fixé à 8192
  Bloquer le périphérique 253: 3

Si le système n'affiche pas le volume logique, envisagez de redémarrer le deuxième nœud.

Installer des packages

Installez les packages de cluster (pacemaker) sur tous les nœuds à l'aide de la commande ci-dessous.

# yum install pcs fence-agents-all -y

Autorisez toutes les applications à haute disponibilité sur le pare-feu à avoir une communication appropriée entre les nœuds. Vous pouvez ignorer cette étape si le système n'a pas de pare-feu installé.

# firewall-cmd --permanent --add-service = haute disponibilité

# firewall-cmd --add-service = haute disponibilité

Utilisez la commande ci-dessous pour répertorier les applications autorisées dans le pare-feu.

# firewall-cmd --list-service

Production:

ssh dhcpv6-client haute disponibilité

Définissez le mot de passe pour hacluster utilisateur. Ce compte d'utilisateur est un compte d'administration de cluster. Nous vous suggérons de définir le même mot de passe pour tous les nœuds.

# passwd hacluster

Démarrez le service de cluster. De plus, activez-le pour qu'il démarre automatiquement au démarrage du système.

# systemctl start pcsd

# systemctl enable pcsd

N'oubliez pas d'exécuter les commandes ci-dessus sur tous vos nœuds de cluster.

Créer un cluster à haute disponibilité

Autorisez les nœuds à l'aide de la commande ci-dessous. Exécutez la commande ci-dessous dans l'un des nœuds pour autoriser les nœuds.

[[email protected]    ~]# pcs cluster auth node1.itzgeek.local node2.itzgeek.local

Production:

Nom d'utilisateur: hacluster



Mot de passe:      << Entrez le mot de passe



node1.itzgeek.local: autorisé
node2.itzgeek.local: autorisé

Créez un cluster.

[[email protected]    ~]# configuration du cluster pcs --start --name itzgeek_cluster node1.itzgeek.local node2.itzgeek.local

Production:

Détruire le cluster sur les nœuds: node1.itzgeek.local, node2.itzgeek.local ...
node1.itzgeek.local: Arrêt du cluster (stimulateur cardiaque) ...
node2.itzgeek.local: Arrêt du cluster (stimulateur cardiaque) ...
node2.itzgeek.local: cluster détruit avec succès
node1.itzgeek.local: cluster détruit avec succès

Envoi de 'pacemaker_remote authkey' à 'node1.itzgeek.local', 'node2.itzgeek.local'
node1.itzgeek.local: distribution réussie du fichier 'pacemaker_remote authkey'
node2.itzgeek.local: distribution réussie du fichier 'pacemaker_remote authkey'
Envoi de fichiers de configuration de cluster aux nœuds ...
node1.itzgeek.local: Réussi
node2.itzgeek.local: Réussi

Démarrage du cluster sur les nœuds: node1.itzgeek.local, node2.itzgeek.local ...
node1.itzgeek.local: Démarrage du cluster (corosync) ...
node2.itzgeek.local: Démarrage du cluster (corosync) ...
node1.itzgeek.local: Démarrage du cluster (stimulateur cardiaque) ...
node2.itzgeek.local: Démarrage du cluster (stimulateur cardiaque) ...

Synchronisation des certificats pcsd sur les nœuds node1.itzgeek.local, node2.itzgeek.local ...
node1.itzgeek.local: Succès
node2.itzgeek.local: Succès
Redémarrer pcsd sur les nœuds afin de recharger les certificats ...
node1.itzgeek.local: Succès
node2.itzgeek.local: Succès

Activez le cluster pour démarrer au démarrage du système.

[[email protected]    ~]# pcs cluster enable --all

Production:

node1.itzgeek.local: Cluster Enabled
node2.itzgeek.local: Cluster Enabled

Utilisez la commande ci-dessous pour obtenir l'état du cluster.

[[email protected]    ~]# pcs statut du cluster

Production:

Statut du cluster:
 Pile: corosync
 DC actuel: node2.itzgeek.local (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition avec quorum
 Dernière mise à jour: ven.5 juil.09: 14: 57 2019
 Dernière modification: ven.5 juil.09: 13: 12 2019 par hacluster via crmd sur node2.itzgeek.local
 2 nœuds configurés
 0 ressources configurées

Statut PCSD:
  node1.itzgeek.local: en ligne
  node2.itzgeek.local: en ligne

Exécutez la commande ci-dessous pour obtenir des informations détaillées sur le cluster, y compris ses ressources, l'état du stimulateur cardiaque et les détails des nœuds.

[[email protected]    ~]# statut des pcs

Production:

Nom du cluster: itzgeek_cluster

AVERTISSEMENTS:
Aucun périphérique Stonith et compatible Stonith n'est pas faux

Pile: corosync
DC actuel: node2.itzgeek.local (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition avec quorum
Dernière mise à jour: ven.5 juil.09: 15: 37 2019
Dernière modification: ven.5 juil.09: 13: 12 2019 par hacluster via crmd sur node2.itzgeek.local

2 nœuds configurés
0 ressources configurées

En ligne: [ node1.itzgeek.local node2.itzgeek.local ]

Pas de ressources


Statut du démon:
  corosync: actif / activé
  stimulateur cardiaque: actif / activé
  pcsd: actif / activé

Dispositifs d'escrime

Le périphérique d'escrime est un périphérique matériel / logiciel qui aide à déconnecter le nœud problématique en réinitialisant le nœud / en déconnectant le stockage partagé d'y accéder. Mon cluster de démonstration s'exécute au-dessus de la machine virtuelle VMware, donc je ne vous montre pas la configuration d'un périphérique d'escrime, mais vous pouvez suivre ce guide pour configurer un périphérique d'escrime.

Ressources du cluster

Préparer les ressources

Serveur Web Apache

Installez le serveur Web Apache sur les deux nœuds.

# yum install -y httpd wget

Modifiez le fichier de configuration.

# vi /etc/httpd/conf/httpd.conf

Ajoutez le contenu ci-dessous à la fin du fichier sur les deux nœuds de cluster.


  
  
  
  Statut du serveur SetHandler
  Ordonner refuser, autoriser
  Refuser de tout
  Autoriser à partir de 127.0.0.1

Nous devons maintenant utiliser le stockage partagé pour stocker le fichier de contenu Web (HTML). Effectuez l'opération ci-dessous dans l'un des nœuds.

[[email protected]    ~]# mount / dev / vg_apache / lv_apache / var / www /

[[email protected] ~]# mkdir / var / www / html

[[email protected] ~]# mkdir / var / www / cgi-bin

[[email protected] ~]# mkdir / var / www / error

[[email protected] ~]# restorecon -R / var / www

[[email protected] ~]# chat <<-END >/var/www/html/index.html

Bonjour bienvenue!. Cette page est desservie par le cluster de disponibilité Red Hat Hight




FIN

[[email protected] ~]# umount / var / www

Autorisez le service Apache dans le pare-feu sur les deux nœuds.

# firewall-cmd --permanent --add-service = http

# firewall-cmd --reload

Créer des ressources

Créez une ressource de système de fichiers pour le serveur Apache. Utilisez le stockage provenant du serveur iSCSI.

# pcs resource create httpd_fs Filesystem device = "/ dev / mapper / vg_apache-lv_apache" directory = "/ var / www" fstype = "ext4" --group apache

Production:

Nom d'agent supposé «ocf: heartbeat: Filesystem» (déduit de «Filesystem»)

Créez une ressource d'adresse IP. Cette adresse IP agira comme une adresse IP virtuelle pour Apache et les clients utiliseront cette adresse IP pour accéder au contenu Web au lieu de l'adresse IP du nœud individuel.

# pcs resource create httpd_vip IPaddr2 ip = 192.168.1.100 cidr_netmask = 24 --group apache

Production:

Nom d'agent supposé «ocf: heartbeat: IPaddr2» (déduit de «IPaddr2»)

Créez une ressource Apache qui surveillera l'état du serveur Apache et déplacera la ressource vers un autre nœud en cas de panne.

# pcs resource create httpd_ser apache configfile = "/ etc / httpd / conf / httpd.conf" statusurl = "http://127.0.0.1/server-status" --group apache

Production:

Nom d'agent supposé 'ocf: battement de coeur: apache' (déduit de 'apache')

Puisque nous n'utilisons pas de clôture, désactivez-la (STONITH). Vous devez désactiver pour démarrer les ressources du cluster, mais la désactivation de STONITH dans l'environnement de production n'est pas recommandée.

# jeu de propriétés pcs activé par stonith = false

Vérifiez l'état du cluster.

[[email protected]    ~]# statut des pcs

Production:

Nom du cluster: itzgeek_cluster
Pile: corosync
DC actuel: node2.itzgeek.local (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition avec quorum
Dernière mise à jour: ven.5 juil.09: 26: 04 2019
Dernière modification: Fri Jul 5 09:25:58 2019 par root via cibadmin sur node1.itzgeek.local

2 nœuds configurés
3 ressources configurées

En ligne: [ node1.itzgeek.local node2.itzgeek.local ]

Liste complète des ressources:

 Groupe de ressources: apache
                    httpd_fs (ocf :: heartbeat: Filesystem): Démarré node1.itzgeek.local
     httpd_vip (ocf :: heartbeat: IPaddr2): démarré node1.itzgeek.local
     httpd_ser (ocf :: heartbeat: apache): Démarré node1.itzgeek.local







Statut du démon:
  corosync: actif / activé
  stimulateur cardiaque: actif / activé
  pcsd: actif / activé

Vérifier le cluster haute disponibilité

Une fois le cluster opérationnel, pointez un navigateur Web vers l'adresse IP virtuelle Apache. Vous devriez obtenir une page Web comme ci-dessous.

Configurer un cluster haute disponibilité sur CentOS 7 - Apache Web Server
Configurer un cluster haute disponibilité sur CentOS 7 – Apache Web Server

Tester le cluster haute disponibilité

Vérifions le basculement des ressources du nœud en arrêtant le cluster sur le nœud actif.

[[email protected]    ~]# pcs cluster stop node1.itzgeek.local

Conclusion

C'est tout. Dans cet article, vous avez appris à configurer un cluster haute disponibilité sur CentOS 7. Veuillez nous faire part de vos réflexions dans la section des commentaires.

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.