LizardFS HA mit Pacemaker

Diesen angepassten Ressource Agent mfsmaster anlegen.
/usr/lib/ocf/resource.d/lizardfs/mfsmaster und ausführbar gemacht werden.

Das Original findet man in einen alten Git commit allerdings heißt dort das File metadataserver.in
Eine etwas neuere Version hab ich hier gefunden Githup
Ich musste ein Paar Sachen anpassen damit das Funktioniert.

Die Lizarfs Config Files unter /etc/mfs/ müssen den User mfs (oder dem User unter dem man LizardFS laufen lässt) gehören.

In der Datei /etc/mfs/mfsmaster.cfg müssen folgende Werte gesetzt sein.

  • PERSONALITY = ha-cluster-managed
  • ADMIN_PASSWORD = PASSWORT1234
  • WORKING_USER = mfs
  • WORKING_GROUP = mfs
  • EXPORTS_FILENAME = /etc/mfs/mfsexports.cfg
  • DATA_PATH = /var/lib/mfs
  • MASTER_HOST = mfsmaster
  • MATOCL_LISTEN_HOST = *
  • MATOCL_LISTEN_PORT = 9421

Den MASTER_HOST Eintrag, In meinem fall mfsmaster zeigt per DNS auf die VIP die im Pacemaker eingerichtet ist.

Die Konfigurationen müssen auf beiden Nodes Identisch sein.

  • mfsmaster.cfg
  • mfsgoals.cfg
  • mfsexports.cfg

Wenn der Server Startet, wird der mfsmaster Prozess automatisch als shadow master gestartet. Pacemaker übernimmt dann die Konfiguration (Master / Shadow Master)

Pacemaker Ressourcen erstellen

Ressource für Lizardfs

crm configure primitive resLIZARDFS-MASTER ocf:lizardfs:mfsmaster \
op monitor role="Master" interval="5s" \
op monitor role="Slave" interval="10s" \
meta failure-timeout="30s" resource-stickiness="0"

Ressource VIP

crm configure primitive resVIP0 IPaddr2 \
params ip="IP-ADRESSE" nic="eth0" cidr_netmask="24" \
op monitor interval="10s" on-fail="restart" \
meta target-role="Started" failure-timeout="30s" resource-stickiness="0"

Master/Slave Clone von Lizardfs erstellen

crm configure ms msLIZARDFS resLIZARDFS-MASTER \
meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"

Reihenfolge IP nach Dienst

crm configure order orderIP-AFTER-MASTER inf: msLIZARDFS:promote resVIP0:start

IP und Master zusammen

crm configure colocation coloIP-WITH-MASTER inf: resVIP0 msLIZARDFS:Master

Pacemaker Status

So sollte das im Pacemaker Status ausschauen.

crm_mon -1rnfRVc
Current DC: lizardfs-master01 (1) (version 1.1.14-70404b0) - partition with quorum 
2 nodes and 3 resources configured

Node lizardfs-master01 (1): online
resVIP0 (ocf::heartbeat:IPaddr2): Started
lizardfs-master (ocf::lizardfs:mfsmaster): Master
Node lizardfs-master02 (2): online
lizardfs-master (ocf::lizardfs:mfsmaster): Started

Inactive resources:

Migration Summary:
* Node lizardfs-master01 (1):
* Node lizardfs-master02 (2):

Failover HA test

Ein Failover würde man normalerweise nur mit einem crm node standby machen.
Da aber der Resource Agent keinen sauberen demote des Masters macht, ist es besser den mfsmaster Service gleich mit abzuschießen.
Dann klappt das umschalten auf jeden Fall. Auch sollte man hier den Stromausfall einer Node Testen.

crm node standby && killall -u mfs
crm_mon -1rnfRVc
Current DC: lizardfs-master01 (1) (version 1.1.14-70404b0) - partition with quorum
2 nodes and 3 resources configured

Node lizardfs-master01 (1): standby
Node lizardfs-master02 (2): online
resVIP0 (ocf::heartbeat:IPaddr2): Started
lizardfs-master (ocf::lizardfs:mfsmaster): Master

Inactive resources:
Master/Slave Set: lizardfs-ms [lizardfs-master]
lizardfs-master (ocf::lizardfs:mfsmaster): Master
lizardfs-master02
lizardfs-master (ocf::lizardfs:mfsmaster): Stopped
Masters: [ lizardfs-master02 ]
Stopped: [ lizardfs-master01 ]

Migration Summary:
* Node lizardfs-master01 (1):
lizardfs-master: migration-threshold=1000000 fail-count=2 last-failure='Fri Feb 2 16:54:35 2018'
* Node lizardfs-master02 (2):


Failed Actions:
* lizardfs-master_demote_0 on lizardfs-master01 'unknown error' (1): call=497, status=complete, exitreason='none',
last-rc-change='Fri Feb 2 16:54:35 2018', queued=0ms, exec=126ms

Sobald man dann die „ausgefallene“ Node wieder in betrieb hat ist alles wieder grün.

rm node online

Beim abschießen des mfsmaster Prozess mittels Kill. Reagiert Pacemaker recht schnell, und Promotet den Master auf der anderen Node, und Startet den Prozess wieder.

Viel Spaß beim Cluster Bau

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*