LINUX:Pacemaker - ISCSI en Failover et SBD (fence)

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de la Haute disponibilité


But

A la configuration précédente, nous ajoutons la notion de "Fence" avec la couche SBD. Le logiciel SBD utilise un device de type Watchdog (chien de garde) qui permet d'arrêter la machine client ISCSI Initiator quand elle ne plus atteindre sa cible ISCSI de référence. Cette situation se présente, par exemple, dans le cas d'une défaillance réseau. Cette arrêt permet d'éviter des problèmes de corruptions de données sur les ressources distantes. Nous n'utiliserons qu'un serveur ISCSI Target mais nous garderons l'approche Failover.


Matériel et adressage IP

Dans notre exemple, nous utilisons un serveur ISCSI ("target") et deux clients ISCSI ("initiator"). Le schéma ci-dessous nous montre l'adressage IP et le nom de ces trois machines. En outre pour mettre la fonction Failover, une adresse IP virtuelle est ajoutée. Elle passera d'un client ISCSI à l'autre.

LINUX:Iscsi2.pdf

Le cluster Pacemaker ne comportera que les deux clients ISCSI (Initiator): "cl1.home.dom" et "cl2.home.dom".


Prérequis

Configurations de base

En premier, les Prérequis doivent être effectués.


Fichier "hosts"

Sur chaque machine du cluster, on ajoute un nom aux différentes adresses réseaux. On le fait en local dans le fichier "/etc/hosts" suivant le schéma ci-dessus. Son contenu devient:


127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 
192.168.1.71 sv1.home.dom
 
192.168.1.73 cl1.home.dom 
192.168.1.74 cl2.home.dom 
192.168.1.75 cluster.home.dom 
 
# serveur mail
192.168.1.110 servermail.home.dom home.dom


ISCSI

Nous nous baserons sur la configuration de l'article sur ISCSI à part qu'on double le client Initiator. Mais le service "iscsi.service" ainsi que le montage du disque ISCSI "/datab" (fichier "/etc/fstab") sur les clients Initiator n'est pas lancé. C'est Pacemaker qui s'en chargera.

Nous expliciterons les quelques changements et leurs buts sera explicités par la suite.


Liste des parties à configurer

Cette configuration est plus compliquée et doit suivre une série d'étapes dans le bon ordre.

  • Configuration du serveur ISCSI Target
  • Configuration du côté des clients ISCSI Initiator
  • Configuration de Watchdog sur les clients
  • Configuration de SBD sur les clients
  • Configuration de la base de Pacemaker sur les clients
  • Configuration de SBD-fence sous Pacemaker sur les clients
  • Configuration de ressources finales de Pacemaker sur les clients


ISCSI - Target

Sur le serveur ISCSI Target "sv1.home.dom", nous avons besoin de deux espaces disques. Nous les mettrons sur le même disque.

  • la première partition va être utilisées par le processus SBD que nous verrons par la suite. Cette partition n'a pas besoin de beaucoup d'espace; nous utilisons 1MB. Il servira a l'échange de courts messages. Attention, cet espace ne doit pas avoir d'interaction avec d'autres espaces disques distants tels DRBD ou un RAID distant.
  • la seconde partition sera utilisée comme espace disque distant par les clients. Le reste du disque lui sera attribué.


Partitionnement

Sur un disque vierge que nous nommerons "/dev/sdb", on le partitionne avec "fdisk":

fdisk /dev/sdb

Voici la suite des commandes (en gras) et de l'affichage lié:


Bienvenue dans fdisk (util-linux 2.38.1).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.
 
Commande (m pour l'aide) : p
Disque /dev/sdb : 149,05 GiB, 160041885696 octets, 312581808 secteurs
Modèle de disque : ST3160815AS
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 043ACF55-DA46-944F-82A0-DB8258F243DC
 
Commande (m pour l'aide) : n
Numéro de partition (1-128, 1 par défaut) :
Premier secteur (2048-312581774, 2048 par défaut) :
Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (2048-312581774, 312580095 par défaut) : +1M
Une nouvelle partition 1 de type « Linux filesystem » et de taille 1 MiB a été créée. 
 
Commande (m pour l'aide) : n
Numéro de partition (2-128, 2 par défaut) :
Premier secteur (4096-312581774, 4096 par défaut) :
Dernier secteur, +/-secteurs ou +/-taille{K,M,G,T,P} (4096-312581774, 312580095 par défaut) :
Une nouvelle partition 2 de type « Linux filesystem » et de taille 149 GiB a été créée.
 
Commande (m pour l'aide) : p
Disque /dev/sdb : 149,05 GiB, 160041885696 octets, 312581808 secteurs
Modèle de disque : ST3160815AS
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 043ACF55-DA46-944F-82A0-DB8258F243DC
 
Périphérique Début       Fin  Secteurs Taille Type
/dev/sdb1     2048      4095      2048     1M Système de fichiers Linux
/dev/sdb2     4096 312580095 312576000   149G Système de fichiers Linux
 
Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.
Synchronisation des disques.


Configuration de Tgt

La configuration générale de Tgt se trouve dans le répertoire "/etc/tgt" et la configuration spécifique qui nous concerne sera mise dans le fichier "/etc/tgt/conf.d/diskb.conf. Nous allons y inclure les deux partitions créées.

Voici son contenu:


<target iqn.2023-02.dom.home.sv1:sv1.target1>
   backing-store /dev/sdb1
   initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
   initiator-name iqn.2023-02.dom.home.sv:sv.initiator02
   incominguser diskuser Eupen2Marron
   initiator-address 192.168.1.73
   initiator-address 192.168.1.74
</target>
 
<target iqn.2023-02.dom.home.sv1:sv1.target2>
   backing-store /dev/sdb2
   initiator-name iqn.2023-02.dom.home.sv:sv.initiator01
   initiator-name iqn.2023-02.dom.home.sv:sv.initiator02
   incominguser diskuser Eupen2Marron
   initiator-address 192.168.1.73
   initiator-address 192.168.1.74
</target>

Le premier "Target" sera utilisé par le processus SBD et le second pour le stockage de données.

En outre, comme nous avons ici deux clients ISCSI Initiator, chacun a son propre "initiator-name". Si nous ne faisons pas cette distinction, les connexions se feront et se déferont perpétuellement et rapidement sans stabilité.

Nous devons permettre aux clients à se connecter avec la clause "initiator-address".

Nous ajoutons une authentification avec l'option "incominguser".


Il nous reste à activer et lancer le service "tgtd.service":

systemctl enable tgtd.service
systemctl start tgtd.service


On peut vérifier la configuration avec la commande:

tgtadm --mode target --op show

qui donne:


Target 1: iqn.2023-02.dom.home.sv1:sv1.target1
   System information:
       Driver: iscsi
       State: ready
   I_T nexus information:
   LUN information:
       LUN: 0
           Type: controller
           SCSI ID: IET     00010000
           SCSI SN: beaf10
           Size: 0 MB, Block size: 1
           Online: Yes
           Removable media: No
           Prevent removal: No
           Readonly: No
           SWP: No
           Thin-provisioning: No
           Backing store type: null
           Backing store path: None
           Backing store flags:
       LUN: 1
           Type: disk
           SCSI ID: IET     00010001
           SCSI SN: beaf11
           Size: 1 MB, Block size: 512
           Online: Yes
           Removable media: No
           Prevent removal: No
           Readonly: No
           SWP: No
           Thin-provisioning: No
           Backing store type: rdwr
           Backing store path: /dev/sdb1
           Backing store flags:
   Account information:
       diskuser
   ACL information:
       192.168.1.73
       192.168.1.74
       iqn.2023-02.dom.home.sv:sv.initiator01
       iqn.2023-02.dom.home.sv:sv.initiator02
Target 2: iqn.2023-02.dom.home.sv1:sv1.target2
   System information:
       Driver: iscsi
       State: ready
   I_T nexus information:
   LUN information:
       LUN: 0
           Type: controller
           SCSI ID: IET     00020000
           SCSI SN: beaf20
           Size: 0 MB, Block size: 1
           Online: Yes
           Removable media: No
           Prevent removal: No
           Readonly: No
           SWP: No
           Thin-provisioning: No
           Backing store type: null
           Backing store path: None
           Backing store flags:
       LUN: 1
           Type: disk
           SCSI ID: IET     00020001
           SCSI SN: beaf21
           Size: 160039 MB, Block size: 512
           Online: Yes
           Removable media: No
           Prevent removal: No
           Readonly: No
           SWP: No
           Thin-provisioning: No
           Backing store type: rdwr
           Backing store path: /dev/sdb2
           Backing store flags:
   Account information:
       diskuser
   ACL information:
       192.168.1.73
       192.168.1.74
       iqn.2023-02.dom.home.sv:sv.initiator01
       iqn.2023-02.dom.home.sv:sv.initiator02





De plus, sur la machine client "cl2.home.dom" (Initiator), le fichier "/etc/iscsi/initiatorname.iscsi" contient le second InitiatorName introduit sur les machines serveurs ISCSI (target):


InitiatorName=iqn.2023-02.dom.home.sv:sv.initiator02

Sur la machine client "cl1.home.dom" (Initiator), ce même fichier reste inchangé:


InitiatorName=iqn.2023-02.dom.home.sv:sv.initiator01





retour au menu de la Haute disponibilité