Clustering Alta disponibilidad en Linux. heartbeat
En los tiempos que vivimos es vital para las empresas y el negocio tener los aplicativos, servicios y páginas web disponibles siempre o casi casi siempre, y no sólo hablamos por el tema económico, si no por imagen, pensad que si a la hora de intentar acceder a una página web determinada un alto % de las veces no está disponible en términos profesionales da cierta inseguridad de cómo manejan sus aplicativos, y en otros términos perderemos un considerable número de visitas e interés por los usuarios.
Si hay un campo en donde Linux he visto que ha destacado o es el jugador titular indiscutible, es en el clustering, la capacidad de unir varias máquinas virtuales o físicas para dar servicio a la vez de forma que se balancean recursos para evitar sobrecargas de algunos servidores y en casos de que alguno falle y no pueda darlo. Esto es algo transparente al usuario final, pues tendremos una dirección virtual en donde se accede a todo el servicio del cluster y luego los nodos que son los que realmente proporcionarán el servicio.
Este es el top 500 de sistemas operativos a nivel mundial de supercomputadoras:
Las lista completa oficial la podéis encontrar en Top 500 supercomputers
En este artículo vamos a poner un ejemplo de una configuración básica de un cluster Heartbeat en Linux que suele ser muy utilizado en producción a nivel profesional. Se llama así porque el servidor que tiene el servicio manda «latidos» unos ping con los que verifican si el servidor principal está disponible o no.
Este es un esquema de como se comportaría:
El Cliente se conecta a una IP virtual que comparten ambos nodos, y dependiendo como lo tengamos configurado, uno recibiría la petición, en caso de que se detecte que no funciona correctamente el otro nodo esclavo obtiene el control del servicio en segundos. Esta es la forma de configurarlo:
Nodo 1:
Hostname node01 IP Address: 172.16.4.80
Nodo 2:
Hostname node02 IP Address: 172.16.4.81
IP Virtual: 172.16.4.82
1 – Instalamos Heartbeat:
#yum install heartbeat
Estos son los tres ficheros de configuración:
authkeys ha.cf haresources
2 – Estos son los paquetes de cluster que nos van a instalar:
heatbeat-2.08 heartbeat-pils-2.08 heartbeat-stonith-2.08
3 – Copiamos los ficheros a la ruta /etc/ha.d el fichero de configuración de Heartbeat
cp /usr/share/doc/heartbeat-2.1.2/authkeys /etc/ha.d/ cp /usr/share/doc/heartbeat-2.1.2/ha.cf /etc/ha.d/ cp /usr/share/doc/heartbeat-2.1.2/haresources /etc/ha.d/
4- Empezamos a configurarlo todo editando el /etc/ha.d/authkeys añadiendo las siguientes líneas:
auth 2 2 sha1 test-ha
Cambiamos permisos a este fichero:
chmod 600 /etc/ha.d/authkeys
5- editamos el fichero /etc/ha.d/ha.cf
# Definimos los logs. logfile /var/log/ha-log logfacility local0 # Tiempo en segundos entre cada latido. keepalive 2 # Tiempo en segundos en el que se considera un sistema inactivo. deadtime 30 # Tiempo de espera en segundos para interfaces que levantan lentamente. initdead 120 # Ping por el interface que comunica ambos nodos (interface de latido). # La IP debe de ser la del interface del otro nodo. bcast eth0 # Por que interface hacemos la comunicacion entre nodos y por que puerto. udpport 694 # Definir el tipo de failback. auto_failback on # Nodos que componen el cluster. node node01 node node02
6 – El final de la configuración es editar el fichero /etc/haresources
Que contiene información de los recursos que queremos alta disponibilidad, también debemos indicar el servicio que lo tendrá, en este ejemplo es el servicio web (httpd) En este caso tenemos el node01 como activo y el node02 como pasivo.
node 01 172.16.4.82 httpd
7- copiamos el fichero de configuración del cluster /etc/ha.d del node01 al node02
scp -r /etc/ha.d root@node02:/etc/
8- Nos queda una configuración en el Apache,
Configurar la IP por defecto en la que escucha el servidor, esto lo hacemos en ambos nodos:
/etc/httpd/conf/httpd.conf Listen 172.16.4.82:80
9 – Creamos un fichero index.html para tener una prueba gráfica de qué nodo nos da el servicio:
echo "node01 apache test server" > /var/www/html/index.html echo "node02 apache test server" > /var/www/html/index.html
10 – Iniciamos servicio cluster heartbeat en ambos nodos
/etc/init.d/heartbeat start
11 -Abrimos el navegador y ponemos la url:
http://172.16.4.82
Nos saldrá el mensaje «node01 apache test server»
12 – paramos el heartbeat en el node01 y el mensaje lo veremos en el node02
root@node01# /etc/init.d/heartbeat start
http://172.16.4.82
Nos saldrá el mensaje «node02 apache test server»
Fuente: howtoforge
Deja un comentario