SlideShare una empresa de Scribd logo
1 de 45
Descargar para leer sin conexión
Alta disponibilidad con Pacemaker
Ing. Nelson Calero, OCP
nelson.calero@awen.com.uy
@ncalerouy
MySQL / NoSQL / Cloud Latin America Conference
Martes 15 de Octubre 2013 - Buenos Aires, Argentina
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

Octubre 2013

2/45
Agenda
1)¿Pacemaker?
2)Instalación
3)Configuración
•
•
•

Recursos
Agentes
Fencing

4)Monitoreo
5)Operación
6)Ejemplos / Demos
Octubre 2013

3/45
HA en BD
Distintos 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
– ...
Octubre 2013

4/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
Octubre 2013

5/45
Arquitectura

Octubre 2013

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

Octubre 2013

http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/_pacemaker_architecture.html
7/45
Topologías soportadas

http://clusterlabs.org/doc/en-US/Pacemaker/1.1-plugin/html/Pacemaker_Explained/_types_of_pacemaker_clusters.html
Octubre 2013
8/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.
Octubre 2013

9/45
Octubre 2013

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

10/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
Octubre 2013

11/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

Octubre 2013

12/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
Octubre 2013

13/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

Octubre 2013

14/45
Configuración cluster-stack
Define 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.1plugin/html/Clusters_from_Scratch/s-configure-corosync.html

Octubre 2013

15/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)

Octubre 2013

– Lugar de ejecución (location)
– Dependencias (colocation)

16/45
Configuración Pacemaker
No 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
Octubre 2013

17/45
Configuración Pacemaker
Algunas 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.

Octubre 2013

18/45
Pacemaker: recursos
Definidos 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
Octubre 2013

19/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
Octubre 2013

20/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-pacemakeragents/master/agents/mysql_prm

• Más tipos de recursos
– clones
– grupos
– multi-estados

Octubre 2013

21/45
Pacemaker: recursos
Ejemplo 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

Octubre 2013

22/45
Pacemaker: recursos
Pará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”

Octubre 2013

23/45
Pacemaker: recursos
Ejemplo 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
Octubre 2013

24/45
Pacemaker: recursos
Ejemplo 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

Octubre 2013

25/45
Pacemaker: recursos
Ejemplo 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"
Octubre 2013

26/45
Pacemaker: recursos
Ejemplo 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"
Octubre 2013

27/45
Pacemaker: recursos
Ejemplo 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"
Octubre 2013

28/45
Pacemaker: recursos
Ejemplo 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
colocation rsc_colocation-2 inf: master-group

clnPingd
msPostgresql:Master

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

29/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
Octubre 2013

30/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
Octubre 2013

31/45
Pacemaker: fencing
En 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
●
●
●
●
●
●
●
●
●
●
●
●

Octubre 2013

●

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
32/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://linuxha.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
Octubre 2013

33/45
Pacemaker: fencing
Ejemplos:

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

Octubre 2013

34/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"
Octubre 2013

35/45
Pacemaker: operación
Tareas 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

Octubre 2013

36/45
Pacemaker: operación
Actualizar 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.1crmsh/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
Octubre 2013

37/45
Ejemplos
apache 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

Octubre 2013

38/45
Configuración usada
2 VM 1Gb Ram – 20Gb HD
OpenSUSE 12.3 x64
Eth0 – 10.10.1.x - internal network en Vbox
Eth1 – 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)

39/45
1) configuración cluster
a) configurar visibildad de nodos (/etc/hosts – ssh keys)
b) instalar corosync y pacemaker en dos nodos
c) configurar corosync (/etc/corosync/corosync.conf)
d) configurar parametros globales pacemaker
e) ver agentes disponibles y sus parámetros

Octubre 2013

40/45
2) probar failover de VIP
f) configurar IP virtual
g) probar fallas
Moviendo recursos a mano
Generando fallas en el SO
h) agregar notificación de transiciones y repetir fallas

Octubre 2013

41/45
3) Usar HA de MySQL con 2 nodos (DRDB)
a) instalar DRBD en ambos nodos
b) 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 nodo2
f) crear filesystem en nodo1 y montarlo en disco DRBD
g) ver los datos en el nodo2
h) configurar HA para DRBD
i) probar HA de DRBD
j) configurar MySQL usando FS en DRBD
j) probar HA de MySQL

Octubre 2013

42/45
Réplicas MySQL con PRM
percona-prm:
https://github.com/percona/percona-pacemaker-agents/blob/master/doc/PRM-setupguide.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
Octubre – el resto apunta a éste tomando datos actualizados del CIB
2013

43/45
¿Preguntas?

nelson.calero@awen.com.uy
@ncalerouy
Octubre 2013

44/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/PRMsetup-guide.rst

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

45/45

Más contenido relacionado

La actualidad más candente

Alta disponibilidad-con-heartbeat
Alta disponibilidad-con-heartbeatAlta disponibilidad-con-heartbeat
Alta disponibilidad-con-heartbeatDavid Acevedo
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresqljockbrera
 
Firewall en cluster de alta disponibilidad
Firewall en cluster de alta disponibilidadFirewall en cluster de alta disponibilidad
Firewall en cluster de alta disponibilidadcercer
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Modelos de alta disponibilidad
Modelos de alta disponibilidadModelos de alta disponibilidad
Modelos de alta disponibilidadDavid Herrero
 
Manual de configuracion de un cluster en Debian
Manual de configuracion de un cluster en DebianManual de configuracion de un cluster en Debian
Manual de configuracion de un cluster en Debianlavp28
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresNelson Calero
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.EtiCAGNU
 
Funcionamiento con my sql
Funcionamiento con my sqlFuncionamiento con my sql
Funcionamiento con my sqldante123456
 
Postgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por DentroPostgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por DentroEQ SOFT EIRL
 
Oracle Real Application Cluster (RAC)
Oracle Real Application Cluster (RAC)Oracle Real Application Cluster (RAC)
Oracle Real Application Cluster (RAC)Heyner Marmol
 
Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Nelson Calero
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en WindowsErick Cruz
 
Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2EQ SOFT EIRL
 

La actualidad más candente (20)

Alta disponibilidad-con-heartbeat
Alta disponibilidad-con-heartbeatAlta disponibilidad-con-heartbeat
Alta disponibilidad-con-heartbeat
 
Replicacion Postgresql
Replicacion PostgresqlReplicacion Postgresql
Replicacion Postgresql
 
Mysql cluster
Mysql clusterMysql cluster
Mysql cluster
 
Firewall en cluster de alta disponibilidad
Firewall en cluster de alta disponibilidadFirewall en cluster de alta disponibilidad
Firewall en cluster de alta disponibilidad
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Heartbeat
HeartbeatHeartbeat
Heartbeat
 
Modelos de alta disponibilidad
Modelos de alta disponibilidadModelos de alta disponibilidad
Modelos de alta disponibilidad
 
Manual de configuracion de un cluster en Debian
Manual de configuracion de un cluster en DebianManual de configuracion de un cluster en Debian
Manual de configuracion de un cluster en Debian
 
UYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New featuresUYOUG 2012 - Oracle RAC 11gR2 - New features
UYOUG 2012 - Oracle RAC 11gR2 - New features
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
 
Funcionamiento con my sql
Funcionamiento con my sqlFuncionamiento con my sql
Funcionamiento con my sql
 
Postgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por DentroPostgresql Como Funciona Una Dbms Por Dentro
Postgresql Como Funciona Una Dbms Por Dentro
 
Oracle Real Application Cluster (RAC)
Oracle Real Application Cluster (RAC)Oracle Real Application Cluster (RAC)
Oracle Real Application Cluster (RAC)
 
Cluster
ClusterCluster
Cluster
 
Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014Oracle RAC sin sorpresas - v2014
Oracle RAC sin sorpresas - v2014
 
Cluster MySQL en Windows
Cluster MySQL en WindowsCluster MySQL en Windows
Cluster MySQL en Windows
 
Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2Dba PostgreSQL desde básico a avanzado parte2
Dba PostgreSQL desde básico a avanzado parte2
 
Requerimientos de PostgreSQL
Requerimientos de PostgreSQLRequerimientos de PostgreSQL
Requerimientos de PostgreSQL
 
Replicación Mysql
Replicación MysqlReplicación Mysql
Replicación Mysql
 
Conceptos de clustering
Conceptos de clusteringConceptos de clustering
Conceptos de clustering
 

Similar a Alta disponibilidad con Pacemaker

Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupalcamposer
 
Consejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoConsejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoToni de la Fuente
 
Presentacion Demo Open Solaris
Presentacion Demo Open SolarisPresentacion Demo Open Solaris
Presentacion Demo Open Solarisguest926912
 
Curso de PostgreSQL
Curso de PostgreSQLCurso de PostgreSQL
Curso de PostgreSQLEQ SOFT EIRL
 
Cacti desde-paquetes
Cacti desde-paquetesCacti desde-paquetes
Cacti desde-paquetesRenè Grillet
 
Cacti desde-paquetes
Cacti desde-paquetesCacti desde-paquetes
Cacti desde-paquetestioe
 
Monta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIMonta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIUrko Zurutuza
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magentoOnestic
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualizaciónMarcelo Ochoa
 
Clusters Beowulf
Clusters BeowulfClusters Beowulf
Clusters Beowulfsrcid
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIker Canarias
 
Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1EQ SOFT EIRL
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pedvin_marcelo
 

Similar a Alta disponibilidad con Pacemaker (20)

Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Entonamiento y perfilado de Drupal
Entonamiento y perfilado de DrupalEntonamiento y perfilado de Drupal
Entonamiento y perfilado de Drupal
 
Consejos de seguridad con Alfresco
Consejos de seguridad con AlfrescoConsejos de seguridad con Alfresco
Consejos de seguridad con Alfresco
 
Presentacion Demo Open Solaris
Presentacion Demo Open SolarisPresentacion Demo Open Solaris
Presentacion Demo Open Solaris
 
Curso de PostgreSQL
Curso de PostgreSQLCurso de PostgreSQL
Curso de PostgreSQL
 
Cacti desde-paquetes
Cacti desde-paquetesCacti desde-paquetes
Cacti desde-paquetes
 
Cacti desde-paquetes
Cacti desde-paquetesCacti desde-paquetes
Cacti desde-paquetes
 
Ceph Meetup
Ceph MeetupCeph Meetup
Ceph Meetup
 
Monta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión IIMonta una Infraestructura Big Data para tu Empresa - Sesión II
Monta una Infraestructura Big Data para tu Empresa - Sesión II
 
Rendimiento en magento
Rendimiento en magentoRendimiento en magento
Rendimiento en magento
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Open Build Service
Open Build ServiceOpen Build Service
Open Build Service
 
Pg pool cluster postgresql
Pg pool cluster postgresqlPg pool cluster postgresql
Pg pool cluster postgresql
 
Monitorización En OpenSolaris
Monitorización En OpenSolarisMonitorización En OpenSolaris
Monitorización En OpenSolaris
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
Clusters Beowulf
Clusters BeowulfClusters Beowulf
Clusters Beowulf
 
Introducción a Servidor HTTP Apache
Introducción a Servidor HTTP ApacheIntroducción a Servidor HTTP Apache
Introducción a Servidor HTTP Apache
 
Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1Dba PostgreSQL desde básico a avanzado parte1
Dba PostgreSQL desde básico a avanzado parte1
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
 

Más de Nelson Calero

Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Nelson Calero
 
Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Nelson Calero
 
Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Nelson Calero
 
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Nelson Calero
 
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Nelson Calero
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Nelson Calero
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Nelson Calero
 
SSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesSSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesNelson Calero
 
Practical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsPractical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsNelson Calero
 
Automate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationAutomate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationNelson Calero
 
Welcome to databases in the Cloud
Welcome to databases in the CloudWelcome to databases in the Cloud
Welcome to databases in the CloudNelson Calero
 
Redefining tables online without surprises
Redefining tables online without surprisesRedefining tables online without surprises
Redefining tables online without surprisesNelson Calero
 
Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
Protect Sensitive Data: Implementing Fine-Grained Access Control in OracleProtect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
Protect Sensitive Data: Implementing Fine-Grained Access Control in OracleNelson Calero
 
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Nelson Calero
 
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Nelson Calero
 
My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cNelson Calero
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLNelson Calero
 
MariaDB y FOSS en infraestructura de salud y estándares
MariaDB y FOSS en infraestructura de salud y estándaresMariaDB y FOSS en infraestructura de salud y estándares
MariaDB y FOSS en infraestructura de salud y estándaresNelson Calero
 
Collaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsCollaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsNelson Calero
 
Collaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryCollaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryNelson Calero
 

Más de Nelson Calero (20)

Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023Database automation guide - Oracle Community Tour LATAM 2023
Database automation guide - Oracle Community Tour LATAM 2023
 
Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022Terraform Tips and Tricks - LAOUC 2022
Terraform Tips and Tricks - LAOUC 2022
 
Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021Oracle on kubernetes 101 - Dec/2021
Oracle on kubernetes 101 - Dec/2021
 
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
Automate Oracle database patches and upgrades using Fleet Provisioning and Pa...
 
Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19Oracle Exadata Cloud Services guide from practical experience - OOW19
Oracle Exadata Cloud Services guide from practical experience - OOW19
 
Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19Automate your oracle cloud infrastructure operations v2.0 - OOW19
Automate your oracle cloud infrastructure operations v2.0 - OOW19
 
Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0Automate the operation of your Oracle Cloud infrastructure v2.0
Automate the operation of your Oracle Cloud infrastructure v2.0
 
SSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprisesSSL certificates in the Oracle Database without surprises
SSL certificates in the Oracle Database without surprises
 
Practical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environmentsPractical guide to Oracle Virtual environments
Practical guide to Oracle Virtual environments
 
Automate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operationAutomate your Oracle Cloud Infrastructure operation
Automate your Oracle Cloud Infrastructure operation
 
Welcome to databases in the Cloud
Welcome to databases in the CloudWelcome to databases in the Cloud
Welcome to databases in the Cloud
 
Redefining tables online without surprises
Redefining tables online without surprisesRedefining tables online without surprises
Redefining tables online without surprises
 
Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
Protect Sensitive Data: Implementing Fine-Grained Access Control in OracleProtect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
Protect Sensitive Data: Implementing Fine-Grained Access Control in Oracle
 
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
Evolution of Performance Management: Oracle 12c adaptive optimizations - ukou...
 
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
Oracle Exadata Maintenance tasks 101 - OTN Tour 2015
 
My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12c
 
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQLAROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
AROUG BIDAY 2013 - Automatizar procesos de ETL con PL/SQL
 
MariaDB y FOSS en infraestructura de salud y estándares
MariaDB y FOSS en infraestructura de salud y estándaresMariaDB y FOSS en infraestructura de salud y estándares
MariaDB y FOSS en infraestructura de salud y estándares
 
Collaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAsCollaborate 2012 - Administering MySQL for Oracle DBAs
Collaborate 2012 - Administering MySQL for Oracle DBAs
 
Collaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mysteryCollaborate 2012 - RMAN Eliminate the mystery
Collaborate 2012 - RMAN Eliminate the mystery
 

Alta disponibilidad con Pacemaker

  • 1. Alta disponibilidad con Pacemaker Ing. Nelson Calero, OCP nelson.calero@awen.com.uy @ncalerouy MySQL / NoSQL / Cloud Latin America Conference Martes 15 de Octubre 2013 - Buenos Aires, Argentina
  • 2. 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 Octubre 2013 2/45
  • 4. HA en BD Distintos 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 – ... Octubre 2013 4/45
  • 5. ¿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 Octubre 2013 5/45
  • 9. 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. Octubre 2013 9/45
  • 11. 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 Octubre 2013 11/45
  • 12. 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 Octubre 2013 12/45
  • 13. ¿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 Octubre 2013 13/45
  • 14. 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 Octubre 2013 14/45
  • 15. Configuración cluster-stack Define 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.1plugin/html/Clusters_from_Scratch/s-configure-corosync.html Octubre 2013 15/45
  • 16. 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) Octubre 2013 – Lugar de ejecución (location) – Dependencias (colocation) 16/45
  • 17. Configuración Pacemaker No 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 Octubre 2013 17/45
  • 18. Configuración Pacemaker Algunas 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. Octubre 2013 18/45
  • 19. Pacemaker: recursos Definidos 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 Octubre 2013 19/45
  • 20. 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 Octubre 2013 20/45
  • 21. 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-pacemakeragents/master/agents/mysql_prm • Más tipos de recursos – clones – grupos – multi-estados Octubre 2013 21/45
  • 22. Pacemaker: recursos Ejemplo 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 Octubre 2013 22/45
  • 23. Pacemaker: recursos Pará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” Octubre 2013 23/45
  • 24. Pacemaker: recursos Ejemplo 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 Octubre 2013 24/45
  • 25. Pacemaker: recursos Ejemplo 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 Octubre 2013 25/45
  • 26. Pacemaker: recursos Ejemplo 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" Octubre 2013 26/45
  • 27. Pacemaker: recursos Ejemplo 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" Octubre 2013 27/45
  • 28. Pacemaker: recursos Ejemplo 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" Octubre 2013 28/45
  • 29. Pacemaker: recursos Ejemplo 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 colocation rsc_colocation-2 inf: master-group clnPingd msPostgresql:Master order rsc_order-1 0: clnPingd msPostgresql symmetrical=false order rsc_order-2 inf: msPostgresql:promote master-group:start symmetrical=false order rsc_order-3 0: msPostgresql:demote master-group:stop symmetrical=false Octubre 2013 29/45
  • 30. 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 Octubre 2013 30/45
  • 31. 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 Octubre 2013 31/45
  • 32. Pacemaker: fencing En 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 ● ● ● ● ● ● ● ● ● ● ● ● Octubre 2013 ● 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 32/45
  • 33. 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://linuxha.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 Octubre 2013 33/45
  • 34. Pacemaker: fencing Ejemplos: 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="" Octubre 2013 34/45
  • 35. 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" Octubre 2013 35/45
  • 36. Pacemaker: operación Tareas 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 Octubre 2013 36/45
  • 37. Pacemaker: operación Actualizar 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.1crmsh/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 Octubre 2013 37/45
  • 38. Ejemplos apache 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 Octubre 2013 38/45
  • 39. Configuración usada 2 VM 1Gb Ram – 20Gb HD OpenSUSE 12.3 x64 Eth0 – 10.10.1.x - internal network en Vbox Eth1 – 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) 39/45
  • 40. 1) configuración cluster a) configurar visibildad de nodos (/etc/hosts – ssh keys) b) instalar corosync y pacemaker en dos nodos c) configurar corosync (/etc/corosync/corosync.conf) d) configurar parametros globales pacemaker e) ver agentes disponibles y sus parámetros Octubre 2013 40/45
  • 41. 2) probar failover de VIP f) configurar IP virtual g) probar fallas Moviendo recursos a mano Generando fallas en el SO h) agregar notificación de transiciones y repetir fallas Octubre 2013 41/45
  • 42. 3) Usar HA de MySQL con 2 nodos (DRDB) a) instalar DRBD en ambos nodos b) 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 nodo2 f) crear filesystem en nodo1 y montarlo en disco DRBD g) ver los datos en el nodo2 h) configurar HA para DRBD i) probar HA de DRBD j) configurar MySQL usando FS en DRBD j) probar HA de MySQL Octubre 2013 42/45
  • 43. Réplicas MySQL con PRM percona-prm: https://github.com/percona/percona-pacemaker-agents/blob/master/doc/PRM-setupguide.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 Octubre – el resto apunta a éste tomando datos actualizados del CIB 2013 43/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/PRMsetup-guide.rst • Florian Crouzat Blog: http://floriancrouzat.net • Heartbeat: http://www.linux-ha.org Octubre 2013 45/45