45
Alta disponibilidad con Pacemaker Ing. Nelson Calero, OCP [email protected] @ncalerouy MySQL / NoSQL / Cloud Latin America Conference Martes 15 de Octubre 2013 - Buenos Aires, Argentina

Alta disponibilidad con Pacemaker

Embed Size (px)

DESCRIPTION

Todo lo que se necesita saber para usar Pacemaker como solución de alta disponibilidad en bases de datos. Presentación dada en la conferencia MySQL NoSQL & Cloud Latin America en Buenos Aires el 15/10/2013.

Citation preview

Page 1: Alta disponibilidad con Pacemaker

Alta disponibilidad con Pacemaker

Ing. Nelson Calero, [email protected]

@ncalerouy

MySQL / NoSQL / Cloud Latin America ConferenceMartes 15 de Octubre 2013 - Buenos Aires, Argentina

Page 2: Alta disponibilidad con Pacemaker

Octubre 2013 2/45

Nelson Calero

• http://www.linkedin.com/in/ncalero • Ingeniero en Computación. OCP DBA 10g. Especializado en

performance y HA (MySQL / Cluster / Oracle / RAC)• Trabajando con herramientas Oracle y entorno linux desde 1996• DBA Oracle (desde 2001) & MySQL (desde 2005)• Instructor de Oracle University desde 2011• Co-fundador y Presidente del Grupo de Usuarios

Oracle de Uruguay (UYOUG) desde 2009• Orador frecuente en eventos como Oracle OpenWorld

Latinoamérica, Collaborate, OTN Tour Uruguay/Argentina, JIAP, MySQL Argentina

• Co-fundador y director de Awen Consulting

Page 3: Alta disponibilidad con Pacemaker

Octubre 2013 3/45

Agenda1)¿Pacemaker?2)Instalación3)Configuración

• Recursos• Agentes• Fencing

4)Monitoreo5)Operación6)Ejemplos / Demos

Page 4: Alta disponibilidad con Pacemaker

Octubre 2013 4/45

HA en BDDistintos sabores nativos en cada motor

• Mysql – Cluster shared nothing, replicación

• Postgres – Replicación, standby

• Oracle – Cluster shared storage, replicación, standby

Soluciones de terceros

• Replicación – Continuent, GoldenGate (ex, ahora Oracle)

• HA – Heartbeat, Pacemaker

• Específicas:

– Galera – replicación sincrónica MySQL

– DBVisit – standby sobre Oracle Standard Edition

– ...

Page 5: Alta disponibilidad con Pacemaker

Octubre 2013 5/45

¿Pacemaker?Cluster resource manager - http://www.clusterlabs.org/

• Detecta y recupera fallas de nodo y recursos.

• Solución de HA gpl (v2), no hay versión enterprise.

– Apoyado por RedHat, Novell y LinBit.

• Componentes: mensajería + agentes + recursos

• Soporta varios stacks de mensajería: Heartbeat, Corosync (fork de OpenAIS) y CMAN (redhat)

• Maneja cualquier recurso que se pueda gestionar con scripts.

• Robusto: 9 años en el mercado.

– Usado por control de tráfico aéreo de Alemania

Page 6: Alta disponibilidad con Pacemaker

Octubre 2013 6/45

Arquitectura

http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/_pacemaker_architecture.html

Page 7: Alta disponibilidad con Pacemaker

Octubre 2013 7/45

Arquitectura

http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/_pacemaker_architecture.html

Page 8: Alta disponibilidad con Pacemaker

Octubre 2013 8/45

Topologías soportadas

http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/_types_of_pacemaker_clusters.html

Page 9: Alta disponibilidad con Pacemaker

Octubre 2013 9/45

Pacemaker...• Funcionalidad incluida en Heartbeat hasta versión 2.1.3.

– Ahora heartbeat es solo mensajería y membresía ("cluster stack" o "cluster infrastructure").

• Instalación por defecto usa Corosync como cluster stack.

– fork de OpenAIS que implementa solo lo necesario

– protocolo Totem, UDP (puerto 5405), multicast

• Configuración almacenada en archivo XML

– CIB (cluster information base).

• Implementa STONITH como mecanismo de fencing.

• No requiere storage compartido.

Page 10: Alta disponibilidad con Pacemaker

Octubre 2013 10/45http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/_internal_components.html

Page 11: Alta disponibilidad con Pacemaker

Octubre 2013 11/45

Pacemaker con BD• Hay agentes para bases de datos MySQL, Postgres, Oracle,

SAP y DB2: http://www.linux-ha.org/wiki/Resource_Agents

• Opción oficial de HA en MySQL: Chapter 15 High Availability and Scalability

15.2 Overview of MySQL with DRBD/Pacemaker/Corosync/Oracle Linux

http://dev.mysql.com/doc/refman/5.6/en/ha-drbd.html

• Gran comunidad de usuarios

• percona-prm: Mysql Replication Manager– Versión Alpha en 2011, parte del paquete resource-agents

desde la versión 3.9.3 (OpenSUSE tiene cambios)

https://github.com/percona/percona-pacemaker-agents

Page 12: Alta disponibilidad con Pacemaker

Octubre 2013 12/45

MySQL con pacemaker • Evaluar uso de

– innodb_support_xa=1– sync_binlog=1

• Si hay réplicas– No usar log-slave-updates– Configurar read-only?

• Al ejecutar failover, que ocurre con:– Init-connect– event scheduler

Page 13: Alta disponibilidad con Pacemaker

Octubre 2013 13/45

¿Uso simple?• Versión depende el SO a usar

• Configurar cluster-stack (Heartbeat, Corosync o CMAN)

• Configurar recursos en pacemaker

– afinar parámetros

– quitar inicio automático en SO

• Configurar stonith para producción

• Probar escenarios de fallas

– Bajar recurso en SO

– Bajar recurso en SO y evitar que levante

– Poner nodo en standby (crm node standby/online)

• Implementar monitoreo

Page 14: Alta disponibilidad con Pacemaker

Octubre 2013 14/45

Instalación• OpenSUSE 12.3

nodo1:~ # zypper in pacemaker ... The following NEW packages are going to be installed: OpenIPMI cluster-glue corosync crmsh libcorosync4 libdlm libdlm3 libglue2 libnet1 libopenais3 libpacemaker3 openais openhpi pacemaker perl-TimeDate pssh python-curses python-dateutil python-pssh python-six python-tk resource-agents tk

The following recommended packages were automatically selected: crmsh libdlm resource-agents

• Tools son paquetes separados sin dependencia pacemaker-mgmt-client pacemaker-mgmt hawk

Page 15: Alta disponibilidad con Pacemaker

Octubre 2013 15/45

Configuración cluster-stackDefine servidores que participan, interfaz a usar, timeouts.

• Heartbeat

– /etc/ha.d/ha.cf - http://linux-ha.org/wiki/Ha.cf

• Corosync

– /etc/corosync/corosync.conf

bindnetaddr: 10.10.1.0 ← cambiar

– Versiones 1.x (plugin) y 2.x. OpenSUSE usa corosync 1.4 https://en.opensuse.org/openSUSE:High_Availability

– Manual: http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Clusters_from_Scratch/s-configure-corosync.html

Page 16: Alta disponibilidad con Pacemaker

Octubre 2013 16/45

Configuración Pacemaker• Ayuda incluida en los comandos de configuración:

crm ra classes

crm ra list ocf heartbeat

crm ra info ocf:heartbeat:IPaddr2

• Muy buena documentación:

http://www.clusterlabs.org/wiki/Documentation

Secciones a configurar:• Opciones globales (cluster options)• Nodos• Recursos• Constraints: relaciones entre recursos

– Orden de inicio (order)

– Lugar de ejecución (location)

– Dependencias (colocation)

Page 17: Alta disponibilidad con Pacemaker

Octubre 2013 17/45

Configuración PacemakerNo se necesita editar el archivo XML directamente

Utilitarios:

• CLI: crm_attribute, crm_resource, cibadmin

• Shell: crm

– configure edit: modificar la configuración en consola

• crm_gui: paquetes pacemaker-mgmt y pacemaker-mgmt-gui

• pcs: Pacemaker Configuration System

• hawk (web): https://github.com/ClusterLabs/hawk– Pacemaker >= 1.1.8 --> Hawk 0.6.x

< 1.1.8 --> Hawk 0.5.x

Page 18: Alta disponibilidad con Pacemaker

Octubre 2013 18/45

Configuración PacemakerAlgunas cluster options y valores por defecto

– Stonith-enabled # true

– Stonith-action # reboot

– no-quorum-policy # stop

• Cambios en configuración se hacen en un sólo nodo, internamente sincroniza con el resto.

• Nodo Designated Controller (DC): Elegido al inicio del cluster. Toma las decisiones. Genera más log.

Page 19: Alta disponibilidad con Pacemaker

Octubre 2013 19/45

Pacemaker: recursosDefinidos por los atributos:• clase: ocf / lsb / heartbeat / stonith

LSB: script de inicio cumpliendo Linux Standard Base

OCF: Open Cluster Framework, extensión de LSB– Instalados en /usr/lib/ocf/resource.d/

• parámetros• operaciones de monitoreo• scores: usado en toma de decisiones

- = no usar

+ = usar

INFINITY = constante

• stickiness: cuanto prefiere el recurso quedarse en el nodo, o el costo de mover el recurso

Page 20: Alta disponibilidad con Pacemaker

Octubre 2013 20/45

Pacemaker: agente• Ejecutable que maneja un recurso del cluster.• Implementado en cualquier lenguaje de programación.• Debe soportar las siguientes acciones: start — levanta el recurso    stop — baja el recurso    monitor — consulta el estado del recurso    meta-data — muestra metadatos del recurso en el agente   

• Opcionales: promote, demote, migrate_to, migrate_from, validate-all, usage/help, status

Page 21: Alta disponibilidad con Pacemaker

Octubre 2013 21/45

Pacemaker: agente• Manual para desarrollar agentes OCF:

– http://www.linux-ha.org/doc/dev-guides/ra-dev-guide.html

• Agente para MySQL: ocf:heartbeat:mysql– http://www.linux-ha.org/wiki/MySQL_(resource_agent)

– Percona PRM: https://raw.github.com/percona/percona-pacemaker-

agents/master/agents/mysql_prm

• Más tipos de recursos

– clones

– grupos

– multi-estados

Page 22: Alta disponibilidad con Pacemaker

Octubre 2013 22/45

Pacemaker: recursosEjemplo de configuración para IP Virtual:

$> crm configure primitive vip1 ocf:heartbeat:IPaddr2 params ip=10.10.1.5 cidr_netmask=32 op monitor interval=30s

Page 23: Alta disponibilidad con Pacemaker

Octubre 2013 23/45

Pacemaker: recursosParámetros en configuración Multi-state (master/slave, prim/sec) clone-max="2" # Sólo puede estar en dos instancias

clone-node-max="1" # Una instancia por nodo

master-max="1" # Sólo puede haber un master

master-node-max="1" # Un master por nodo

notify="true" # notificar start/stop de copias al resto de las copias

Detalles en “Configuration explained: An A-Z guide to Pacemaker's Configuration Options”

Page 24: Alta disponibilidad con Pacemaker

Octubre 2013 24/45

Pacemaker: recursosEjemplo de configuración para IP Virtual:

$> crm configure primitive vip1 ocf:heartbeat:IPaddr2 params ip=10.10.1.5 cidr_netmask=32 op monitor interval=30s

Configuración para DRBD:$> crm configure primitive drbd_disk ocf:linbit:drbd params drbd_resource="disco" \ op monitor interval="29s" role="Master" \ op monitor interval="31s" role="Slave" primitive fs_drbd ocf:heartbeat:Filesystem \ params device="/dev/drbd0" directory="/varios/01" fstype="ext3" ms ms_drbd drbd_disk \ meta master-max="1" master-node-max="1" clone-max="2" \ clone-node-max="1" notify="true" colocation mnt_on_master inf: fs_drbd ms_drbd:Master order mount_after_drbd inf: ms_drbd:promote fs_drbd:start

Page 25: Alta disponibilidad con Pacemaker

Octubre 2013 25/45

Pacemaker: recursosEjemplo de configuración MySQL activo/pasivo con DRBD

Se agrega a lo anterior:$> crm configure primitive ip_mysql ocf:heartbeat:IPaddr2 \ params ip="10.10.1.10" nic="eth0" primitive mysqld lsb:mysqld group mysql fs_drbd ip_mysql mysqld colocation mysql_on_drbd inf: mysql ms_drbd:Master order mysql_after_drbd inf: ms_drbd:promote mysql:start

Page 26: Alta disponibilidad con Pacemaker

Octubre 2013 26/45

Pacemaker: recursosEjemplo de configuración Postgres 9.1 activo/pasivo (1/4)$> crm configure property no-quorum-policy="ignore" stonith-enabled="false" \ crmd-transition-delay="0s" rsc_defaults resource-stickiness="INFINITY" migration-threshold="1" primitive pgsql ocf:heartbeat:pgsql params \ pgctl="/usr/pgsql-9.1/bin/pg_ctl" psql="/usr/bin/psql" pgdata="/data/pg" rep_mode="sync" node_list="db01 db02" \ restore_command="cp /data/pg/archive/%f %p" \ primary_conninfo_opt="keepalives_idle=60 keepalives_interval=5 \ keepalives_count=5" master_ip="192.168.2.51" stop_escalate="0" \ op start timeout="30s" interval="0s" on-fail="restart" \ op stop timeout="30s" interval="0s" on-fail="block" \ op monitor timeout="30s" interval="11s" on-fail="restart" \ op monitor timeout="30s" interval="10s" on-fail="restart" role="Master" \ op promote timeout="30s" interval="0s" on-fail="restart" \ op demote timeout="30s" interval="0s" on-fail="block" \ op notify timeout="60s" interval="0s"

Page 27: Alta disponibilidad con Pacemaker

Octubre 2013 27/45

Pacemaker: recursosEjemplo de configuración Postgres 9.1 activo/pasivo (2/4)... ms msPostgresql pgsql meta master-max="1" master-node-max="1" \ clone-max="2" clone-node-max="1" notify="true"

primitive vip-master ocf:heartbeat:IPaddr2 \ params ip="192.168.2.100" nic="eth0" cidr_netmask="24" \ op start interval="0s" timeout="60s" on-fail="restart" \ op monitor interval="10s" timeout="60s" on-fail="restart" \ op stop interval="0s" timeout="60s" on-fail="block"

primitive vip-rep ocf:heartbeat:IPaddr2 \ params ip="192.168.2.110" nic="eth0" cidr_netmask="24" \ meta migration-threshold="0" \ op start interval="0s" timeout="60s" on-fail="stop" \ op monitor interval="10s" timeout="60s" on-fail="restart" \ op stop interval="0s" timeout="60s" on-fail="block"

Page 28: Alta disponibilidad con Pacemaker

Octubre 2013 28/45

Pacemaker: recursosEjemplo de configuración Postgres 9.1 activo/pasivo (3/4)...primitive vip-slave ocf:heartbeat:IPaddr2 params ip="192.168.2.120" nic="eth0" cidr_netmask="24" meta resource-stickiness="1" \ op start timeout="60s" interval="0s" on-fail="restart" \ op monitor timeout="60s" interval="10s" on-fail="restart" \ op stop timeout="60s" interval="0s" on-fail="block"

primitive pingCheck ocf:pacemaker:ping \ params name="default_ping_set" host_list="192.168.2.100" multiplier="100" \ op start interval="0s" timeout="60s" on-fail="restart" \ op monitor interval="5s" timeout="60s" on-fail="restart" \ op stop interval="0s" timeout="60s" on-fail="ignore"

clone clnPingd pingCheck

group master-group vip-master vip-rep meta ordered="false"

Page 29: Alta disponibilidad con Pacemaker

Octubre 2013 29/45

Pacemaker: recursosEjemplo de configuración Postgres 9.1 activo/pasivo (4/4)...location rsc_location-1 msPostgresql \ rule -inf: not_defined default_ping_set or default_ping_set lt 100

location rsc_location-2 vip-slave \ rule 200: pgsql-status eq "HS:sync" \ rule 100: pgsql-status eq "PRI" \ rule -inf: not_defined pgsql-status \ rule -inf: pgsql-status ne "HS:sync" and pgsql-status ne "PRI"

colocation rsc_colocation-1 inf: msPostgresql clnPingdcolocation rsc_colocation-2 inf: master-group msPostgresql:Master

order rsc_order-1 0: clnPingd msPostgresql symmetrical=falseorder rsc_order-2 inf: msPostgresql:promote master-group:start symmetrical=falseorder rsc_order-3 0: msPostgresql:demote master-group:stop symmetrical=false

Page 30: Alta disponibilidad con Pacemaker

Octubre 2013 30/45

Pacemaker: debug• Se habilita debug creando el archivo de log:

mkdir -p /tmp/mysql.ocf.ra.debug

touch /tmp/mysql.ocf.ra.debug/log

• Testear los scripts OCF configurando las variables esperadas: export OCF_ROOT=/usr/lib/ocf export OCF_RESKEY_binary=/usr/sbin/mysqld export OCF_RESKEY_config=/etc/my.cnf export OCF_RESKEY_datadir=/var/lib/mysql export OCF_RESKEY_log=/var/lib/mysql/nodo1.err export OCF_RESKEY_pid=/var/lib/mysql/mysql.pid export OCF_RESKEY_socket=/var/lib/mysq/mysql.sock export OCF_RESKEY_user=root

/usr/lib/ocf/resource.d/heartbeat/mysql start

Page 31: Alta disponibilidad con Pacemaker

Octubre 2013 31/45

Pacemaker: fencing• Dos tipos de Fencing: por recurso o por nodo

• Implementado con:

– un proceso (stonithd)

– plugins para cada dispositivo soportado

• Categorías de dispositivos usados para Stonith:

– UPS (Uninterruptible Power Supply)

– PDU (Power Distribution Unit)

– Blade power control devices

– Lights-out devices: IBM RSA, HP iLO, Dell DRAC

– Testing devices

• Documentación: http://www.clusterlabs.org/doc/crm_fencing.html

Page 32: Alta disponibilidad con Pacemaker

Octubre 2013 32/45

Pacemaker: fencingEn virtuales: dispositivo fence_virsh o external/xen0

Ver http://linux-ha.org/wiki/DomUClusters

Posibilidad de usar shared storage: dispositivo sbd

Dispositivos soportados:

stonith -L● apcmaster● apcmastersnmp● apcsmart● baytech● bladehpi● cyclades● drac3● external/drac5● external/dracmc-telnet● external/hetzner● external/hmchttp● external/ibmrsa● external/ibmrsa-telnet

● external/ipmi● external/ippower9258● external/kdumpcheck● external/libvirt● external/nut● external/rackpdu● external/riloe● external/sbd● external/vcenter● external/vmware● external/xen0● external/xen0-ha● ibmhmc

● Ipmilan● meatware● nw_rpc100s● rcd_serial● rps10● suicide● wti_mpc● wti_nps

- external/ssh- null- ssh

Page 33: Alta disponibilidad con Pacemaker

Octubre 2013 33/45

Pacemaker: fencing¿Qué parámetros hay que configurar de un dispositivo de Stonith dado?

stonith -t external/xen0 -h STONITH Device: external/xen0 - ssh-based Linux host reset for Xen DomU trough Dom0 Fine for testing, but not really suitable for production!

For more information see http://openssh.org http://www.xensource.com/ http://linux-ha.org/wiki

List of valid parameter names for external/xen0 STONITH device: hostlist dom0 For Config info [-p] syntax, give each of the above parameters in order as the -p value. Arguments are separated by white space. Config file [-F] syntax is the same as -p, except # at the start of a line denotes a comment

Page 34: Alta disponibilidad con Pacemaker

Octubre 2013 34/45

Pacemaker: fencingEjemplos:

primitive stonith-device stonith:external/sbd \

params sbd_device="/dev/sdc" \

op monitor interval="60s"

primitive fence_cluster2.test stonith:fence_virsh params \

ipaddr="192.168.100.1" \

action="reboot" login="root" passwd="password" port="cluster-test-2" \

pcmk_host_list="cluster2.test" pcmk_host_check="static-list" \

pcmk_host_map=""

Page 35: Alta disponibilidad con Pacemaker

Octubre 2013 35/45

Pacemaker: monitoreo• crm status / crm_mon -Arf

-A, --show-node-attributes

-r, --inactive muestra recursos inactivos

-f, --failcounts cantidad de fallas de recursos

• OCF ClusterMon notifica cambios de estado

– Snmp / script– https://github.com/ClusterLabs/pacemaker/blob/master/extra/pcmk_snmp_helper.sh

crm configure primitive monitor ocf:pacemaker:ClusterMon \ params user="root" update="30" \ extra_options="-E /home/scripts/pcmk_notify.sh \ op monitor on-fail="restart" interval="10"

Page 36: Alta disponibilidad con Pacemaker

Octubre 2013 36/45

Pacemaker: operaciónTareas de mantenimiento

• respaldar configuración de CIB

cibadmin --query > cib-bkp.xml

• restaurar

cibadmin --replace --xml-file < cib-bkp.xml

• agregar nodo al cluster

– instalar pacemaker y corosync

– copiar corosync.conf (cambiar ip local) y authkey

– Levantar corosync, luego pacemaker

– Aumentar parámetro “clone-max” de recursos

Page 37: Alta disponibilidad con Pacemaker

Octubre 2013 37/45

Pacemaker: operaciónActualizar versión de Pacemaker no siempre es una operación sin baja total del cluster (rolling), obliga a actualizar todos los nodos al mismo tiempo. Ej: corosync 0.x a 1.x, 1.x a 2.0

http://clusterlabs.org/doc/en-US/Pacemaker/1.1-crmsh/html/Clusters_from_Scratch/_configuring_corosync.html

Pasos para upgrade:

1) validar cambios en la configuración en la nueva versión (CIB)

2) detener monitoreo de recursos (mantenance-mode=true)

3) bajar procesos del cluster (pacemaker + corosync)

4) actualizar software y CIB

5) levantar cluster

6) habilitar/configurar monitoreo de recursos

Page 38: Alta disponibilidad con Pacemaker

Octubre 2013 38/45

Ejemplosapache usando dos nodos con DRBD, activo/pasivo y activo/activo usando GFS2 (en fedora): "clusters from scratch"

Demos:

1) configuración cluster

2) probar failover de VIP

3) Usar HA de MySQL con 2 nodos (DRDB)

En ppt:

4) replicación MySQL

Page 39: Alta disponibilidad con Pacemaker

39/45

Configuración usada2 VM 1Gb Ram – 20Gb HD OpenSUSE 12.3 x64Eth0 – 10.10.1.x - internal network en VboxEth1 – Bridged en Vbox

Host – Mismo SO, VirtualBox 4.2.18-92.1

OpenSUSE incluye en los repositorios factory: Pacemaker 1.1.7-3 Corosync 1.4.3-4.1.1 Crmsh 1.2.4-3.1.1 Drbd 8.3.11-5.1.1

Dependencias para instalar todo con pacemaker– Quedan fuera utilitarios (hawk y crm_gui)

Page 40: Alta disponibilidad con Pacemaker

Octubre 2013 40/45

1) configuración clustera) configurar visibildad de nodos (/etc/hosts – ssh keys)b) instalar corosync y pacemaker en dos nodosc) configurar corosync (/etc/corosync/corosync.conf)d) configurar parametros globales pacemakere) ver agentes disponibles y sus parámetros

Page 41: Alta disponibilidad con Pacemaker

Octubre 2013 41/45

2) probar failover de VIPf) configurar IP virtualg) probar fallas Moviendo recursos a mano Generando fallas en el SOh) agregar notificación de transiciones y repetir fallas

Page 42: Alta disponibilidad con Pacemaker

Octubre 2013 42/45

3) Usar HA de MySQL con 2 nodos (DRDB)

a) instalar DRBD en ambos nodosb) agregar un disco nuevo (/dev/sdb)c) configurar drdb (archivo /etc/drbd.conf)d) crear disco lógico DRBD en los dos nodos (drbdadm)e) sincronizar nodo2f) crear filesystem en nodo1 y montarlo en disco DRBDg) ver los datos en el nodo2h) configurar HA para DRBDi) probar HA de DRBDj) configurar MySQL usando FS en DRBDj) probar HA de MySQL

Page 43: Alta disponibilidad con Pacemaker

Octubre 2013 43/45

Réplicas MySQL con PRM

percona-prm:https://github.com/percona/percona-pacemaker-agents/blob/master/doc/PRM-setup-guide.rst

• CIB:

– log file y posición del master

– segundos de atraso de slaves

• Promoción: detener resto de slaves

• Caída del master:

– slaves hacen fencing del master si es necesario

– detienen sus réplicas

– eligen el más actualizado para promover en master

– nodo elegido actualiza CIB con esta info

– el resto apunta a éste tomando datos actualizados del CIB

Page 44: Alta disponibilidad con Pacemaker

Octubre 2013 44/45

¿Preguntas?

[email protected]

@ncalerouy

Page 45: Alta disponibilidad con Pacemaker

Octubre 2013 45/45

Referencias• Documentación Pacemaker: http://www.clusterlabs.org

• Pacemaker OCF Resource Agents: http://www.linux-ha.org/wiki/Resource_Agents

• Overview of MySQL with DRBD/Pacemaker/Corosync

http://dev.mysql.com/doc/refman/5.6/en/ha-drbd.html

• Percona PRM setup guide: https://github.com/percona/percona-pacemaker-agents/blob/master/doc/PRM-setup-guide.rst

• Florian Crouzat Blog: http://floriancrouzat.net• Heartbeat: http://www.linux-ha.org