sábado, 2 de marzo de 2013

HA cluster de apache2 con pacemaker y corosync

Este post se traspasará pronto a www.systerminal.com

(pendiente de mejoración)
En este pequeño tutorial os mostraré como configurar básicamente un cluster en alta disponibilidad  sobre apache2 con corosync y pacemaker.

Para montarla tenemos dos maquinas:

churchill: 192.168.1.13 (nodo principal)
clinton: 192.168.1.254

Para empezar instalaremos apache2

aptitude install apache2


Y crearemos un virtualhost (si no sabeos mirad este enlace http://enunlugardealcala.blogspot.com.es/2012/10/virtualhosting-en-apache.html) en ambos hosts con el siguiente contenido :


<VirtualHost 127.0.0.1:80>
    ServerAdmin webmaster@localhost.com
    ServerName localhost
    ErrorLog /var/log/apache2/nodo.error_log
    CustomLog /var/log/apache2/nodo.access_log common
    <Location /server-status>
        SetHandler server-status
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Location>
</VirtualHost>

Este host será el que le indique  al otro nodo como esta este nodo.

Ahora instalaremos corosync y pacemaker en ambos nodos:

aptitude install pacemaker corosync



Crearemos una clave en el nodo principal:

corosync-keygen


En el caso de que no tengamos interfaz gráfico o estemos en un entorno virtualizado, usaremos estos comandos antes de generar la clave:

mknod /dev/newrandom c 1 9
chmod --reference=/dev/random /dev/random
mv -f /dev/newrandom /dev/random


Después pasaremos al otro nodo la clave generada:

scp /etc/corosync/authkey clinton:/etc/corosync/authkey



Editaremos el fichero de configuración de ambos nodos (/etc/corosync/corosync.conf) y añadimos la red en el que se van a sincronizar:

bindnetaddr: 192.168.1.0


También tendremos que configurar el fichero /etc/default/corosync para que reconozca el demonio, esto se consigue poniéndolo a yes:

START=yes

Se reinicia el servicio en ambos nodos:

service corosync restart


Y ahora se tendrán que sincronizar ambos nodos:

============
Last updated: Sat Mar  2 15:09:02 2013
Last change: Sat Mar  2 14:03:03 2013 via crm_attribute on clinton
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
0 Resources configured.
============

Online: [ clinton churchill ]


A continuación desactivaremos el STONITH:

crm configure property stonith-enabled=false

Y configuraremos un recurso para los nodos ( a partir de ahora todo lo que se configure de crm en un nodo se replicará al otro):

crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 params ip=192.168.1.101 cidr_netmask=32 op monitor interval=30s

Podremos comprobarlo haciendo un crm_mon:

============
Last updated: Sat Mar  2 15:09:02 2013
Last change: Sat Mar  2 14:03:03 2013 via crm_attribute on clinton
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
1 Resources configured.
============

Online: [ clinton churchill ]

ClusterIP       (ocf::heartbeat:IPaddr2):       Started churchill



Después configuraremos el recurso para apache:

crm configure primitive P_APACHE ocf:heartbeat:apache params configfile="/etc/apache2/apache2.conf" statusurl="http://localhost/server-status" op monitor interval="40s"



Pondremos el orden en el que mirara el estado
crm configure order START_ORDER inf: ClusterIP P_APACHE

Marcaremos ambos nodos comoel primero y el segundo
crm configure location  L_IP_NODE001 ClusterIP 100: churchill
crm configure location  L_IP_NODE002 ClusterIP 100: clinton

Haremos un crm_mon y veremos que el recurso de apache está configurado:

============
Last updated: Sat Mar  2 15:26:36 2013
Last change: Sat Mar  2 15:26:34 2013 via cibadmin on churchill
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Online: [ clinton churchill ]

ClusterIP       (ocf::heartbeat:IPaddr2):       Started churchill
P_APACHE        (ocf::heartbeat:apache):        Started churchill


Podremos ver quien sirve la web:

Pararemos un nodo con crm node standby:

crm node standby churchill


Volveremos a monitorizarlo con cmr_mon:

============
Last updated: Sat Mar  2 15:54:45 2013
Last change: Sat Mar  2 15:54:40 2013 via crm_attribute on churchill
Stack: openais
Current DC: clinton - partition with quorum
Version: 1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff
2 Nodes configured, 2 expected votes
2 Resources configured.
============

Node churchill: standby
Online: [ clinton ]

ClusterIP       (ocf::heartbeat:IPaddr2):       Started clinton
P_APACHE        (ocf::heartbeat:apache):        Started clinton

Vemos como ha cambiado los recursos de nodo, por lo que la web la estará ofreciendo clinton:



Y esto es todo, aunque me gustaría citar algunos comandos que pueden servir.

Para mirar la configuración que hemos ido añadiendo , nos basta con ejecutar crm configure show

Si queremos editar a mano esa configuración, nos bastaría con crm configure edit y si queremos modificar el editor de texto con el que lo abre, solo tendremos que cambiar la variable de entorno, export EDITOR="sur/bin/nano"

No hay comentarios:

Publicar un comentario