Pacemaker Heartbeat Linux High Available How To

Die Software ist extrem kompliziert und schlecht dokumentiert.

Benötigt die aktuelle Version von libnet. Aber Achtung, sofern snort installiert ist gibt es Konflikte, da
snort im inline Modus unbedingt die ältere 1.0er Version braucht 🙁 .
Wenn das Management aktiviert ist (“–enable-mgmt”) benötigt man noch GNU/TLS und Python (PyGTK usw. [Am besten via Yast2 installieren, da tausend Abhängigkeiten an Python hängen]).

libnet:
“wget http://www.packetfactory.net/libnet/dist/libnet.tar.gz” oder “http://skylink.dl.sourceforge.net/project/libnet-dev/libnet-1.2-rc3.tar.gz”
“tar -xvzf libnet.tar.gz”
“cd libnet”
“./configure” oder bei SuSE “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”

autoconf bei SLES 11:
“wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz”
“tar -xzf autoconf-2.69.tar.gz”
“cd autoconf-2.69”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”

automake:
“wget http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz”
“tar -xzf automake-1.14.tar.gz”
“cd automake-1.14”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debain “”./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”

help2man:
via Yast2

TexInfo:
“wget http://ftp.gnu.org/gnu/texinfo/texinfo-5.2.tar.gz”
“tar -xzf texinfo-5.2.tar.gz”
“cd texinfo-5.2”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debain “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”

“export PATH=/usr/local/texlive/2014/bin/x86_64-linux:$PATH” siehe Doku un Xen Hypervisor zu Tex

Lib Nettle (sollte auf jeden Fall eine 2.X Version sein, da man sonst gnuTLS nicht kompilieren kann):
Ab GNUTLS 3.2 nicht mehr notwendig. Bei Debain schon.
“wget http://ftp.gnu.org/gnu/nettle/nettle-2.7.tar.gz”
“tar -xzf nettle-2.7.tar.gz”
“cd nettle-2.7”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debain “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”

GNU/TLS:
“wget ftp://ftp.gnutls.org/pub/gnutls/gnutls-2.2.2.tar.bz2” oder “ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/gnutls-3.2.16.tar.xz”
“tar -xf gnutls-2.2.2.tar.bz2”
“cd gnutls-2.2.2”
“./configure” oder bei SuSE “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”
“gnutls-cli –version”

libqb:
“Vorher automake via Yast2 rüberinstallieren”
“git clone git://github.com/ClusterLabs/libqb.git” oder “wget –no-check-certificate https://fedorahosted.org/releases/q/u/quarterback/libqb-0.16.0.tar.gz”
“cd libqb/”
“./autogen.sh”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debian “apt-get install libtool automake autoconf autotools-dev”
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”

ggf. Mozilla nss (auch bei SLES):
via Yast installieren
Bei Debian “apt-get install libnss3-dev”

Corosync:
Pacemaker mit Corosync 2. corosync 1.4.5 (nur 1.4 Header) “ls -al /root/temp/corosync-1.4.4/include/corosync/corotypes.h” : !!!!!!!!!!!!!!!!!!!!!!!!!!!!
ggf. “rm -frv /usr/lib64/libcrm*”
ggf. “rm -frv /usr/lib64/libcoro*”
Aufpassen das keine Corosync 1 Leichen im System liegen.
“wget http://build.clusterlabs.org/corosync/releases/corosync-2.3.3.tar.gz”
“tar -xzf corosync-2.3.3.tar.gz”
“cd corosync-2.3.3/”
“./autogen.sh” ggf. auch nicht ausführen
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”

Wenn ocfs2 via Yast2 installiert wurde, muss noch libpacemake installiert werden, da: “heartbeat[4973]: 2009/03/05_19:29:27 WARN: Managed /usr/lib/heartbeat/crmd process 5009 killed by signal 11 [SIGSEGV – Segmentation violation].”
Pacemaker:
Aufpassen das keine Corosync 1 Leichen im System liegen.
“export GIT_SSL_NO_VERIFY=true”
“git clone https://github.com/ClusterLabs/pacemaker.git” oder “wget –no-check-certificate https://github.com/ClusterLabs/pacemaker/archive/master.tar.gz” oder “wget http://hg.clusterlabs.org/pacemaker/stable-1.0/archive/Pacemaker-0.6.3.tar.bz2”
“tar -xzf master.tar.gz” oder “tar -xf Pacemaker-0.6.3.tar.bz2”
“cd pacemaker-master/” oder “cd Pacemaker-1-0-Pacemaker-0.6.3”
“./autogen.sh”
Bei “–with-heartbeat” vorher Heartbeat (Glue) installieren
Bei Debian “apt-get install libxml2-dev libxslt1-dev”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –with-corosync –with-heartbeat –with-cman –with-cs-quorum” oder “./ConfigureMe configure –prefix=/usr –sysconfdir=/etc –localstatedir=/var –disable-rpath” nur bei SuSE
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include –with-corosync –with-heartbeat –with-cman –with-cs-quorum”
“make”
“make install”

Nun Benutzernamen und Gruppen für Heartbeat anlegen.
“groupadd haclient”
“useradd -g haclient -s /bin/false -c “HA Cluster” hacluster”

crmsh:
Bei Debian:
“apt-get install python-pip”
“apt-get install libxml2-dev libxslt-dev python-dev”
“git clone git://github.com/lxml/lxml.git lxml”
“cd lxml”
“pip install lxml”
“git clone https://github.com/crmsh/crmsh.git”
“cd crmsh”
“./autogen.sh”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
“make install”

OCF Resource Agents:
“wget –no-check-certificate https://github.com/ClusterLabs/resource-agents/tarball/v3.9.2”
“tar -xzf ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz”
“cd ClusterLabs-resource-agents-b735277”
“./autogen.sh”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
“make”
ggf “rm -frv /usr/lib/ocf/resource.d/heartbeat/.ocf*
“make install”
“ls -al /usr/lib/ocf/resource.d/heartbeat/”

########################################################################################
Für LibVirt:
Expat:
“lynx http://sourceforge.net/projects/expat/”
“tar -xzf expat-2.1.0.tar.gz”
“cd expat-2.1.0”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”

Thin_Check > V. 3:
“git clone https://github.com/jthornber/thin-provisioning-tools.git”
“cd thin-provisioning-tools”
“autoreconf”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”
“thin_check –version”

Libdevicemapper:
“wget ftp://sources.redhat.com/pub/lvm2/LVM2.2.02.107.tgz”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”

libnl:
“wget http://www.infradead.org/~tgr/libnl/files/libnl-3.2.24.tar.gz”
“tar -xzf libnl-3.2.24.tar.gz ”
“cd libnl-3.2.24”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make
“make install”

xhtml-dtd:
“wget http://ftp.uni-kl.de/pub/linux/opensuse/distribution/13.1/repo/oss/suse/noarch/xhtml-dtd-2006.8.16-13.1.3.noarch.rpm”
“rpm -iv xhtml-dtd-2006.8.16-13.1.3.noarch.rpm”

Libvirt:
“git clone git://libvirt.org/libvirt.git”
“cd libvirt/”
“./bootstrap”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –with-xen –with-xen-inotify –with-xenapi –with-libxl”
“make”
“make install”
“libvirtd&”
“./run ./tools/virsh”
########################################################################################

Glue (Ab HA 3):
“wget http://hg.linux-ha.org/glue/archive/glue-1.0.9.tar.bz2”
“tar -xf glue-1.0.9.tar.bz2”
“cd Reusable-Cluster-Components-glue–glue-1.0.9”
“./autogen.sh”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
Bei Debian “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include”
Alle “Werror” aus “Makefile” und “configure” entfernen
Alle #error auskommentieren.
z.B.
/*
#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
#error “Only can be included directly.”
#endif
*/
/usr/include/glib-2.0/glib/gtypes.h
/usr/include/glib-2.0/glib/gversionmacros.h
/usr/include/glib-2.0/glib/gmacros.h
“make”
“make install”
“cp -frv /usr/include/heartbeat/*.h /usr/include/”

Hearbeat HA-Linux Cluster:
Ggf. Doku “gfs_gnbd_how_to” anschauen.
“wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/7e3a82377fa8.tar.bz2” oder “wget http://linux-ha.org/download/heartbeat-2.1.3.tar.gz” oder “http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/7e3a82377fa8.tar.bz2”
“tar -xvzf heartbeat-2.1.3.tar.gz”
“cd heartbeat-2.1.3”
AB Ver. 3 “./bootstrap”
“./configure” oder bei SuSE “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib –includedir=/usr/include –enable-mgmt” –enable-all (wenn –enable-all aktiviert ist erscheint folgender Fehler “dopd.c:350: error: expected expression before / token”. Lösung “vi /root/public/heartbeat-2.1.3/contrib/drbd-outdate-peer/dopd.c” und dort die zeile 350 weglöschen. Daraufhin “make” erneut starten.
ab Version 2.1.4 “./ConfigureMe configure –prefix=/usr –sysconfdir=/etc/heartbeat –localstatedir=/var –enable-fatal-warnings=no”
Ab Ver. 3: “./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –enable-all”
Alle “Werror” aus “Makefile” und “configure” entfernen.
“vi /usr/include/asm-generic/socket.h” ->
/*#define SO_REUSEPORT 15*/ auskommentieren
“make”
“mkdir /etc/heartbeat”
“make install”
Ab Version 3
“lynx http://linux-ha.org/wiki/Downloads”
“tar -xf Heartbeat-3-0-7e3a82377fa8.tar.bz2”
“cd Heartbeat-3-0-7e3a82377fa8”
“./bootstrap”
Bei Debian ggf. “apt-get install xsltproc docbook-xsl docbook-xml xsltproc”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include –enable-mgmt” –enable-all”
“make”
“mkdir /etc/ha.d”
“cp -frv /root/temp/ha/Heartbeat-3-0-7e3a82377fa8/doc/ha.cf /etc/ha.d/”

“vi /usr/local/etc/ha.d/ha.cf” -> Hier werden die Zentralen Konfiguration gemacht.
#use_logd yes
logfile /var/log/ha-log.log
logfacility local0

node node1 #uname -n
node node2 #uname -n

keepalive 1
warntime 10
deadtime 30
initdead 120

udpport 694 # IANA officially registered
ucast eth0 172.16.190.20
ucast eth0 172.16.190.21

auto_failback off #Active/Passiv Modus
#auto_failback yes #Active/Active Modus

respawn hacluster /usr/lib/heartbeat/ipfail

crm no

“vi /usr/local/etc/ha.d/authkeys” -> SHA1 Keys zur Authentifizierung der einzelnen Nodes (PCs)
Um ein SHA1 Wert zu erzeugen gibt man folgenden Befehl ein:
“dd if=/dev/urandom count=4 2>/dev/null | openssl dgst -sha1” oder “echo -n “” | openssl sha1″ .
Der Wert wird dann in authkeys eingefügt ->
auth 1
1 sha1 8b2030f6ffd8e0f529d0faa1f0ee2fb1458742a9
“chmod 600 /usr/local/etc/ha.d/authkeys”

“vi /usr/local/etc/ha.d/haresources” -> Im Prinzip kann man jedes belibige Script nach “resources.d” kopieren, mann muss nur dafür sorgen, das sie mit dem Zusatz “start/stop/status” funktionieren.
Es ist auch darauf zu achten das hinter dem letzten Kommando kein Leerzeichen oder neue Zeile steht, da sonst hearbeat nicht richtige parsen kann.
node1 drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext3 apache::/usr/local/apache2/conf/httpd.conf IPaddr2::172.16.190.22/16/eth0/172.16.255.255
#dbddisk… startet mit dem übergebenen Parameter ::r0 die Resource r0 (welche in drbd.conf definiert ist)
#Filesystsem… mountet mit den übergebenen Parametern ::/dev/drbd0, ::/drbd und ::ext3 das Dateisystem ext3 im Mountpunkt /drbd
#apache… startet mit dem übergebenen Parameter ::/usr/local/apache2/conf/httpd.conf den httpd Dienst mit seiner Konfigurationsdatei (Verzeichnis ist Distributionsabhängig)
#IPaddr2… stellt uns mit dem übergebenen Parameter ::192.168.100.100/24/eth0 die virtuelle IP Adresse am Interface eth0 zur Verfügung

Nun Benutzernamen und Gruppen für Heartbeat anlegen.
“groupadd haclient”
“useradd -g haclient -s /bin/false -c “HA Cluster” hacluster”

chown hacluster:haclient -R /usr/local/var/lib/heartbeat/
chown hacluster:haclient -R /usr/local/etc/ha.d/
chown hacluster:haclient -R /usr/lib/heartbeat/
oder
chown hacluster:haclient -R /var/lib/heartbeat/
chown hacluster:haclient -R /etc/heartbeat/
chown hacluster:haclient -R /usr/lib/heartbeat/

auf node2 (172.16.190.21)
“scp -r -v root@172.16.190.20:/etc/heartbeat/* /etc/heartbeat/”

Um das Konfig GUI zu starten, sollte man die Dateien unter dem Verzeichnis
“mv /root/public/heartbeat-2.1.3/mgmt/client /usr/lib/heartbeat/” in das Hauptverzeichnis verschieben.
Dann “/usr/lib/heartbeat/client/haclient.py&” ausführen und zur Node connecten.

“cp -frv /etc/ha.d/resource.d/* /etc/heartbeat/ha.d/resource.d/”

#Zusatz Infos und Kommandos#################################################################
“/usr/lib/heartbeat/heartbeat” = Heartbeat starten
Die Executables liegen unter “cd /usr/lib/heartbeat” .
Das Konfigurationsverzeichnis liegt unter “cd /usr/local/etc/ha.d/” .
Die HA Resource Konfiguration liegt unter “cd /usr/local/var/lib/heartbeat”
/usr/lib/heartbeat/haresources2cib.py /etc/heartbeat/ha.d/haresources
crm_mon = Zeigt an welche Cluster aktiv sind, sehr nützlich.
crm_resource -L = Zeigt die freigegebenen Resourcen an

Den HA Log Deamon starten “/usr/lib/heartbeat/ha_logd -c /usr/local/etc/ha.d/ha_logd.cf -d”. oder
“/usr/lib/heartbeat/ha_logd -k” Stopt den ha_logd logging Daemon
“/usr/lib/heartbeat/heartbeat -s” Status Anzeige von HA
“/usr/lib/heartbeat/heartbeat -k” Stopt HA
“/usr/lib/heartbeat/heartbeat -r” Restartet HA

/etc/heartbeat/ha.d/resource.d/IPaddr2 172.16.190.22 start = Starte das Virtuelle öffentlich Interface

#Zusatz Veränderungen####################
Bei Apache muss mann noch die scripte anpassen
“vi /usr/lib/ocf/resource.d/heartbeat/apache” und folgendes editieren ab ca. Zeile 48 und Zeile 309
HTTPDLIST=”/sbin/httpd2 /usr/sbin/httpd2 /usr/sbin/apache2 /sbin/httpd /usr/sbin/httpd /usr/sbin/apache $IBMHTTPD /usr/local/apache2/bin/httpd”
#
#while : # wait until the user set timeout
#do
# monitor_apache
# ec=$?
# if [ $ec -eq $OCF_NOT_RUNNING ]
# then
# tries=`expr $tries + 1`
# ocf_log info “waiting for apache $CONFIGFILE to come up”
# sleep 1
# else
# break
# fi
# done

und dann auf node2 kopieren
“scp -r -v root@172.16.190.20:/usr/lib/ocf/resource.d/heartbeat/apache /usr/lib/ocf/resource.d/heartbeat/”

#Heartbeat mit NBD Raid mountes und mehr als 2 Nodes###############################################################################################################################################################################################
Leider gibt es noch Probleme mit dem Raid bzw. mdadm wenn ein NBD Device wegfällt. Also ist die Konfiguration mit NBD und Raid nur bedingt zu empfehlen.
“vi /usr/local/etc/ha.d/ha.cf”
logfile /var/log/ha-log.log
logfacility local0
node node1
node node2
node node3
keepalive 1
warntime 10
deadtime 30
initdead 30
udpport 694
ucast eth0 172.16.190.21
ucast eth0 172.16.190.22
ucast eth0 172.16.190.23
bcast eth0
auto_failback off
crm on
apiauth cibmon uid=root
respawn hacluster /usr/lib/heartbeat/cibmon -d

“vi /usr/local/etc/ha.d/haresources” -> auf node1
node1 Raid1::/etc/mdadm.conf::/dev/md0 Filesystem::/dev/md0::/md0_mount::ext3 IPaddr::172.16.190.25
“/usr/lib/heartbeat/haresources2cib.py –stdout -c /etc/heartbeat/ha.d/ha.cf /etc/heartbeat/ha.d/haresources > /var/lib/heartbeat/crm/cib.xml” = Konvertier haresources zu cib.xml. Das ist notwendig um Heartbeat in Version 2 zum laufen zu bringen, den nur in Version zwei können mehr als zwei nodes angesprochen werden.
Eventuell muss noch einiges in der XML Datei editiert werden (quorum / IPaddr2 usw.)
“vi /var/lib/heartbeat/crm/cib.xml” -> quorum auf “ignore” setzen, ca. Zeile 7

“chown -R hacluster:haclient /var/lib/heartbeat/crm/cib.xml”
“chown -R hacluster:haclient /var/run/heartbeat/”
“mkdir /md0_mount”

Eventuell noch “rm -frv /var/lib/heartbeat/crm/cib.xml.*” und
“chmod 600 /var/lib/heartbeat/crm/cib.xml” bevor eine neue Konfig geschrieben wird.

Ein Netzwerk Raid 1 oder 5 via mdadm und NBD erstellen. Siehe NBD Doku

Eventuell noch dieverse Heartbeat Start Scripte anpassen sowie etwa das Apche Script, wie oben beschrieben.

Bevor Heartbeat gestartet wird alles Konfig auf die einzelnen nodes verteilen.
“scp -r -v root@node1:/etc/nbd/config /etc/nbd”
“scp -r -v root@node1:/etc/heartbeat/ha.d/* /etc/heartbeat/ha.d/”
“scp -r -v root@node1:/root/scripte/master_start_script.sh /root/scripte/”
“scp -r -v root@node1:/etc/mdadm.conf /etc/”
“scp -r -v root@node1:/var/lib/heartbeat/crm/cib.xml /var/lib/heartbeat/crm/”

“/usr/lib/heartbeat/heartbeat”

#Zusätzlich einen Knoten in den vorhandenen Cluster einfügen##
Leider gibt es noch Probleme mit dem Raid bzw. mdadm wenn ein NBD Device wegfällt. Also ist die Konfiguration mit NBD und Raid nur bedingt zu empfehlen.
NBD installieren. Siehe Doku
Heartbeat installieren. Siehe oben.
Heartbeat Konfig File auf Node1 bearbeiten uns sagen das noch ein weiteren Node hinzukommt.
“vi /etc/heartbeat/ha.d/ha.cf”
“rm -frv /var/lib/heartbeat/crm/*”
“/usr/lib/heartbeat/haresources2cib.py –stdout -c /etc/heartbeat/ha.d/ha.cf /etc/heartbeat/ha.d/haresources > /var/lib/heartbeat/crm/cib.xml”
“vi /var/lib/heartbeat/crm/cib.xml” -> quorum auf false setzen, ca. Zeile 7

Auf allen Nodes:
“rm -frv /var/lib/heartbeat/crm/cib.xml.*”
Alle Konfigs vom Haupt Node auf alle anderen Nodes verteilen.
scp -r -v root@172.16.190.21:/etc/nbd/config /etc/nbd
scp -r -v root@172.16.190.21:/etc/heartbeat/ha.d/* /etc/heartbeat/ha.d/
scp -r -v root@172.16.190.21:/root/scripte/master_start_script.sh /root/scripte/
scp -r -v root@172.16.190.21:/etc/mdadm.conf /etc/
scp -r -v root@172.16.190.21:/var/lib/heartbeat/crm/cib.xml /var/lib/heartbeat/crm/

NBD starten. Siehe Doku.
Auf allen aktiven Nodes, Heartbeat reloaden. am besten Zeitversetzt.
“/usr/lib/heartbeat/heartbeat -k; /usr/lib/heartbeat/heartbeat;” oder mit “killall -s 9 heartbeat”.
Heartbeat starten. Siehe oben.

#Mehr (>2) Knoten Cluster mit GNBD und GFS#####################################################################################################################################
GNBD installieren und Raid 1 oder 5 erstellen, siehe Doku. Aber das gleiche Problem wie bei NBD, sobald ein GNBD Server wegfällt hängt sich mdadm auf.
GFS läßt sich leider unter openSuse nicht realisieren. Das ist nur für SLES Produkte.

#Mehr (>2) Knoten Cluster mit OCFS2(iSCSI)#####################################################################################################################################
iSCSI und ocfs2 installieren. siehe beide Dokus.

#ctdb Samba Cluster#####################################################################################################################################

###################################################################################################################################################################################################################
###################################################################################################################################################################################################################
###################################################################################################################################################################################################################
###################################################################################################################################################################################################################
###################################################################################################################################################################################################################
Corosync und Pacemaker Cluster (Heartbeat ist veraltet Stand 3.7.2014)

Prerequirements:
Python
automake (perl)
Danach:
GNU/TLS
libqb
corosync
Pacemaker
crmsh
OCF Resource Agents
(heartbeat)

“vi /etc/corosync/corosync.conf” -> siehe Conf Files. Auf Multicast IP und Nodelist achten.

starten
“mkdir /var/lock/subsys/”
“/etc/init.d/corosync start”
“/etc/init.d/pacemaker start”

Folgende Prozesse sollten laufen:
ps -ef | grep -i -e coro -e pacem
root 7767 1 0 15:51 ? 00:00:23 corosync
root 7901 1 0 15:54 pts/1 00:00:00 pacemakerd
haclust+ 7903 7901 0 15:54 ? 00:00:00 /usr/lib/pacemaker/cib
root 7904 7901 0 15:54 ? 00:00:00 /usr/lib/pacemaker/stonithd
root 7905 7901 0 15:54 ? 00:00:00 /usr/lib/pacemaker/lrmd
haclust+ 7906 7901 0 15:54 ? 00:00:00 /usr/lib/pacemaker/attrd
haclust+ 7907 7901 0 15:54 ? 00:00:00 /usr/lib/pacemaker/pengine
haclust+ 7908 7901 0 15:54 ? 00:00:00 /usr/lib/pacemaker/crmd

ggf. die Verzeichnise /usr/lib/pacemaker mit dem hacluster User berechtigen.

“crm status”

“crm_verify -L -V”
“crm_attribute -t crm_config -n stonith-enabled -v false
“crm_verify -L -V”

Auto Fail Back deaktivieren (Resource bleibt auf dem geswitchen Server):
crm(live)configure# property default-resource-stickiness=”1000″
crm(live)configure# commit

########################################
Resource erstellen

##
Virtual IP erstellen:
Active/Passivre Cluster Model

crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 \
params ip=172.16.190.201 cidr_netmask=16 \
op monitor interval=30s

“crm configure show”
“crm_mon -1”
“crm resource status ClusterIP”
“crm configure property no-quorum-policy=ignore”
“crm configure show”
“ip addr show”

##
XEN Resourcen konfiguieren:

Auf die granulierung der CPUs achten. Die VM können auch 0.xyz beträge einer CPU einnehmen.
crm configure node xen01.moore.corp utilization cores=”666″
crm configure node xen01.moore.corp utilization memory=”4096″
crm configure node xen02.moore.corp utilization cores=”666″
crm configure node xen02.moore.corp utilization memory=”4096″
crm configure node xen03.moore.corp utilization cores=”666″
crm configure node xen03.moore.corp utilization memory=”4096″

crm configure property placement-strategy=”balanced” geht auch mit “utilization” und “minimal” http://clusterlabs.org/doc/en-US/Pacemaker/1.1-crmsh/html/Pacemaker_Explained/_placement_strategy.html

crm configure primitive xen_ha_vpn-server ocf:heartbeat:anymig \
params binfile=”/root/xen_storage/konfigs/heartbeat/xen_failover vpn-server” cmdline_options=”/root/xen_storage/vpn-server/vpn-server.xen” \
op start timeout=”20s” \
op stop timeout=”30s” \
op monitor interval=”20s” timeout=”30s” start-delay=”0s” depth=”0s” on-fail=”restart” \
utilization cores=”2″ \
utilization memory=”768″ \
meta allow-migrate=true

Darauf achten das die zwei “xen_failover” und “xen_failover_check” pogramme installiert sind und von allesn Nodes aus abrufbar.
##

OCFS2 Resource:

Filesysten Resource:

########################################
Kommandos
crm_mon -1 -rf = Cluster Status
crm_resource -P = Resourcen Fehlermeldung Quitieren
crm resource cleanup xen_ha_apache-test = Resource bereinigen

Falls ein Cluster move oder re-move die Resource nicht starten oder moven will
crm_resource -P
crm configure show
crm configure delete cli-ban-xen_ha_apache-test-on-xen01.moore.corp
crm configure delete cli-prefer-xen_ha_apache-test
crm configure show
ocf-tester -n anything -o binfile=/root/xen_storage/konfigs/heartbeat/sleep_binary -L /usr/lib/ocf/resource.d/heartbeat/anymig

Failed Unmanged Resource löschen und stoppen:
crm_resource –resource xen_ha_apache-test –set-parameter target-role –meta –parameter-value Stopped
crm_resource –resource xen_ha_apache-test –fail -H xen03.moore.corp
crm resource stop xen_ha_apache-test
crm_resource -C -N xen03.moore.corp -r xen_ha_apache-test
crm_resource -p is-managed -r xen_ha_apache-test -v on –meta
crm_resource -P
crm configure delete xen_ha_apache-test
crm_resource -P

Cluster ID feststellen:
crm_node -i
##################################################################################
Info wo die Resoure läuft:
crm_resource -W -r xen_ha_apache-test

Cluster Configuration aufrufen (Sieht mehr als crm configure show):
cibadmin –query

##################################################################################

Cluster einstellungen löschen aus CIB Datenbank:
cibadmin –delete –xml-text ‘

Experimental
crm configure property start-failure-is-fatal=false
crm configure rsc_defaults failure-timeout=”10min”
mkdir /var/lib/heartbeat/trace_ra/
crm resource trace xen_ha_apache-test start

“crm_node -l” = Noder liste anzeigen

“crm configure property stop-all-resources=true”
“crm configure erase”

“cat /var/lib/pacemaker/cib/cib.xml.sig”
“cat /var/lib/pacemaker/cib/cib.xml”

“corosync-quorumtool”
“corosync-cfgtool -s” = Alle Ringe anzeigen
“corosync-cfgtool -r” = Failed Rings activeted
“corosync-cpgtool”
“corosync-quorumtool” = Zeigt das Quorum an

Bei Debian “checksctp” = Checkt ob SCTP möglich. Nötig für mehrer Ringe
“lynx http://lksctp.sourceforge.net/”
“git clone git://github.com/borkmann/lksctp-tools.git”
“cd lksctp-tools”
“./bootstrap”
“./configure –bindir=/usr/bin –sbindir=/usr/sbin –libdir=/usr/lib64 –includedir=/usr/include”
“make”
“make install”

##################################################################################
Troubleshooting:
Fehler: error: crmd_fast_exit: Could not recover from internal error
Lösung:

Fehler:
xen04:~ # crm resource start xen_ha_apache-test-2
INFO: no curses support: you won’t see colors
Call cib_apply_diff failed (-62): Timer expired
ERROR: could not patch cib (rc=62)
INFO: offending xml diff:

Lösung:

Fehler:
Node xen02.moore.corp (2): UNCLEAN (offline)

Lösung:
ggf. “crm node clearstate xen03.moore.corp”
Pacemaker neu installieren


Post Revisions: