====== Pacemaker und Corosync ======
Aus //Heartbeat// spaltete sich 2007 //Pacemaker// ab, es ist praktisch eine Heartbeat-Version, die konform zum openAIS-//Cluster Communication Layer// sein sollte.
2008 wurde das bisherige //Pacemaker// in //Pacemaker// + //Corosync// aufgespalten, hierdurch wurde der //Cluster Communication Layer// (Corosync) von den //Plugins für die Clusterdienste// (Pacemaker) getrennt.
* [[http://www.pro-linux.de/artikel/1/48/virtueller-hochverfuegbarer-linux-server.html|Virtueller hochverfügbarer Linux-Server]]
* [[http://www.linux-magazin.de/Online-Artikel/Hochverfuegbarkeit-mit-Linux-im-Wandel/|Hochverfügbarkeit mit Linux im Wandel - Teil 1]]
* [[http://www.linux-magazin.de/Online-Artikel/Hochverfuegbarkeit-mit-Linux-im-Wandel/(offset)/1|Hochverfügbarkeit mit Linux im Wandel - Teil 2]]
* [[http://www.linux-magazin.de/Online-Artikel/Hochverfuegbarkeit-mit-Linux-im-Wandel/(offset)/2|Hochverfügbarkeit mit Linux im Wandel - Teil 3]]
* [[http://www.linux-magazin.de/Online-Artikel/Hochverfuegbarkeit-mit-Linux-im-Wandel/(offset)/4|Hochverfügbarkeit mit Linux im Wandel - Teil 4]]
__Diese Anleitung zeigt nur den ersten Schritt,
um ein Gefühl dafür zu bekommen.
Weitergehende Infos findet man hier:__ [[http://www.clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Clusters_from_Scratch/]]
===== Host-VM-System - Multicast-Einstellung =====
Damit Pacemaker (auf den Gast-VM-Systemen) zwischen den Clusterknoten kommunizieren kann, müssen die BRIDGE-DEVs (hier **br1**) Multicast zulassen:
> echo 2 > /sys/devices/virtual/net/br1/bridge/multicast_router
> echo 1 >/sys/class/net/br1/bridge/multicast_querier
zum Beispiel:
> vi /etc/rc.local
#!/bin/bash
touch /forcefsck
echo 2 > /sys/devices/virtual/net/br1/bridge/multicast_router
echo 1 >/sys/class/net/br1/bridge/multicast_querier
exit 0
===== Installation von Corosync und Pacemaker =====
# aptitude install pacemaker corosync
Nach der Installation von Pacemaker:
# ln -s /usr/lib/ocf/lib/heartbeat/ /lib/heartbeat
# update-rc.d -f drbd remove
==== Corosync ====
Corosync Multicast: 224.0.0.80:26587
=== Ubuntu 10.04 ===
== /etc/corosync/corosync.conf ==
Bei mehreren "interface"-Sektionen müssen sich die "ringnumber" unterscheiden (und der "rrp_mode" muss auf active/passive gesetzt werden):
interface {
# The following values need to be set based on your environment
ringnumber: 0
#bindnetaddr: 127.0.0.1
bindnetaddr: 192.168.0.0
mcastaddr: 226.94.1.1
mcastport: 5405
}
=== Ubuntu 12.04 ===
== /etc/corosync/corosync.conf ==
Bei mehreren "interface"-Sektionen müssen sich die "ringnumber" unterscheiden (und der "rrp_mode" muss auf active/passive gesetzt werden):
interface {
# The following values need to be set based on your environment
ringnumber: 0
#bindnetaddr: 127.0.0.1
bindnetaddr: 192.168.0.0
mcastaddr: 226.94.1.1
mcastport: 5405
}
"ver" sollte auf "1" gesetzt werden, bei "0" würde Pacemaker automatisch starten (geht aber nicht sauber):
service {
# Load the Pacemaker Cluster Resource Manager
ver: 1
name: pacemaker
}
# /etc/init.d/pacemaker restart
=== /etc/default/corosync ===
# start corosync at boot [yes|no]
START=yes
# /etc/init.d/corosync restart
==== Pacemaker ====
[[Pacemaker]]
===== Pacemaker 1 und Corosync 1 mit Ubuntu 12.04 =====
> corosync -v
Corosync Cluster Engine, version '1.4.2'
Copyright (c) 2006-2009 Red Hat, Inc.
> pacemakerd --version
Pacemaker 1.1.6
Written by Andrew Beekhof
==== Pacemaker+Corosync ====
# Please read the openais.conf.5 manual page
totem {
version: 2
# How long before declaring a token lost (ms)
token: 3000
# How many token retransmits before forming a new configuration
token_retransmits_before_loss_const: 10
# How long to wait for join messages in the membership protocol (ms)
join: 60
# How long to wait for consensus to be achieved before starting a new round of membership configuration (ms)
consensus: 3600
# Turn off the virtual synchrony filter
vsftype: none
# Number of messages that may be sent by one processor on receipt of the token
max_messages: 20
# Limit generated nodeids to 31-bits (positive signed integers)
clear_node_high_bit: yes
# Disable encryption
secauth: off
# How many threads to use for encryption/decryption
threads: 0
# Optionally assign a fixed node id (integer)
# nodeid: 1234
# This specifies the mode of redundant ring, which may be none, active, or passive.
rrp_mode: none
interface {
# The following values need to be set based on your environment
ringnumber: 0
bindnetaddr: 10.11.12.0
mcastaddr: 226.94.1.1
mcastport: 5410
}
}
amf {
mode: disabled
}
service {
# Load the Pacemaker Cluster Resource Manager
ver: 0
name: pacemaker
}
aisexec {
user: root
group: root
}
logging {
fileline: off
to_stderr: yes
to_logfile: no
to_syslog: yes
syslog_facility: daemon
debug: off
timestamp: on
logger_subsys {
subsys: AMF
debug: off
tags: enter|leave|trace1|trace2|trace3|trace4|trace6
}
}
wenn hier ''ver: 0'' steht, dann wird beim Start von Corosync das Pacemaker-Plugin geladen:
service {
# Load the Pacemaker Cluster Resource Manager
ver: 0
name: pacemaker
}
Das bedeutet, dass der Dienst ''pacemaker'' nicht als laufender Dienst erkennbar ist:
> service pacemaker status
pacemakerd is stopped
> ps alx | fgrep pacemaker
0 0 38259 4094 20 0 9504 764 - R+ pts/1 0:00 fgrep --color=auto pacemaker
...trotzdem wird der CRM-Monitor funktionieren:
> crm_mon -fr
============
Last updated: Thu Apr 20 08:21:11 2017
Last change: Thu Apr 20 08:09:08 2017 via crmd on ttvdbgalera001
Stack: openais
Current DC: ttvdbgalera002 - partition with quorum
Version: 1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c
3 Nodes configured, 3 expected votes
1 Resources configured.
============
Online: [ ttvdbgalera002 ttvdbgalera003 ttvdbgalera001 ]
Full list of resources:
res_mysqlIP (ocf::heartbeat:mysqlIP): Started ttvdbgalera001
Migration summary:
* Node ttvdbgalera001:
* Node ttvdbgalera002:
* Node ttvdbgalera003:
node ttvdbgalera001 \
attributes standby="off" maintenance="off"
node ttvdbgalera002 \
attributes standby="off" maintenance="off"
node ttvdbgalera003 \
attributes standby="off" maintenance="off"
primitive res_mysqlIP ocf:heartbeat:mysqlIP \
params ip="10.11.12.100" nic="bond0" \
op start interval="0" timeout="30" \
op stop interval="0" timeout="30" \
op monitor interval="10s" \
meta is-managed="true" target-role="Started"
property $id="cib-bootstrap-options" \
dc-version="1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f42c" \
cluster-infrastructure="openais" \
expected-quorum-votes="3" \
stonith-enabled="false" \
no-quorum-policy="ignore" \
last-lrm-refresh="1492678548" \
maintenance-mode="false"
rsc_defaults $id="rsc-options" \
resource-stickiness="100"
===== Pacemaker 1 und Corosync 2 mit Ubuntu 14.04 =====
* [[http://docs.openstack.org/ha-guide/controller-ha-pacemaker.html]]
Pacemaker muss nach Corosync gestartet werden und vor Corosync beendet werden!!!
> update-rc.d pacemaker start 20 2 3 4 5 . stop 00 0 1 6 .
damit Pacemaker mit Corosync komunizieren kann:
...
service {
# Load the Pacemaker Cluster Resource Manager (5)
ver: 1
name: pacemaker
}
...
uidgid {
uid: hacluster
gid: haclient
}