Manual HeartBeat Ubuntu Server 14/16

Instalación y configuración de dos servidores Heartbeat en Ubuntu Server 14/16

Objetivo: Lograr alta disponibilidad usando dos servidores Hearbeat.

¿Qué necesitaremos?

  1. Dos máquinas virtuales con Ubuntu Server 14 o 16 instalado.
  2. Ambas máquinas deben tener dos interfaces de red, una conectada a la misma red de acceso a internet normal, es decir, en modo puente (red de clase) y en modo DHCP, y la otra en modo red interna en la misma red interna con IP’s fijas.
  3. Por comodidad recomiendo que instaléis un servidor ssh en ambas máquinas para facilitar y agilizar la configuración.
  4. Como recordatorio, es importante saber que muchos ficheros de configuración van a ser iguales en las mismas máquinas, pero si las clonamos utilizarán la misma MAC y habrá que cambiarla.
  5. Tener en cuenta que cuando agreguemos mediante el gestor de máquinas virtuales dos interfaces a nuestras máquinas, el nombre de la tarjeta de red puede referirse a una red diferente a la del ejercicio, es decir, en vez de eth0 o enp0s3 referirse al adaptador puente se referirá a la red interna, etc… En este caso solo tendrás que seguir los pasos adaptando la guía a tu caso.

El primer paso es instalar dos máquinas virtuales de Ubuntu Server 14 o 16. Una vez configuradas las opciones básicas del sistema empezaremos a preparar las interfaces de red para que esté todo listo a la hora de instalar Heartbeat.

Empezaremos escribiendo en la terminal:

  • ifconfig -a

De esta manera se nos mostrarán las interfaces de red que existen en el sistema, aunque no estén activas. En Ubuntu Server 14 deberíamos ver una segunda interfaz sin ser la de modo puente con acceso a internet, su nombre por defecto es eth1. Sin embargo en Ubuntu Server 16 su nombre será enp0s8.

Esta interfaz no está activa, por lo que ejecutaremos:

  • sudo ifconfig eth1 up      o enp0s8

Recordad que eth1 deberéis sustituirlo por enp0s8 si usáis Ubuntu Server 16.

  • NOTA: En este caso la tarjeta predeterminada es la del adaptador puente, y obtiene una IP directamente, sin embargo si la tarjeta por defecto es la de la red interna y estamos levantando la tarjeta de modo puente, ésta no obtendrá IP automáticamente, así que si necesitamos acceso a internet podemos usar:
  • sudo dhclient eth0      o enp0s3

Una vez ejecutado ese comando, la tarjeta de red aparecerá usando un ifconfig normal, sin embargo como está configurada en red interna no obtendrá IP por si sola, así que el siguiente paso será darle una IP a nuestras interfaces de red interna de ambas máquinas. Iremos al fichero de configuración /etc/network/interfaces usando:

  • sudo nano /etc/network/interfaces

En este fichero veremos la configuración de las dos tarjetas de red que vienen por defecto en Ubuntu, la eth0 o enp0s3, y la lo, de loopback, no tendremos que centrarnos en ninguna de estas dos, ya que no importa que la interfaz de red normal se quede en modo DHCP.

Ahora escribiremos lo siguiente:

captura-de-pantalla-de-2016-11-21-09-02-05

En este archivo las almohadillas # indican comentarios, por lo que donde he puesto “Red Interna” podéis poner lo que queráis. La línea de auto eth1 sirve para que la tarjeta se levante automáticamente al arrancar el sistema. iface eth1 inet static indica que la IP de la tarjeta será estática, y como última línea pondremos address y la dirección IP que queramos en nuestra tarjeta (sustituir las “x” por la IP deseada). Como ambas máquinas estarán en la misma red interna, deberemos seguir los mismos pasos en ellas, pero sustituyendo la última x por un número diferente a la de la otra máquina.

  • NOTA: En este fichero se pueden añadir más indicaciones además de la IP, como la puerta de enlace por defecto, la máscara de red, etc… Pero no es necesario en este caso, nos basta con la address.

Ahora le indicaremos a cada máquina el nombre de su compañera de Heartbeat editando el fichero /etc/hosts:

  • sudo nano /etc/hosts

Deberemos escribir lo siguiente para dejarlo así:

captura-de-pantalla-de-2016-11-21-09-36-08

  • NOTA: 192.168.10.5 es la IP fija dentro de la red interna que le asigné a la otra máquina, es decir, Maquina1 deberá tener la IP fija en el fichero de Maquina2 y viceversa.

IMPORTANTE: Si queremos que todos estos cambios se mantengan, deberemos reiniciar el servicio mediante:

  • sudo service networking restart

o

  • sudo /etc/init.d/networking restart

Una vez configuradas las interfaces de red, ejecutaremos en la consola de ambas máquinas:

  • apt-get install heartbeat

para instalar el servidor Hearbeat.

Ahora comenzaremos a configurarlo:

El primer paso es ejecutar estos comandos al pie de la letra, se usarán para copiar unos archivos de configuración de ejemplo que por defecto se ubican en /usr/share/doc/hearbeat/, por lo que los moveremos y los editaremos a continuación:

  • sudo cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/
  • sudo sh -c "zcat /usr/share/doc/heartbeat/ha.cf.gz > /etc/ha.d/ha.cf"
  • sudo sh -c "zcat /usr/share/doc/heartbeat/haresources.gz > /etc/ha.d/haresources"

 

  • NOTA: Presta especial atención a las comillas, no es lo mismo “ (doble pulsación de la tecla de la derecha de la P) que ” (SHIFT+2)

Ahora comenzamos a configurar. El primer paso es acceder al fichero /etc/ha.d/authkeys:

  • sudo nano /etc/ha.d/authkeys

Este fichero está completamente comentado, nos situaremos al final del fichero y descomentaremos los siguientes parámetros:

captura-de-pantalla-de-2016-11-21-09-22-48

Si además queremos que para acceder a Heartbeat sea necesaria una contraseña, descomentaremos la línea #2 sha1 HI! y sustituiremos “HI!” por la contraseña que queramos usar.

Ahora procederemos a configurar el fichero /etc/ha.d/ha.cf:

  • sudo nano /etc/ha.d/ha.cf

Este fichero también está comentado, podemos descomentar las líneas que nos interesen pero están separadas y es fácil confundirnos, por lo que recomiendo dejar el fichero como está y al principio escribir lo siguiente:

  • # Interfaz de red por donde se conectará Maquina1 con Maquina2 para realizar el latido
    bcast eth1
    # Envía pings a la interfaz del router para demostrar que hay conectividad al exterior
    ping 192.168.x.x
    # Envía pings (latido) cada 2 segundos al otro nodo
    keepalive 2
    # Si durante 5 segundo no responde el otro nodo, este nodo está en alerta
    warntime 5
    # Tras 10 segundos sin recibir respuesta del otro nodo, se considera como muerto
    deadtime 10
    # Puerto UDP por defecto de Heartbeat según IANA
    udpport 694
    auto_failback on
    # Declaración de los dos nodos
    node Maquina1
    node Maquina2

Destacar que la IP del router a la que se debe hacer ping deberá ser el router de la red por la que nos conectamos en modo puente, mientras que la interfaz de red que deberemos poner para que realicen el latido será la de la red interna de ambas máquinas. También podéis sustituir los nombres de las máquinas a vuestro gusto, pero cuidado con el nombre que le ponéis a los nodos, recordad las mayúsculas que uséis porque si se os olvida luego puede daros fallos.

Por último accederemos al fichero /etc/ha.d/haresources y escribiremos lo siguiente en él:

  • Maquina1 192.168.x.x apache2

Maquina1 es el nombre de la máquina virtual que se verá en primer lugar, la IP que pondremos ahí será la que queramos, será una IP adicional que tomará la Maquina1, y cuando Maquina2 deje de recibir latidos, será esta quien coja esa dirección. Además le indico que usaremos un servidor apache2 para configurar una página web y así visualizar mejor el funcionamiento de HeartBeat.

  • NOTA: En este fichero se debe poner lo mismo en ambas máquinas, no sustituyáis el nombre que pongáis en él por el nombre de la otra máquina, el nombre debe ser igual en ambas, es decir, el nombre de la máquina principal deberá ir en su propio fichero y en el de la otra máquina también.

Como último detalle instalaremos el servidor apache2 en ambas máquinas:

  • sudo apt-get install apache2

Una vez instalados nos creará los directorios /var/www/html/index.html, que será la página web que se visualice al acceder mediante el navegador a la IP de la máquina, o en nuestro caso, a la IP flotante que configuramos en el fichero /etc/ha.d/haresources.

Editaremos el archivo index.html, está lleno de código html, te recomiento que simplemente lo borres todo o elimines el archivo y crees otro index.html en el mismo directorio, y escribas en lenguaje html unas palabras simples como:

captura-de-pantalla-de-2016-11-21-09-50-34

En la otra máquina editaremos el mismo fichero y pondremos unas palabras diferentes a nuestra elección.

Y para finalizar reiniciaremos el servicio Heartbeat usando:

  • sudo service heartbeat restart

o

  • sudo /etc/init.d/hearbeat restart

Ahora usaremos nuestro ordenador anfitrión o cualquier otro de la red, y escribiremos en nuestro la IP flotante que configuramos en el archivo /etc/ha.d/haresources, se mostrará el index.html de nuestra máquina. Ahora apagaremos esta máquina, la segunda debería entrar en acción retomando su dirección IP, por lo que al refrescar la página pulsando F5 o control+F5 se nos mostrará una página web, porque la dirección IP sigue activa, pero se mostrará el index.html de nuestra segunda máquina.

 

 

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *