Clustering mit CentOS 7 und Pacemaker Corosync

In diesem Artikel möchte ich die Einrichtung eines Clusters auf einem CentOS 7 System zeigen.
Eine Veränderung zu CentOS 6 ist der Wegfall des Cluster Ressource Managers (crm), der jetzt durch pcs ersetzt wurde.

In diesem Beispiel habe ich zwei Maschinen, die bei mir folgende Daten haben:

node1.floaz.de
Interne IP: 192.168.100.2
Externe IP: 1.2.3.4

node2.floaz.de
Interne IP: 192.168.100.3
Externe IP: 1.2.3.5

Die Netzwerkkarten habe ich bereits konfiguriert!
Mittels ip addr bitte einmal überprüfen, ob die Knoten richtig konfiguriert sind. Beide sollten sich gegenseitig anpingen können.

Wir schließen die Netzwerkkonfiguration ab indem wir auf beiden Nodes den Hostname (/etc/hostname) setzen und beide interne Adressen in /etc/hosts aufnehmen.

Auf beiden Knoten sollte folgendes stehen:
vi /etc/hosts
192.168.100.2 node1.floaz.de
192.168.100.3 node2.floaz.de

Nun muss noch die Firewall auf beiden Knoten eingerichtet werden:
firewall-cmd --zone=trusted --add-source=192.168.100.0/24 --permanent
firewall-cmd --zone=trusted --add-service=ha-cluster --permanent
firewall-cmd --reload

Anschließend installieren wir corosync und pacemaker:
yum install corosync pacemaker pcs
systemctl start pcsd.service
systemctl enable pcsd.service

Auf beiden Rechnern wurde automatisch ein Benutzer hacluster erstellt. Für diesen müssen wir das Kennwort setzen, damit die Knoten sich mithilfe dessen jeweils authentifizieren können.
Auf beiden Nodes:
passwd hacluster
pcs cluster auth node1.floaz.de
pcs cluster auth node2.floaz.de
Username: hacluster
Password: ********

Auf einem der beiden Nodes starten wir nun die initiale Konfiguration des Clusters:
pcs cluster setup --start --name cluster123 node1.floaz.de node2.floaz.de --transport udpu

Außerdem schalten wir quorum und stonith aus, da wir nur ein 2-Knoten-Cluster haben. Dies hat zur Folge, dass wenn nur das interne Netzwerk zusammenbricht, beide Knoten denken, der jeweils andere ist down, und sich dadurch selber als primary sehen. Das sollte man zumindest im Hinterkopf haben!

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

Nun legen wir eine sog. Service-IP-Ressource an, über die dann der jeweils aktive Knoten von außen erreichbar ist.
pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=1.2.3.6 cidr_netmask=32 nic=eth1 op monitor interval=20s

Anschließend schauen wir uns den Status des Clusters an:

pcs status

Online: [ testnode1 testnode2 ]
Full list of resources:
VirtualIP (ocf::heartbeat:IPaddr2): Started node1.floaz.de

Zum Schluss noch autostart auf beiden Knoten einrichten:

systemctl enable corosync.service
systemctl enable pacemaker.service

Fertig.