====== 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 }