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

In Fortsetzung des Artikels „Schrittmacher-Cluster-Speicher + DRBD (Dual Primary) + CTDB“ präsentiere ich eine vollständig fertige und funktionierende Version der HA-Cluster-Dateibälle für 2-4 Knoten für Centos 6 und Centos 7. Wenn Sie dies implementieren möchten, sind Sie entweder pervers oder Sie Sie haben keine Wahl getroffen und es ist notwendig, sie irgendwie umzusetzen.

Ich werde einfach den Puffkuchen beschreiben, den wir sammeln werden:

Erstellen Sie auf dem Blockgerät die Tabelle gpt => eine Partition für den gesamten Speicherplatz unter der Gruppe lvm => Gruppe von lvm-Volumes für den gesamten verfügbaren Speicherplatz => lvm-Volume für den gesamten verfügbaren Speicherplatz => drbd device => dlm => markieren Sie sie als physisches Volume des lvm für den gesamten verfügbaren Speicherplatz => darauf eine Clustergruppe von lvm-Volumes => lvm-Volume auf dem gesamten verfügbaren Speicherplatz => markiere fs gfs2 => verbinde dich mit dem Mount-Punkt.
Und all dies wird vom Schrittmacher mit einer virtuellen IP-Adresse gesteuert.


Wenn Sie trotzdem fortfahren möchten, lesen Sie unter dem Schnitt weiter.

Von der Quelle benötigen wir Folgendes:
CPU 1 Kern
Mindestens 1 GB Arbeitsspeicher
15 GB Festplatte + der Ort, an dem Sie Daten speichern
Festplatten können eine beliebige Anzahl sein, auch eine.

Wenn Sie ein Laufwerk haben, ist es besser, es wie folgt zu partitionieren:
Partitionstabelle gpt => 200 MB Partition für efi (optional) => 1 GB Partition für / boot => alles andere unter dem lvm.

Auf einem lvm-Volume müssen Sie 2 Volume-Gruppen erstellen. Die erste Gruppe von Volumes unter dem Betriebssystem ist 10 GB + doppelt so groß wie RAM, jedoch nicht mehr als 4 GB.

Wer auch immer das gesagt hat, aber das Austauschen hilft manchmal sehr. Deshalb erstellen wir in der lvm-Gruppe eine lvm-Partition zum Austauschen, die der doppelten Größe des Arbeitsspeichers entspricht, jedoch nicht mehr als 4 GB, und der verbleibende Speicherplatz wird dem Betriebssystemstamm zugewiesen.

Die zweite Gruppe von lvm für die Datenspeicherung. Erstellen Sie einen lvm-Abschnitt für den verbleibenden Speicherplatz.

Unter den Bedingungen erhielten wir 2 virtuelle Maschinen und das ist alles. Es ist besser, Ceph für den korrekten Betrieb auf 6 Knoten zu setzen, mindestens 4, und es wäre schön, etwas Erfahrung damit zu haben, sonst funktioniert es wie eine Wolkenmaus. Glanz für Hunderttausende kleiner Dateien in Bezug auf die Leistung wird nicht funktionieren, es wird in der Weite des Habré viele Male geschwächt. ipfs, glanz und dergleichen haben die gleichen anforderungen wie ceph oder noch mehr.

Lass uns den Kampf beginnen! Ich hatte zwei virtuelle Maschinen unter CentOS 7 mit 2 Festplatten.


1) Pacemaker Version 1.1 funktioniert nicht korrekt mit IP. Aus Gründen der Zuverlässigkeit fügen wir Einträge zu / etc / hosts hinzu:

192.168.0.1 node1 192.168.0.2 node2 

2) In Standard-Repositorys befindet sich kein DRBD, daher müssen Sie ein Drittanbieter-Repository anschließen.

 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) Installieren Sie drbd Version 8.4

 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 eine Festplattenpartition und konfigurieren Sie 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) Erstellen Sie die Konfigurationsdatei für die 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) Wir entfernen den drbd-Dienst aus dem Autoload (später ist der Schrittmacher dafür verantwortlich), erstellen Metadaten für die drbd-Festplatte und erhöhen die Ressource

 systemctl disable drbd drbdadm create-md r0 drbdadm up r0 

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

 drbdadm primary --force r0 

9) Setzen Sie den Schrittmacher

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

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

 echo CHANGEME | passwd --stdin hacluster 

11) Führen Sie pcsd auf beiden Knoten aus

 systemctl enable pcsd systemctl start pcsd 

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

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

13) Erstellen Sie einen Cluster mit dem Namen samba_cluster

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

14) Knoten aktivieren und Dienste zum Start hinzufügen und starten

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

15) Da wir virtuelle Maschinen als Server haben, deaktivieren wir den STONITH-Mechanismus, da wir keine Mechanismen für deren Verwaltung haben. Wir haben auch nur 2 Autos, also deaktivieren wir auch das Quorum, es funktioniert nur mit 3 oder mehr Maschinen.

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

16) VIP erstellen

 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) Erstellen Sie eine drbd-Ressource

 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) Installieren Sie die erforderlichen Pakete für clvm und bereiten Sie clvm vor

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

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

 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) Wir verbieten LVM, einen 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/* 


21) Erstellen Sie eine CLVM-Partition. Wir machen nur eine Notiz
 vgcreate -A y -cy cl_vg /dev/drbd1 lvcreate -l 100%FREE -n r0 cl_vg 

22) Wir markieren den Abschnitt in gfs2. Hier ist es wichtig, dass die Sperrtabelle denselben Namen hat wie unser Cluster in peacemaker. Wir machen nur eine Notiz

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

23) 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 interleave=true 

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

 yum install -y samba ctdb cifs-utils 

25) 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 

26) Erstellen Sie eine Datei mit einer Liste der Knoten / etc / ctdb / node
ACHTUNG! Nach jeder Adresse in der Liste sollte ein Zeilenvorschub stehen. Andernfalls wird der Knoten während der Initialisierung nicht eingeschaltet.

 192.168.0.1 192.168.0.2 

27) Erstellen Sie abschließend die ctdb-Ressource

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

28) Wir legen die Lastwarteschlange und die Ressourcenabhängigkeiten fest, die ausgeführt werden sollen

 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) Wir stellen die Warteschlange zum Stoppen von Ressourcen ein. Andernfalls kann Ihr Computer zum Zeitpunkt des Herunterfahrens einfrieren

 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


Der Ball selbst kann auf nfs und auf samba sein, aber die Verbindung zu ihnen erfolgt per IP-Failover, obwohl der HA-Speicher selbst. Wenn Sie eine vollständige HA wünschen, müssen Sie anstelle von Samba und NFS iSCSI installieren und eine Verbindung über Multipath herstellen. Darüber hinaus können Sie Splitbrain bekommen, wenn einer der Knoten stirbt, und wenn der Master steigt, wird dies nicht der Fall sein. Ich habe überprüft, ob das Betriebssystem nach dem Anheben des Knotens, wenn kein Master vorhanden ist, in den veralteten Modus wechselt und nicht zum Master wird, um Split Brains zu vermeiden. Quorum-Varianten (DRBD und / oder Schrittmacher) und Verzerrungen durch kaskadierende DRBD-Konstruktionen nach Ihrer Konfiguration sind aufgrund ihrer hohen Komplexität unhaltbar. Ein anderer Administrator wird lange brauchen, um dies herauszufinden. Obwohl mit dem, was ich nicht besser geschrieben habe, tu es nicht.

Referenzen:

Es gibt eine ähnliche Anweisung mit Syntax für Schrittmacher 1.0.

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


All Articles