alta disponibilidad con pacemaker

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

Upload: nelson-calero

Post on 14-May-2015

1.231 views

Category:

Documents


0 download

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.

TRANSCRIPT

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