MODOP – Partie 3 – Cluster ZFS/GlusterFS et NFS HA

1. Installation et ctdb/NFS (3 nodes)

Installation des paquets nécessaire à NFS(3 nodes)

[root@clustergfs0x ~]# dnf install nfs-utils ctdb rpcbind quota-rpc
[root@clustergfs0x ~]# yum -y install fuse neon wget

2. Configuration NFS export (3 nodes)

[root@clustergfs01 /]# echo /mnt/tank *(rw,fsid=1200,sync,no_root_squash,no_all_squash) " >> /etc/exports

[root@clustergfs01 ~]# scp /etc/exports root@clustergfs02:/etc/exports
[root@clustergfs01 ~]# scp /etc/exports root@clustergfs03:/etc/exports

[root@clustergfs0x ~]# exportfs -arv
exporting *:/mnt/tank

[root@clustergfs0x ~]# exportfs -s
/mnt/tank *(sync,wdelay,hide,no_subtree_check,fsid=1234,sec=sys,rw,no_root_squash,no_all_squash)

Création User chris Samba ⬄ chris Linux (3 nodes)

[root@clustergfs0x ~]# cat /etc/passwd|grep chris

Ajout Répertoire User « chris » sur GlusterFS

[root@clustergfs01 ~]# mkdir -p /mnt/tank/chris
[root@clustergfs01 ~]# chown chris.chris /mnt/tank/chris
[root@clustergfs01 ~]# chmod 775 /mnt/tank/chris

3. Configuration NFS Server (3 nodes)

[root@clustergfs01 ~]# vi /etc/sysconfig/nfs

CTDB_MANAGES_NFS=yes
NFS_TICKLE_SHARED_DIRECTORY=/mnt/ctdb/nfs-tickles
STATD_PORT=595
STATD_OUTGOING_PORT=596
MOUNTD_PORT=597
RQUOTAD_PORT=598
LOCKD_UDPPORT=599
LOCKD_TCPPORT=599
STATD_SHARED_DIRECTORY=/mnt/ctdb/nfs-state
NFS_HOSTNAME="clustergfs"
STATD_HOSTNAME="$NFS_HOSTNAME -P "$STATD_SHARED_DIRECTORY/$PUBLIC_IP" -H /etc/ctdb/statd-callout -p 97"
[root@clustergfs01 ~]# scp /etc/sysconfig/nfs root@clustergfs02:/etc/sysconfig/nfs
[root@clustergfs01 ~]# scp /etc/sysconfig/nfs root@clustergfs03:/etc/sysconfig/nfs

4. Configuration Cluster ctdb

Configuration fichier « ctdb.conf » (node01)

[root@clustergfs01 ~]# echo "CTDB_RECOVERY_LOCK=/mnt/ctdb/ctdb.lock" > /mnt/ctdb/ctdb.conf
[root@clustergfs01 ~]# echo "CTDB_NODES=/mnt/ctdb/nodes" >> /mnt/ctdb/ctdb.conf
[root@clustergfs01 ~]# echo "CTDB_PUBLIC_ADDRESSES=/mnt/ctdb/public_addresses" >> /mnt/ctdb/ctdb.conf
[root@clustergfs01 ~]# echo "CTDB_MANAGES_NFS=yes" >> /mnt/ctdb/ctdb.conf
[root@clustergfs01 ~]# echo "CTDB_DEBUGLEVEL=ERR" >> /mnt/ctdb/ctdb.conf
[root@clustergfs01 ~]# cat /mnt/ctdb/ctdb.conf

Configuration fichier « nodes » – IP privés  (node01)

[root@clustergfs01 ~]# echo "172.17.186.20" >> /mnt/ctdb/nodes
[root@clustergfs01 ~]# echo "172.17.186.21" >> /mnt/ctdb/nodes
[root@clustergfs01 ~]# echo "172.17.186.22" >> /mnt/ctdb/nodes
[root@clustergfs01 ~]# cat /mnt/ctdb/nodes

Configuration fichier « public_addresses » – IP VIP

[root@clustergfs01 ~]# echo "192.168.1.100/24 bond1" >> /mnt/ctdb/public_addresses
[root@clustergfs01 ~]# echo "192.168.1.101/24 bond1" >> /mnt/ctdb/public_addresses
[root@clustergfs01 ~]# echo "192.168.1.102/24 bond1" >> /mnt/ctdb/public_addresses
[root@clustergfs01 ~]# cat /mnt/ctdb/public_addresses

Centraliser les fichiers conf CTDB (3 nodes)

[root@clustergfs0x ~]# ln -s /mnt/ctdb/nodes /etc/ctdb/nodes
[root@clustergfs0x ~]# ln -s /mnt/ctdb/public_addresses /etc/ctdb/public_addresses

[root@clustergfs01 ~]# cp /etc/ctdb/ctdb.conf-old /mnt/ctdb/ctdb.conf
[root@clustergfs0x ~]# mv /etc/ctdb/ctdb.conf{,-old}
[root@clustergfs0x ~]# ln -s /mnt/ctdb/ctdb.conf /etc/ctdb/ctdb.conf

[root@clustergfs0x ~]# chmod +x /etc/ctdb/functions
[root@clustergfs0x ~]# mkdir -p /etc/ctdb/events/functions

Copy des Clefs locales (3 nodes)

[root@clustergfs01 ~]# ssh-copy-id root@172.17.186.20
[root@clustergfs02 ~]# ssh-copy-id root@172.17.186.21
[root@clustergfs03 ~]# ssh-copy-id root@172.17.186.22

Activation Script dans ctdb (3 nodes)

[root@clustergfs0x ~]# ctdb event script enable legacy 10.interface
[root@clustergfs0x ~]# ctdb event script enable legacy 00.ctdb
[root@clustergfs0x ~]# ctdb event script enable legacy 01.reclock
[root@clustergfs0x ~]# ctdb event script enable legacy 05.system
[root@clustergfs0x ~]# ctdb event script enable legacy 60.nfs
[root@clustergfs0x ~]# ctdb event script enable legacy 06.nfs

Ajout des rules firewall NFS (3 nodes)

[root@clustergfs0x ~]# firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} --zone=public
[root@clustergfs0x ~]# firewall-cmd --reload

[root@clustergfs0x ~]# firewall-cmd --list-service
mountd nfs rpc-bind ssh

Démarrer le cluster CTDB (node01)

[root@clustergfs01 ~]# onnode -p all service ctdb start

Enable service CTDB (3 nodes)

[root@clustergfs0x ~]# systemctl enable ctdb
[root@clustergfs0x ~]# ctdb scriptstatus

[root@clustergfs0x ~]# netstat -antp |grep ctdb

Check cluster CTDB (node01)

[root@clustergfs01 ~]# onnode -q all ctdb ping

[root@clustergfs01 ~]# ctdb status

[root@clustergfs01 ~]# ctdb ip

[root@clustergfs01 ~]# ctdb ip -v

[root@clustergfs01 ~]# ip a |grep bond1

[root@clustergfs02 ~]# ip a |grep bond1

[root@clustergfs03 ~]# ip a |grep bond1

Check communication des VIP (node01)

[root@clustergfs01 ~]# ping -c 2 192.168.1.100
[root@clustergfs01 ~]# ping -c 2 192.168.1.101
[root@clustergfs01 ~]# ping -c 2 192.168.1.102

Check des logs ctdb

[root@clustergfs01 ~]# tail -f /var/log/log.ctdb

[root@clustergfs02 ~]# tail -f /var/log/log.ctdb

[root@clustergfs03 ~]# tail -f /var/log/log.ctdb

Ajout des Hosts Lan Public (3 nodes)

[root@clustergfs0x ~]# vi /etc/hosts
192.168.1.14 clustersmb01
192.168.1.15 clustersmb02
192.168.1.16 clustersmb03

5. Connexion d’un Client Linux 

Mise à jour

[root@clustergfs-client ~]# dnf -y update

Désactivation SELinux

[root@clustergfs-client ~]# setenforce 0
[root@clustergfs-client ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Installation des paquets NFS client

[root@clustergfs-client ~]# yum -y install epel-release
[root@clustergfs-client ~]# yum install nfs-utils

Ajout VIP clustergfs

[root@clustergfs-client ~]# vi /etc/hosts

192.168.1.100 clustergfs
192.168.1.101 clustergfs
192.168.1.102 clustergfs

Check Découvert du Share

[root@clustergfs-client ~]# showmount -e 192.168.1.100
Export list for 192.168.1.100:
/mnt/tank *
[root@clustergfs-client ~]# showmount -e 192.168.1.101
Export list for 192.168.1.101:
/mnt/tank *
[root@clustergfs-client ~]# showmount -e 192.168.1.102
Export list for 192.168.1.102:
/mnt/tank *

Montage du share sur le Client

[root@clustergfs-client ~]# mkdir /mnt/data
[root@clustergfs-client ~]# mount -t nfs clustergfs:/mnt/tank /mnt/data
[root@clustergfs-client ~]# df -Th /mnt/data

6. Test de résilience HA NFS – copie de fichier

Check écriture simultanée

Sur le client

[root@clustergfs-client /]# echo "Deuxieme Test - NFS Ecriture" >> /mnt/data/NFS.txt
[root@clustergfs-client /]# cat /mnt/data/NFS.txt
Deuxieme Test - NFS Ecriture

Sur les serveurs clusterGFS

[root@clustergfs01 ~]# cat /mnt/tank/NFS.txt
Deuxieme Test - NFS Ecriture

[root@clustergfs02 ~]# cat /mnt/tank/NFS.txt
Deuxieme Test - NFS Ecriture

[root@clustergfs03 ~]# cat /mnt/tank/NFS.txt
Deuxieme Test - NFS Ecriture

Check résilience avec perte d’un nœud

Sur le client

[root@clustergfs-client ~]# cd /mnt/data/
[root@clustergfs-client data]# yum install wget
[root@clustergfs-client data]# wget https://download.fedoraproject.org/pub/fedora/linux/releases/37/Server/x86_64/iso/Fedora-Server-dvd-x86_64-37-1.7.iso

Sur les serveurs

Faisons tomber le nœuds 1

[root@clustergfs01 ~]# shutdown –h 0


On peut constater que le client linux télécharge toujours son fichier avec la perte du node01.

Faisons tomber le nœuds 2

On peut constater que le client continu de télécharge le fichier ISO malgré la perte du node01 et du node02.

Check intégrité préservée du fichier ISO

On redémarre le node1 et node2

Sur le client

[root@clustergfs-client data]# sha1sum Fedora-Server-dvd-x86_64-37-1.7.iso
5e40acfff1de12182535b5bf5cf3804f32ffeed4 Fedora-Server-dvd-x86_64-37-1.7.iso

Checksum du fichier – client SHA1: 5e40acfff1de12182535b5bf5cf3804f32ffeed4

Sur les serveurs

[root@clustergfs01 ~]# sha1sum /mnt/tank/Fedora-Server-dvd-x86_64-37-1.7.iso
5e40acfff1de12182535b5bf5cf3804f32ffeed4 /mnt/tank/Fedora-Server-dvd-x86_64-37-1.7.iso

Checksum du fichier – node01 SHA1: 5e40acfff1de12182535b5bf5cf3804f32ffeed4

[root@clustergfs02 ~]# sha1sum /mnt/tank/Fedora-Server-dvd-x86_64-37-1.7.iso
5e40acfff1de12182535b5bf5cf3804f32ffeed4 /mnt/tank/Fedora-Server-dvd-x86_64-37-1.7.iso

Checksum du fichier – node02 SHA1: 5e40acfff1de12182535b5bf5cf3804f32ffeed4

[root@clustergfs03 ~]# sha1sum /mnt/tank/Fedora-Server-dvd-x86_64-37-1.7.iso
5e40acfff1de12182535b5bf5cf3804f32ffeed4 /mnt/tank/Fedora-Server-dvd-x86_64-37-1.7.iso

Checksum du fichier – node03 SHA1: 5e40acfff1de12182535b5bf5cf3804f32ffeed4

Views: 2

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *