Schrittmacher-Cluster-Speicher + DRBD (Dual Primary) + ctdb

Guten Tag, Habrovsk. Es gab eine Aufgabe - fehlertoleranten hochverfügbaren Speicher mit pacamaker + drbd (im dualen Primärmodus) + clvmd + ctdb bereitzustellen, der auf dem Server bereitgestellt wird. Ich werde reservieren, dass ich zum ersten Mal auf all diese Tools stoße und freue mich über Kritik und Ergänzungen / Korrekturen. Im Internet gibt es entweder keine speziellen Anweisungen für dieses Bundle oder die Informationen sind veraltet. Dies funktioniert im Moment, aber es gibt ein Problem, dessen Lösung ich hoffentlich in naher Zukunft finden werde. Alle Aktionen müssen auf beiden Knoten ausgeführt werden, sofern nicht anders angegeben.

Fangen wir an. Wir haben zwei virtuelle Maschinen unter CentOS 7.

1) Führen Sie sie aus Gründen der Zuverlässigkeit in / etc / hosts ein

192.168.0.1 node1 192.168.0.2 node2 

2) In Standard-Repositorys befindet sich kein DRBD. Sie müssen daher eine Verbindung zu einem Drittanbieter herstellen.

 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

3) Installieren Sie drbd Version 8.4 (ich konnte 9.0 im dualen Primärmodus nicht bekommen)

 yum install -y kmod-drbd84 drbd84-utils 

4) Aktivieren und aktivieren Sie das drbd-Kernelmodul beim Start

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

5) Erstellen Sie die Konfigurationsdatei für die Ressource drbd /etc/drbd.d/r0.res

 resource r0 { protocol C; device /dev/drbd0; meta-disk internal; disk /dev/sdb; 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"; } on node1 { address 192.168.0.1:7788; } on node2 { address 192.168.0.2:7788; } 

6) Deaktivieren Sie die drbd-Einheit (später ist der Schrittmacher dafür verantwortlich), erstellen Sie Metadaten für die drbd-Festplatte und erhöhen Sie die Ressource

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

7) Machen Sie auf dem ersten Knoten die Ressource primär

 drbdadm primary --force r0 

8) Setzen Sie den Schrittmacher

 yum install -y pacemaker pcs resource-agents 

9) Legen Sie ein Kennwort für den Benutzer-Hacluster für die Autorisierung auf Knoten fest

 echo CHANGEME | passwd --stdin hacluster 

10) Führen Sie den Schrittmacher auf beiden Knoten aus

 systemctl enable pcsd systemctl start pcsd 

11) Melden Sie sich beim Cluster an. Ab diesem Zeitpunkt erledigen wir alles auf einem Knoten

 pcs cluster auth node1 node2 -u hacluster 

12) Erstellen Sie einen Cluster mit dem Namen samba_cluster

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

13) Knoten aktivieren

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

14) Da wir virtuelle Maschinen als Server haben, deaktivieren wir den STONITH-Mechanismus

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

15) Erstellen Sie einen VIP

 pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.0.10 cidr_netmask=24 op monitor interval=60s 

16) Erstellen Sie eine drbd-Ressource

 pcs cluster cib drbd_cfg pcs -f drbd_cfg resource create DRBD ocf:linbit:drbd drbd_resource=r0 op monitor interval=60s pcs -f drbd_cfg resource master DRBDClone DRBD master-max=2 master-node-max=1 clone-node-max=1 clone-max=2 notify=true interleave=true pcs cluster cib-push drbd_cfg 

17) Installieren Sie die erforderlichen Pakete für clvm und bereiten Sie clvm vor

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

18) Fügen Sie die Ressource dlm und clvd zum Schrittmacher hinzu

 pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true pcs constraint colocation add clvmd-clone with dlm-clone 

19) Zu diesem Zeitpunkt sollte das Starten von clvmd und dlm einen Fehler auslösen. Wir gehen zum Webinterface-Schrittmacher 192.168.0.1 : 2224. Wenn der Cluster nicht angezeigt wird, fügen Sie ihn zu "Vorhandene bearbeiten" hinzu. Gehen Sie als Nächstes zu Resources - dlm - optionale Argumente und setzen Sie den Wert allow_stonith_disabled = true

20) Wir stellen die Warteschlange zum Laden von Ressourcen ein

 pcs constraint order start DRBDClone then dlm-clone pcs constraint order start dlm-clone then clvmd-clone 

21) Verbieten Sie LVM, den Cache zu schreiben und ihn zu löschen. Auf beiden Knoten

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

22) Wir bearbeiten /etc/lvm/lvm.conf so, dass lvm / dev / sdb nicht sieht. Auf beiden Knoten

 # This configuration option has an automatic default value. # filter = [ "a|.*/|" ] filter = [ "r|^/dev/sdb$|" ] 

23) Erstellen Sie eine CLVM-Partition. Wir machen nur eine Notiz

 $ vgcreate -Ay -cy cl_vg /dev/drbd0 Physical volume "/dev/drbd0" successfully created. Clustered volume group "cl_vg" successfully created $ lvcreate -l100%FREE -n r0 cl_vg Logical volume "r0" created. 

24) Wir markieren den Abschnitt in gfs2

 mkfs.gfs2 -j2 -p lock_dlm -t drbd-gfs2:r0 /dev/cl_vg/r0 

25) Fügen Sie als Nächstes die Halterung dieses Abschnitts in Schrittmacher hinzu und weisen Sie ihn an, nach clvmd zu booten

 pcs resource create fs ocf:heartbeat:Filesystem device="/dev/cl_vg/r0" directory="/mnt/" fstype="gfs2" --clone pcs constraint order start clvmd-clone then fs-clone 

26) Jetzt ist ctdb an der Reihe, Samba auszuführen

 yum install -y samba ctdb cifs-utils 

27) Bearbeiten Sie die Konfiguration /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 

28) Erstellen Sie eine Datei mit einer Liste von Knoten. ACHTUNG! Nach jeder IP in der Liste der Knoten sollte ein Zeilenvorschub vorhanden sein. Andernfalls fällt der Knoten während der Initialisierung aus.

 cat /etc/ctdb/nodes 192.168.0.1 192.168.0.2 

29) Zur config /etc/samba/smb.conf hinzufügen

 [global] clustering = yes private dir = /mnt/ctdb lock directory = /mnt/ctdb idmap backend = tdb2 passdb backend = tdbsam [test] comment = Cluster Share path = /mnt browseable = yes writable = yes 

30) Erstellen Sie abschließend die ctdb-Ressource und geben Sie an, dass sie danach geladen werden soll

 pcs constraint order start fs-clone then samba 

Und nun zu dem Problem, das ich noch nicht entschieden habe. Wenn Sie den Knoten neu starten, bricht die gesamte Gruppe zusammen, da drbd Zeit benötigt, um / dev / drbd0 zu aktivieren. DLM sieht die Partition nicht, da sie noch nicht aktiviert ist und nicht startet usw. Problemumgehung besteht darin, die Partition manuell zu aktivieren und die Schrittmacherressourcen neu zu starten

 vgchage -ay pcs resource refresh 

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


All Articles