NFS (Network File System) ist der am weitesten verbreitete Server, um Dateien über das Netzwerk bereitzustellen. Mit dem NFS-Server können wir Ordner über das Netzwerk freigeben und zugelassene Clients oder Systeme können auf diese freigegebenen Ordner zugreifen und sie in ihren Anwendungen verwenden. Wenn es um die Produktionsumgebung geht, sollten wir den nfs-Server mit hoher Verfügbarkeit konfigurieren, um den Single Point of Failure auszuschließen.
In diesem Artikel besprechen wir, wie wir nfs-Server-Clustering mit hoher Verfügbarkeit (aktiv-passiv) mit Pacemaker unter CentOS 7 oder RHEL 7 konfigurieren können
Im Folgenden finden Sie meine Labordetails, die ich für diesen Artikel verwendet habe,
- NFS-Server 1 (nfs1.example.com) – 192.168.1.40 – Minimal CentOS 7 / RHEL 7
- NFS-Server 2 (nfs2.example.com) – 192.168.1.50 – Minimal CentOS 7 / RHEL 7
- NFS-Server-VIP – 192.168.1.51
- Firewall aktiviert
- SELinux aktiviert
Beziehen Sie sich auf die folgenden Schritte, um NFS-Server-Aktiv-Passiv-Clustering auf CentOS 7 / RHEL 7 zu konfigurieren
Schritt 1) Legen Sie den Hostnamen auf beiden NFS-Servern fest und aktualisieren Sie die Datei /etc/hosts
Melden Sie sich bei beiden nfs-Servern an und legen Sie den Hostnamen als „nfs1.example.com“ bzw. „nfs2.example.com“ fest, indem Sie den Befehl hostnamectl verwenden. Das Beispiel ist unten gezeigt
~]# hostnamectl set-hostname "nfs1.example.com"~]# exec bash
Aktualisieren Sie die /etc/hosts-Datei auf beiden NFS-Servern,
192.168.1.40 nfs1.example.com192.168.1.50 nfs2.example.com
Schritt 2) Aktualisieren Sie beide NFS-Server und installieren Sie pcs-Pakete
Verwenden Sie den folgenden Befehl „yum update“, um alle Updates auf beiden NFS-Servern anzuwenden, und starten Sie dann einmal neu.
~]# yum aktualisieren &&neu starten
Installieren Sie pcs- und fence-agent-Pakete auf beiden NFS-Servern,
[[email protected] ~]# yum install -y pcs fence-agents-all[[email protected] ~]# yum install -y pcs fence-agents-all
Sobald die Pakete für PCs und Fencing-Agenten installiert sind, lassen Sie PC-bezogene Ports in der Betriebssystem-Firewall von beiden NFS-Servern zu,
~]# firewall-cmd --permanent --add-service=high-availability~]# firewall-cmd --reload
Starten und aktivieren Sie nun den pcsd-Dienst auf beiden NFS-Knoten mit den folgenden Befehlen,
~]# systemctl enable pcsd~]# systemctl start pcsd
Schritt 3) NFS-Knoten authentifizieren und einen Cluster bilden
Setzen Sie das Passwort auf hacluster user, der pcsd-Dienst verwendet diesen Benutzer, um die Cluster-Knoten zu authentifizieren, also setzen wir zuerst das Passwort auf beiden Knoten auf hacluster user,
[[email protected] ~]# echo "enter_password" | passwd --stdin hacluster[[email protected] ~]# echo "enter_password" | passwd --stdin hacluster
Authentifizieren Sie nun die Cluster-Knoten. In unserem Fall wird nfs2.example.com auf nfs1.example.com authentifiziert. Führen Sie den folgenden pcs cluster-Befehl auf „nfs1“
aus[[E-Mail geschützt] ~]# Stk. vor>Jetzt ist es an der Zeit, einen Cluster mit dem Namen „nfs_cluster“ zu bilden “ und fügen Sie beide nfs-Knoten hinzu. Führen Sie unten „pcs cluster setup“ aus ”-Befehl von einem beliebigen NFS-Knoten,
[[email protected] ~]# pcs cluster setup --start --name nfs_cluster nfs1.example.com \ nfs2.example.comAktivieren Sie den pcs-Cluster-Dienst auf beiden Knoten, damit die Knoten nach dem Neustart automatisch dem Cluster beitreten. Führen Sie den folgenden Befehl von einem der NFS-Knoten aus,
[[email protected] ~]# pcs cluster enable --allnfs1.example.com:Cluster aktiviertnfs2.example.com:Cluster aktiviert[[email protected] ~]#Schritt 4) Fencing-Gerät für jeden Cluster-Knoten definieren
Fencing ist der wichtigste Teil eines Clusters. Wenn einer der Knoten fehlerhaft wird, entfernt das Fencing-Gerät diesen Knoten aus dem Cluster. In Pacemaker wird das Fechten mit der Ressource Stonith (Shoot The Other Node In The Head) definiert.
In diesem Tutorial verwenden wir eine gemeinsam genutzte Festplatte der Größe 1 GB (/dev/sdc) als Fencing-Gerät. Lassen Sie uns zuerst die ID der /dev/sdc-Festplatte herausfinden
[[email protected] ~]# ls -l /dev/disk/by-id/
Notieren Sie sich die ID der Festplatte /dev/sdc, wie wir es in „pcs stonith“ tun werden ”-Befehl.
Führen Sie nun den folgenden Befehl „pcs stonith“ von einem der Knoten aus, um ein Fencing-Gerät (disk_fencing) zu erstellen.
[[email protected] ~]# pcs stonith create disk_fencing fence_scsi \ pcmk_host_list="nfs1.example.com nfs2.example.com" \ pcmk_monitor_action="metadata" pcmk_reboot_action="off" \ devices="/dev/disk /by-id/wwn-0x6001405e49919dad5824dc2af5fb3ca0" \ meta provided="unfencing"[[email protected] ~]#Überprüfen Sie den Status von stonith mit dem folgenden Befehl,
[[email protected] ~]# pcs stonith show disk_fencing (stonith:fence_scsi): Gestartet nfs1.example.com[[email protected] ~]#Führen Sie „pcs status“ aus ” Befehl zum Anzeigen des Status des Clusters
[[email protected] ~]# pcs statusCluster name:nfs_clusterStack:corosyncAktueller DC:nfs2.example.com (Version 1.1.16-12.el7_4.7-94ff4df) \ - Partition mit QuorumLetzte Aktualisierung:Sonntag, 4. März 03 :18:47 2018Letzte Änderung:Sonntag 4. März 03:16:09 2018 durch root über cibadmin auf nfs1.example.com2 Knoten konfiguriert1 Ressource konfiguriertOnline:[ nfs1.example.com nfs2.example.com ]Vollständige Liste der Ressourcen: disk_fencing ( stonith:fence_scsi): Gestartet nfs1.example.comDaemon Status: corosync:active/enabled pacemaker:active/enabled pcsd:active/enabled[[email protected] ~]#Hinweis: Wenn Ihre Cluster-Knoten die virtuellen Maschinen sind und auf VMware gehostet werden, können Sie „fence_vmware_soap verwenden „Fechtagent. Um „fence_vmware_soap“ als Fencing-Agent zu konfigurieren, folgen Sie den folgenden logischen Schritten:
1) Überprüfen Sie, ob Ihre Cluster-Knoten den VMware-Hypervisor oder Vcenter erreichen können
# fence_vmware_soap -a-l -p \ --ssl -z -v -o list |egrep "(nfs1.example.com|nfs2.example.com)"or# fence_vmware_soap -a -l -p \ --ssl -z -o list |egrep "(nfs1.example.com|nfs2.example.com)" Wenn Sie die VM-Namen in der Ausgabe sehen können, ist dies in Ordnung. Andernfalls müssen Sie prüfen, warum Cluster-Knoten keine Verbindung zu Esxi oder VCenter herstellen können.
2) Definieren Sie das Fencing-Gerät mit dem folgenden Befehl,
# pcs stonith create vmware_fence fence_vmware_soap \ pcmk_host_map="node1:nfs1.example.com;node2:nfs2.example.com" \ ipaddr=ssl=1 login= passwd= 3) Überprüfen Sie den stonith-Status mit dem folgenden Befehl,
# Stk. stonith ShowSchritt 5) Installieren Sie nfs und formatieren Sie die gemeinsam genutzte nfs-Festplatte
Installieren Sie das Paket „nfs-utils“ auf beiden NFS-Servern
[[email protected] ~]# yum install nfs-utils -y[[email protected] ~]# yum install nfs-utils -yBeenden und deaktivieren Sie die lokale „nfs-Sperre ” Dienst auf beiden Knoten, da dieser Dienst vom Schrittmacher gesteuert wird
[[email protected] ~]# systemctl stop nfs-lock && systemctl disable nfs-lock[[email protected] ~]# systemctl stop nfs-lock && systemctl disable nfs-lockNehmen wir an, wir haben eine gemeinsam genutzte Festplatte „/dev/sdb“ mit einer Größe von 10 GB zwischen zwei Clusterknoten. Erstellen Sie darauf eine Partition und formatieren Sie sie als xfs-Dateisystem
[[email protected] ~]# fdisk /dev/sdb
Führen Sie den partprobe-Befehl auf beiden Knoten aus und starten Sie einmal neu.
~]# partprobeFormatieren Sie nun „/dev/sdb1“ als xfs-Dateisystem
[[E-Mail geschützt] ~] # MKFS.xfs / dev / sdb1meta-data =/ dev / sdb1 isize =256 agcount =4, agsize =655296 BLKS =sectsz =512 attr =2, projid32bit =1 =crc =0 FINOBT =0DATA =BSIZE =4096 Blöcke =2621184, IMAXPCT =25 =SUNIT =0 SWIDTH =0 BLKSNAMING =Version 2 BSIZE =4096 ASCII-CI =0 FTYPE =0LOG =Internes Protokoll Bsiense =4096 Blöcke =2560, Version =2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[[email protected] ~]#Erstellen Sie einen Einhängepunkt für dieses Dateisystem auf beiden Knoten,
[[email protected] ~]# mkdir /nfsshare[[email protected] ~]# mkdir /nfsshareSchritt 6) Konfigurieren Sie alle erforderlichen NFS-Ressourcen auf Clusterknoten
Im Folgenden sind die erforderlichen NFS-Ressourcen aufgeführt:
- Dateisystemressource
- nfsserver-Ressource
- Exportfs-Ressource
- IPaddr2 Floating-IP-Adressressource
Für die Dateisystem-Ressource benötigen wir einen gemeinsam genutzten Speicher zwischen den Cluster-Knoten, wir haben bereits in den obigen Schritten eine Partition auf der gemeinsam genutzten Festplatte (/dev/sdb1) erstellt, also werden wir diese Partition verwenden. Verwenden Sie unten „pcs resource create ” Befehl zum Definieren von Dateisystemressourcen von einem der Knoten,
[[email protected] ~]# pcs resource create nfsshare Filesystem device=/dev/sdb1 \ directory=/nfsshare fstype=xfs --group nfsgrp[[email protected] ~]#Im obigen Befehl haben wir das NFS-Dateisystem als „nfsshare“ definiert “ unter der Gruppe „nfsgrp “. Ab jetzt werden alle nfs-Ressourcen unter der Gruppe nfsgrp erstellt.
Erstellen Sie eine nfsserver-Ressource mit dem Namen „nfsd ‘ mit dem folgenden Befehl,
[[email protected] ~]# pcs resource create nfsd nfsserver \ nfs_shared_infodir=/nfsshare/nfsinfo --group nfsgrp[[email protected] ~]#Erstellen Sie exportfs Ressource mit dem Namen „nfsroot ”
[[email protected] ~]# pcs resource create nfsroot exportfs clientspec="192.168.1.0/24" options=rw,sync,no_root_squash directory=/nfsshare fsid=0 --group nfsgrp[[email protected] ~] #Im obigen Befehl gibt clientpec die erlaubten Clients an, die auf nfsshare zugreifen können
Erstellen Sie NFS IPaddr2 Ressource mit dem folgenden Befehl,
[[email protected] ~]# pcs resource create nfsip IPaddr2 ip=192.168.1.51 \ cidr_netmask=24 --group nfsgrp[[email protected] ~]#Sehen Sie sich jetzt den Cluster an und überprüfen Sie ihn anhand des PC-Status
[[email protected] ~]Status von # PCs
Sobald Sie mit den NFS-Ressourcen fertig sind, lassen Sie NFS-Serverports in der Betriebssystem-Firewall von beiden NFS-Servern zu,
~]# firewall-cmd --permanent --add-service=nfs~]# firewall-cmd --permanent --add-service=mountd~]# firewall-cmd --permanent --add-service=rpc-bind~]# firewall-cmd --reloadSchritt 7) Versuchen Sie, die NFS-Freigabe auf Clients zu mounten
Versuchen Sie nun, die nfs-Freigabe mit dem Mount-Befehl zu mounten, das Beispiel ist unten gezeigt
[[email protected] ~]# mkdir /mnt/nfsshare[[email protected] ~]# mount 192.168.1.51:/ /mnt/nfsshare/[[email protected] ~]# df -Th /mnt/nfsshareFilesystem Typ Größe Verwendet Verfügbar Nutzung % Eingebaut auf 192.168.1.51:/ nfs4 10G 32M 10G 1 % /mnt/nfsshare[[email protected] ~]#[[email protected] ~]# cd /mnt/nfsshare/[[email protected ] nfsshare]# lsnfsinfo[[email protected] nfsshare]#Stoppen Sie für Cluster-Tests den Cluster-Dienst auf einem der Knoten und prüfen Sie, ob auf nfsshare zugegriffen werden kann oder nicht. Nehmen wir an, ich stoppe den Clusterdienst auf „nfs1.example.com“
[[email protected] ~]# pcs cluster stopStopping Cluster (pacemaker)...Stopping cluster (corosync)...[[email protected] ~]#Gehen Sie jetzt zum Client-Rechner und prüfen Sie, ob nfsshare noch zugänglich ist. In meinem Fall kann ich immer noch darauf zugreifen und Dateien darauf erstellen.
[[email protected] nfsshare]# Berührungstest[[email protected] nfsshare]#Aktivieren Sie nun den Clusterdienst auf „nfs1.example.com“ mit dem folgenden Befehl,
[[email protected] ~]# pcs cluster startStarting Cluster...[[email protected] ~]#Das ist alles aus diesem Artikel, er bestätigt, dass wir NFS-Aktiv-Passiv-Clustering mit Pacemaker erfolgreich konfiguriert haben. Bitte teilen Sie Ihr Feedback und Ihre Kommentare im Kommentarbereich unten mit.