Troubleshooting pacemaker: Discarding cib_apply_diff message (xxx) from server2: not in our membership

Ahir, en reiniciar un dels nodes que tenim en alta disponibilitat (per actualitzar les maleïdes vmware-tools que es carreguen el meu preciós uptime) vam trobar-nos amb un problema greu, i és que el pacemaker no se sincronitzava, i per tant haviem perdut l’alta disponibilitat. El node actiu veia el cluster com si no hi hagués cap problema:

[[email protected]]# crm status
============
Last updated: Wed Nov 7 12:36:01 2012
Last change: Tue Nov 6 18:33:15 2012 via crmd on server2
Stack: openais
Current DC: server2 - partition with quorum
Version: 1.1.7-6.el6-148fccfd5985c5590cc601123c6c16e966b85d14
2 Nodes configured, 2 expected votes
6 Resources configured.
============

Online: [ server2 server1 ]
(...)

En canvi, el node passiu veia el cluster com si tots els nodes, inclòs ell mateix, estigues off-line:

[[email protected] ]# crm status
============
Last updated: Wed Nov 7 12:36:27 2012
Last change: Wed Nov 7 12:35:57 2012 via cibadmin on server1
Stack: openais
Current DC: NONE
2 Nodes configured, 2 expected votes
6 Resources configured.
============

OFFLINE: [ server2 server1 ]

Mirant els logs del node passiu vèiem que l’arrencada anava be, pero en cert moment començàven a sortir errors del tipus:

Nov 6 16:40:29 server1 cib [4607]: warning: cib_peer_callback: Discarding cib_replace message (776) from server2: not in our membership
Nov 6 16:40:29 server1 cib[4607]: warning: cib_peer_callback: Discarding cib_apply_diff message (777) from server2: not in our membership

En el node actiu no sortia cap missatge que ens semblés estrany. Mirant el corosync, vam comprobar que els nodes es podien veure entre ells sense problema. Els dos nodes tornàven el mateix:

[[email protected] ]# corosync-objctl | grep member
runtime.totem.pg.mrp.srp.members.200.ip=r(0) ip(10.10.10.10)
runtime.totem.pg.mrp.srp.members.200.join_count=1
runtime.totem.pg.mrp.srp.members.200.status=joined
untime.totem.pg.mrp.srp.members.201.ip=r(0) ip(10.10.10.11)
runtime.totem.pg.mrp.srp.members.201.join_count=1
runtime.totem.pg.mrp.srp.members.201.status=joined

Amb un tcpdump escoltant el port del corosync vam comprobar que hi havia trànsit (cosa evident, pero en aquests casos ho proves tot), amb la qual cosa semblava clar que el problema era de pacemaker i també molt clar que no teniem ni idea del què era. Investigant vam trobar uns quants enllaços (per exemple aquest: http://comments.gmane.org/gmane.linux.highavailability.pacemaker/13185) on deien que es un bug, que se soluciona amb aquest commit https://github.com/ClusterLabs/pacemaker/commit/03f6105592281901cc10550b8ad19af4beb5f72f que entrava a la versio 1.1.8 de pacemaker. I nosaltres tenim la 1.1.7. Glups.

Per assegurar, en comptes d’actualitzar la màquina existent, vam crear una nova i vam instal·lar pacemaker de zero, seguint les instruccions de http://www.clusterlabs.org/rpm-next/ i de http://www.clusterlabs.org/wiki/Install. Bàsicament vam fer:

wget -O /etc/yum.repos.d/pacemaker.repo http://clusterlabs.org/rpm-next/rhel-6/clusterlabs.repo
yum install -y corosync corosynclib corosynclib-devel pacemaker cman

Vam copiar el corosync.conf adaptant-lo (bàsicament, canviant-li el nodeid) i el vam engegar, i va integrar-se al cluster sense cap problema:

[[email protected]]# crm status

Last updated: Wed Nov 7 18:14:08 2012
Last change: Wed Nov 7 18:07:01 2012 via cibadmin on balance03
Stack: openais
Current DC: balance03 - partition with quorum
Version: 1.1.8-1.el6-394e906
3 Nodes configured, 3 expected votes
6 Resources configured.

Online: [ server3 server2 ]
OFFLINE: [ server1 ]
(...)

Vam poder fer un migrate al nou node i tot va funcionar perfectament. Vam actualitzar els altres i vam recuperar la nostra alta disponibilitat de nou.

Però la nova versió ve amb inconvenients, i és que crm, l’eina que feiem servir per configurar pacemaker, ara es distribueix per separat, a petició del mantenidor. S’ha convertit en un projecte per si mateix amb el nom crmsh, i té la seva propia web: http://savannah.nongnu.org/projects/crmsh/. El paquet compilat es pot descarregar d’aquí http://download.opensuse.org/repositories/network:/ha-clustering/ pero té dependència del paquet pssh, que al seu torn té algunes altres dependències. En resum, vam haver de fer el següent:


wget http://apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/pssh-2.0-1.el6.rf.noarch.rpm
rpm -Uvh pssh-2.0-1.el6.rf.noarch.rpm
yum -y install python-dateutil.noarch
yum -y install redhat-rpm-config
wget http://download.opensuse.org/repositories/network:/ha-clustering/CentOS_CentOS-6/x86_64/crmsh-1.2.5-55.3.x86_64.rpm
rpm -Uvh crmsh-1.2.5-55.3.x86_64.rpm

I amb això ja ho teniem tot en marxa de nou

Tomàs

Tomàs

Ja posaré alguna cosa

  • Miguel

    Buenas

    Tengo la siguiente duda, comentas que al instalar el nuevo nodo de 0, sólo copiasteis el fichero de corosync, pero en que momento vuelves a configurar pacemaker? Y sobretodo como nos comentas, crm no vienen de base y creo recordar que es bastante importante para configurar los cib.

    Como cargaste la configuración de pacemaker?

    Muchas gracias

    • admin

      La configuración de pacemaker (el cib) se traspasa automáticamente dentro del cluster, no es necesario preocuparse por pacemaker, él ya se sincronizará…