« LINUX:Pacemaker et ISCSI » : différence entre les versions

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 28 : Ligne 28 :
  192.168.1.72 sv2.home.dom
  192.168.1.72 sv2.home.dom
   
   
  192.168.1.73 cl1.data.dom  
  192.168.1.73 cl1.home.dom  
    
    
  # serveur mail
  # serveur mail
Ligne 40 : Ligne 40 :


=Pacemaker et Corosync - configuration de base=
=Pacemaker et Corosync - configuration de base=
La [[LINUX:Pacemaker - Configuration de base|Configuration de base de Pacemaker]] doit être effectuée avec quelques modifications car nous avons trois machines dans le cluster au lieu de deux. Quelques modifications seront apportées ensuite.
La [[LINUX:Pacemaker - Configuration de base|Configuration de base de Pacemaker]] doit être effectuée avec quelques modifications car nous avons trois machines dans le cluster au lieu de deux. Quelques modifications seront apportées ensuite. Nous allons passer rapidement en revue ces opérations.




==Opérations locales==
Sur chaque machine:
* le mot de passe de l'utilisateur "hacluster" est à implémenter. "Chasse4321Eau" pour mémoire.
* le service "pcsd.service" est à configurer et est lancé.




==Initialisation du cluster==
Pour initialiser le cluster, on effectue ces opérations sur une seule machine du cluster:
pcs host auth sv1.home.dom sv2.home.dom cl1.home.dom -u hacluster -p Chasse4321Eau
pcs cluster setup fo_cluster \
  sv1.home.dom addr=192.168.1.71 sv2.home.dom addr=192.168.1.72 cl1.home.dom addr=192.168.1.73 \
  transport knet ip_version=ipv4 link transport=udp mcastport=5420




==Calcul du quorum==
Si un des deux serveurs Target est indisponible, le disque SCSI sur le client Initiator doit être arrêté pour éviter tout blocage et si ce disque est indisponible, des fonctions du client sont aussi perturbées. D'autre part, si le client est arrêté, les services ISCSI sur les serveurs Target n'ont plus de sens. Dans notre situation, il faut que les trois machines soient opérationnelles sinon on arrête les ressources Pacemaker.
Ce problème se résume au calcul du '''quorum'''. Ici il doit être de trois.
Par défaut, chaque machine a un vote; ce qui nous fait au total, trois votes disponibles.
Un autre paramètre important est le nombre de votes souhaités ou "'''expected_votes'''". Par défaut il correspond au nombre total de votes apportés par les machines du cluster.
Le "''quorum'''" se calcule de la façon suivante. On divise l'"'''expected_votes'''" par deux; on en prend la partie entière auquel on ajoute une unité.
Dans notre situation, le quorum:
(3 votes)/2 + 1 = 2
Or il nous doit être de 3.
Pour y arriver, si on impose que l'"'''expected_votes'''" soit de 4, le problème est résolu:
(4 votes souhaités)/2 + 1 = 3
==Configuration de Corosync==
Pour atteindre ce quorum, il faut adapter sur chaque machine du cluster, le fichier "/etc/corosync/corosync.conf".
La dernière commande a créé ce fichier. Dans la section "quorum", on va ajouter l'option " expected_votes: 4".
Ce fichier devient:
----
totem {
    version: 2
    cluster_name: fo_cluster
    transport: knet
    ip_version: ipv4
    crypto_cipher: aes256
    crypto_hash: sha256
    cluster_uuid: 27a0ab5f25e94c038b7f9c22e1de41be
    interface {
        knet_transport: udp
        linknumber: 0
        mcastport: 5420
    }
}
 
nodelist {
    node {
        ring0_addr: 192.168.1.71
        name: sv1.home.dom
        nodeid: 1
    }
 
    node {
        ring0_addr: 192.168.1.72
        name: sv2.home.dom
        nodeid: 2
    }
 
    node {
        ring0_addr: 192.168.1.73
        name: cl1.home.dom
        nodeid: 3
    }
}
 
quorum {
    provider: corosync_votequorum
    '''expected_votes: 4'''
}
 
logging {
    to_logfile: yes
    logfile: /var/log/cluster/corosync.log
    to_syslog: yes
    timestamp: on
}
----
==Lancement du cluster==
Pour lancer l'ensemble, on exécute les commandes suivantes à partir d'une seule machine:
pcs cluster enable --all
pcs cluster start --all
On n'oublie pas d'activer les trois services sur les trois machines du cluster:
systemctl enable pcsd.service corosync.service pacemaker.service
==Fin de la configuration==
Par la même occasion exécutez la fin de la configuration de base:
pcs property set stonith-enabled=false
pcs property set no-quorum-policy=stop
La dernière spécifie que si le quorum n'est pas atteint, les ressources de Pacemaker sont arrêtées.
==Vérification du quorum==
Sur chaque machine, exécutez cette commande:
pcs status corosync
qui donne:
----
Quorum information
------------------
Date:            Wed Mar  1 15:38:49 2023
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          1
Ring ID:          1.14e
Quorate:          Yes
Votequorum information
----------------------
Expected votes:  4
Highest expected: 4
Total votes:      3
'''Quorum:          3'''
Flags:            Quorate
Membership information
----------------------
    Nodeid      Votes Name
          1          1 sv1.home.dom (local)
          2          1 sv2.home.dom
          3          1 cl1.home.dom
----
Si ce n'est pas le cas sur un machine, redémarrez les trois services:
systemctl restart pcsd.service corosync.service pacemaker.service





Version du 9 mars 2023 à 18:48


retour au menu de la Haute disponibilité


But

Si les serveurs ISCSI ou Target s'arrêtent de fonctionner, les espaces disques ISCSI sur le client ou Initiator doivent être démontés de toute urgence sinon certaines fonctions de cette machine seront bloquées. Nous allons utilisé Pacemaker pour déconnecter les disques ISCSI sur l'Initiator ISCSI quand un des Targets ISCSI s'arrête de fonctionner.


Matériel et adressage IP

Dans notre exemple, nous utilisons deux serveurs ("target") et un client ("initiator"). Le schéma ci-dessous nous montre l'adressage IP et le nom de ces trois machines. Cette configuration a été utilisée dans l'article sur ISCSI.

LINUX:Iscsi.pdf


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.72 sv2.home.dom
 
192.168.1.73 cl1.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. Mais les services "tgtd.service" sur les serveurs Target ne sont pas lancés et le service "iscsid.service" ainsi que les montages des disques ISCSI "/datab" et "/datac" (fichier "/etc/fstab") sur le client Initiator ne sont pas lancés. C'est Pacemaker qui s'en chargera.


Pacemaker et Corosync - configuration de base

La Configuration de base de Pacemaker doit être effectuée avec quelques modifications car nous avons trois machines dans le cluster au lieu de deux. Quelques modifications seront apportées ensuite. Nous allons passer rapidement en revue ces opérations.


Opérations locales

Sur chaque machine:

  • le mot de passe de l'utilisateur "hacluster" est à implémenter. "Chasse4321Eau" pour mémoire.
  • le service "pcsd.service" est à configurer et est lancé.


Initialisation du cluster

Pour initialiser le cluster, on effectue ces opérations sur une seule machine du cluster:

pcs host auth sv1.home.dom sv2.home.dom cl1.home.dom -u hacluster -p Chasse4321Eau
pcs cluster setup fo_cluster \
 sv1.home.dom addr=192.168.1.71 sv2.home.dom addr=192.168.1.72 cl1.home.dom addr=192.168.1.73 \
 transport knet ip_version=ipv4 link transport=udp mcastport=5420


Calcul du quorum

Si un des deux serveurs Target est indisponible, le disque SCSI sur le client Initiator doit être arrêté pour éviter tout blocage et si ce disque est indisponible, des fonctions du client sont aussi perturbées. D'autre part, si le client est arrêté, les services ISCSI sur les serveurs Target n'ont plus de sens. Dans notre situation, il faut que les trois machines soient opérationnelles sinon on arrête les ressources Pacemaker.

Ce problème se résume au calcul du quorum. Ici il doit être de trois.

Par défaut, chaque machine a un vote; ce qui nous fait au total, trois votes disponibles.

Un autre paramètre important est le nombre de votes souhaités ou "expected_votes". Par défaut il correspond au nombre total de votes apportés par les machines du cluster.

Le "quorum'" se calcule de la façon suivante. On divise l'"expected_votes" par deux; on en prend la partie entière auquel on ajoute une unité.

Dans notre situation, le quorum:

(3 votes)/2 + 1 = 2

Or il nous doit être de 3.

Pour y arriver, si on impose que l'"expected_votes" soit de 4, le problème est résolu:

(4 votes souhaités)/2 + 1 = 3


Configuration de Corosync

Pour atteindre ce quorum, il faut adapter sur chaque machine du cluster, le fichier "/etc/corosync/corosync.conf". La dernière commande a créé ce fichier. Dans la section "quorum", on va ajouter l'option " expected_votes: 4".

Ce fichier devient:


totem {
   version: 2
   cluster_name: fo_cluster
   transport: knet
   ip_version: ipv4
   crypto_cipher: aes256
   crypto_hash: sha256
   cluster_uuid: 27a0ab5f25e94c038b7f9c22e1de41be
   interface {
       knet_transport: udp
       linknumber: 0
       mcastport: 5420
   }
}
 
nodelist {
   node {
       ring0_addr: 192.168.1.71
       name: sv1.home.dom
       nodeid: 1
   }
 
   node {
       ring0_addr: 192.168.1.72
       name: sv2.home.dom
       nodeid: 2
   }
 
   node {
       ring0_addr: 192.168.1.73
       name: cl1.home.dom
       nodeid: 3
   }
}
 
quorum {
   provider: corosync_votequorum
   expected_votes: 4
}
 
logging {
   to_logfile: yes
   logfile: /var/log/cluster/corosync.log
   to_syslog: yes
   timestamp: on
}


Lancement du cluster

Pour lancer l'ensemble, on exécute les commandes suivantes à partir d'une seule machine:

pcs cluster enable --all
pcs cluster start --all

On n'oublie pas d'activer les trois services sur les trois machines du cluster:

systemctl enable pcsd.service corosync.service pacemaker.service


Fin de la configuration

Par la même occasion exécutez la fin de la configuration de base:

pcs property set stonith-enabled=false
pcs property set no-quorum-policy=stop

La dernière spécifie que si le quorum n'est pas atteint, les ressources de Pacemaker sont arrêtées.


Vérification du quorum

Sur chaque machine, exécutez cette commande:

pcs status corosync

qui donne:


Quorum information
------------------
Date:             Wed Mar  1 15:38:49 2023
Quorum provider:  corosync_votequorum
Nodes:            3
Node ID:          1
Ring ID:          1.14e
Quorate:          Yes
Votequorum information
----------------------
Expected votes:   4
Highest expected: 4
Total votes:      3
Quorum:           3
Flags:            Quorate
Membership information
----------------------
    Nodeid      Votes Name
         1          1 sv1.home.dom (local)
         2          1 sv2.home.dom
         3          1 cl1.home.dom

Si ce n'est pas le cas sur un machine, redémarrez les trois services:

systemctl restart pcsd.service corosync.service pacemaker.service






retour au menu de la Haute disponibilité