Pacemaker de stockage en cluster + DRBD (double primaire) + samba

Dans la continuité de l' article "Pacemaker Cluster Storage + DRBD (Dual primaire) + ctdb", je présente une version entièrement finie et fonctionnelle des boules de fichiers de cluster HA pour 2-4 nœuds pour centos 6 et centos 7. Si vous voulez implémenter cela, vous êtes soit un pervers, soit vous Ils n’ont donné aucun choix, et il est nécessaire de le mettre en œuvre d’une manière ou d’une autre.

Je décrirai simplement le gâteau feuilleté que nous collecterons:

Sur le périphérique de bloc, créez la table gpt => une partition pour tout l'espace sous le lvm => groupe de volumes lvm pour tout l'espace disponible => volume lvm pour tout l'espace disponible => drbd device => dlm => marquez-le comme volume physique du lvm pour tout l'espace disponible => dessus un groupe de clusters de volumes lvm => volume lvm sur tout l'espace disponible => baliser fs gfs2 => se connecter au point de montage.
Et tout cela sera piloté par un stimulateur cardiaque avec une adresse IP virtuelle.


Si vous voulez toujours continuer, lisez la suite sous la coupe.

De la source, nous avons besoin des éléments suivants:
CPU 1 core
1 Go minimum de mémoire vive
Disque de 15 Go + l'endroit où vous stockerez les données
Les disques peuvent ĂŞtre n'importe quel nombre, mĂŞme un.

Si vous avez un lecteur, il est préférable de le partitionner comme suit:
Table de partition gpt => 200 Mo de partition pour efi (facultatif) => 1 Go de partition pour / boot => tout le reste sous le lvm.

Sur un volume lvm, vous devez créer 2 groupes de volumes. Le premier groupe de volumes sous le système d'exploitation est de 10 Go + deux fois la taille de la RAM, mais pas plus de 4 Go.

Celui qui a dit cela, mais le swapping aide parfois beaucoup, donc sur le groupe lvm, nous créons une partition lvm pour le swap égale à deux fois la taille de la RAM, mais pas plus de 4 Go et l'espace restant est alloué à la racine du système d'exploitation.

Le deuxième groupe de LVM pour le stockage de données. Créez une section lvm pour l'espace restant.

Selon les termes, on nous a donné 2 machines virtuelles et c'est tout. Il est préférable de mettre Ceph pour un fonctionnement correct sur 6 nœuds, au moins 4, et ce serait bien d'avoir une certaine expérience avec lui, sinon cela fonctionnera comme cloudmouse. Gluster pour des centaines de milliers de petits fichiers en termes de performances ne fonctionnera pas, il est affaibli à maintes reprises dans l'immensité du Habré. ipfs, lustre et similaires ont les mêmes exigences que ceph ou même plus.

Commençons la bataille! J'avais deux machines virtuelles sur CentOS 7 avec 2 disques.


1) Pacemaker version 1.1 ne fonctionne pas correctement avec ip, donc pour plus de fiabilité nous ajoutons des entrées à / etc / hosts:

192.168.0.1 node1 192.168.0.2 node2 

2) Il n'y a pas de DRBD dans les référentiels standard, vous devez donc en connecter un tiers.

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum localinstall -y http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/$(curl -s http://ftp.nluug.nl/os/Linux/distr/elrepo/elrepo/el7/x86_64/RPMS/ | grep -oP ">elrepo-release.*rpm" | cut -c 2-) 

3) Installez drbd version 8.4

 yum install -y kmod-drbd84 drbd84-utils 

4) Activer et activer le module du noyau drbd au démarrage

 modprobe drbd echo drbd > /etc/modules-load.d/drbd.conf 

5) Créez une partition de disque et configurez lvm

 echo -e "g\nn\n\n\n\nt\n8e\nw\n" | fdisk /dev/sdb vgcreate drbd_vg /dev/sdb1 lvcreate -l +100%FREE --name r0 drbd_vg 

6) Créez le fichier de configuration pour la ressource drbd /etc/drbd.d/r0.res

 resource r0 { protocol C; device /dev/drbd1; meta-disk internal; disk /dev/mapper/drbd_vg-r0; net { allow-two-primaries; } disk { fencing resource-and-stonith; } handlers { fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; after-resync-target "/usr/lib/drbd/crm-unfence-peer.sh"; } startup { become-primary-on both; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

7) Nous supprimons le service drbd de l'autochargement (un stimulateur cardiaque ultérieur en sera responsable), créons des métadonnées pour le disque drbd, augmentons la ressource

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

8) Sur le premier nœud, rendez la ressource principale

 drbdadm primary --force r0 

9) Mettez le stimulateur cardiaque

 yum install -y pacemaker corosync pcs resource-agents fence-agents-all 

10) Définissez un mot de passe pour le hacluster utilisateur pour l'autorisation sur les nœuds

 echo CHANGEME | passwd --stdin hacluster 

11) Exécutez pcsd sur les deux nœuds

 systemctl enable pcsd systemctl start pcsd 

12) Connectez-vous au cluster. A partir de cette étape, nous faisons tout sur un seul nœud

 pcs cluster auth node1 node2 -u hacluster -p CHANGEME --force 

13) Créez un cluster nommé samba_cluster

 pcs cluster setup --force --name samba_cluster node1 node2 

14) Activer les nœuds et ajouter des services au démarrage et les démarrer

 pcs cluster enable --all pcs cluster start --all systemctl start corosync pcsd pacemaker systemctl enable corosync pcsd pacemaker 

15) Puisque nous avons des machines virtuelles comme serveurs, nous désactivons le mécanisme STONITH, car nous n'avons aucun mécanisme pour les gérer. Nous n'avons également que 2 voitures, nous désactivons donc également le quorum, cela ne fonctionne qu'avec 3 machines ou plus.

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

16) Créez VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=32 nic=eth0 clusterip_hash=sourceip-sourceport op monitor interval=1s 

17) Créer une ressource drbd

 pcs resource create DRBD1 ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s master master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true op start interval=0s timeout=240 promote interval=0s timeout=130 monitor interval=150s role=Master monitor interval=155s role=Slave 

18) Installez les packages nécessaires pour clvm et préparez clvm

 yum install -y lvm2-cluster gfs2-utils /sbin/lvmconf --enable-cluster 

19) Ajoutez la ressource dlm et clvd au stimulateur cardiaque

 pcs resource create dlm ocf:pacemaker:controld allow_stonith_disabled=true clone meta interleave=true pcs resource create clvmd ocf:heartbeat:clvm clone meta interleave=true 

20) Nous interdisons à LVM d'écrire un cache et de l'effacer. Sur les deux nœuds

 sed -i 's/write_cache_state = 1/write_cache_state = 0/' /etc/lvm/lvm.conf rm /etc/lvm/cache/* 


21) Créez une partition CLVM. Nous ne faisons qu'une seule note
 vgcreate -A y -cy cl_vg /dev/drbd1 lvcreate -l 100%FREE -n r0 cl_vg 

22) Nous balisons la section dans gfs2, ici il est important que la table de verrouillage ait le mĂŞme nom que notre cluster dans peacemaker. Nous ne faisons qu'une seule note

 mkfs.gfs2 -j 2 -p lock_dlm -t samba_cluster:r0 /dev/cl_vg/r0 

23) Ensuite, ajoutez le montage de cette section dans le stimulateur cardiaque et dites-lui de démarrer après clvmd

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt" fstype="gfs2" clone interleave=true 

24) Maintenant c'est au tour de ctdb de lancer samba

 yum install -y samba ctdb cifs-utils 

25) Modifiez la configuration /etc/ctdb/ctdbd.conf

 CTDB_RECOVERY_LOCK="/mnt/ctdb/.ctdb.lock" CTDB_NODES=/etc/ctdb/nodes CTDB_MANAGES_SAMBA=yes CTDB_LOGGING=file:/var/log/ctdb.log CTDB_DEBUGLEVEL=NOTICE 

26) Créez un fichier avec une liste de nœuds / etc / ctdb / nœuds
ATTENTION! Après chaque adresse de la liste, il devrait y avoir un saut de ligne. Sinon, le nœud ne s'allumera pas lors de l'initialisation.

 192.168.0.1 192.168.0.2 

27) Enfin, créez la ressource ctdb

 pcs resource create samba systemd:ctdb clone meta interleave=true 

28) Nous définissons la file d'attente de chargement et les dépendances de ressources à exécuter

 pcs constraint colocation add dlm-clone with DRBD1-master pcs constraint colocation add clvmd-clone with dlm-clone pcs constraint colocation add fs-clone with clvmd-clone pcs constraint colocation add samba-clone with fs-clone pcs constraint colocation add virtual_ip with samba-clone pcs constraint order promote DRBD1-master then dlm-clone pcs constraint order start dlm-clone then clvmd-clone pcs constraint order start clvmd-clone then fs-clone pcs constraint order start fs-clone then samba-clone 

29) Nous définissons la file d'attente pour l'arrêt des ressources, sans cela, votre machine peut geler au moment de l'arrêt

 pcs constraint order stop fs-clone then stop clvmd-clone pcs constraint order stop clvmd-clone then stop dlm-clone pcs constraint order stop dlm-clone then stop DRBD1-master pcs constraint order stop samba-clone then stop fs-clone 

PS


La balle elle-même peut être sur nfs et sur samba, mais la connexion à eux est un basculement par IP, bien que le stockage HA lui-même. Si vous voulez une haute disponibilité complète, au lieu de samba et nfs, vous devez installer iSCSI et vous connecter via plusieurs chemins. De plus, vous pouvez obtenir le cerveau partagé si l'un des nœuds meurt, et lorsque le maître se lève, il ne le fera pas. J'ai vérifié que si le système d'exploitation s'éteint correctement, puis après avoir élevé le nœud lorsqu'il n'y a pas de maître, il passe en mode obsolète et ne devient pas le maître afin d'éviter les cerveaux séparés. Les options de quorum (DRBD et / ou stimulateur cardiaque) et toute distorsion des constructions DRBD en cascade après votre configuration sont intenables en raison de leur grande complexité, un autre administrateur prendra beaucoup de temps à comprendre. Bien qu'avec ce que j'ai écrit pas mieux, ne le faites pas.

Références:

Il existe une instruction similaire avec la syntaxe pour pacemaker 1.0.

Source: https://habr.com/ru/post/fr441210/


All Articles