Está en la página 1de 5

I. E. S.

MARE NOSTRUM
Beato Fco. Castelló Aleu s/n   965936520
03008 ALICANTE
www.iesmarenostrum.com
correo@iesmarenostrum.com

PRÁCTICA: CLUSTER EN
LINUX UBUNTU 18.04
El objetivo de la siguiente práctica es crear un cluster de alta
disponibilidad en Linux Ubuntu, haciendo uso del middleware
corosync/pacemaker. El escenario será el siguiente: dos máquinas
ubuntu 18.04 (nodos) en clúster con un servidor de Apache. En caso
de caer algún nodo se retomarán las funciones, para no interrumpir el
servicio de cara al cliente, en el otro nodo.

Para más información:

• https://www.digitalocean.com/community/tutorials/how-to-
create-a-high-availability-setup-with-corosync-pacemaker-and-
floating-ips-on-ubuntu-14-04

• http://www.elarraydejota.com/cluster-apache-en-alta-
disponibilidad-con-pacemakercorosync-en-ubuntu-server-lts-
14-04/

• http://www.cloudera.com/documentation/enterprise/5-4-x/
topics/admin_cm_ha_failover.html#concept_olg_c22_qr

Cluster en Linux Ubuntu Pàgina 1 de 5


I. E. S. MARE NOSTRUM
Beato Fco. Castelló Aleu s/n   965936520
03008 ALICANTE
www.iesmarenostrum.com
correo@iesmarenostrum.com

Paso 1: ajustes de red.

El primer paso será colocar cada uno de los nodos con IP fija. El
primer paso será averiguar en que red nos encontramos (ifconfig). Os
recuerdo también que en VMWare la puerta de enlace es la
máquina .2, no la .1. Una vez hecho ésto, seguiremos las indicaciones
de este tutorial (nota: el fichero a modificar puede ser diferente).

Una vez configurada cada máquina en IP fija, deberemos anotar estas


direcciones en el fichero /etc/hosts de cada una de ellas. También
deberéis modificar el nombre de host de la segunda máquina.

Por último deberemos asegurarnos de que es posible la comunicación


entre los nodos a través del puerto 5405, abriéndolo en el
cortafuegos.

sudo ufw allow 5405

Paso 2: instalación y configuración del middleware

Una vez realizados los ajustes de red, procederemos a instalar el


software que actuará de middleware: corosync/pacemaker.

sudo apt-get install pacemaker

Una vez instalado, deberemos generar la clave que se usará entre los
nodos del cluster para comunicación. La generación de la clave
necesitará que pulsemos el teclado mientras se realiza el proceso.

Sudo corosync-keygen

Este comando generará el fichero /etc/corosync/authkey. Deberemos


copiarlo a la otra máquina (en la misma ruta). Para ello utilizad el
comando scp.

Haremos una copia de seguridad del fichero


/etc/corosync/corosync.conf y lo sustituiremos por éste:

Cluster en Linux Ubuntu Pàgina 2 de 5


I. E. S. MARE NOSTRUM
Beato Fco. Castelló Aleu s/n   965936520
03008 ALICANTE
www.iesmarenostrum.com
correo@iesmarenostrum.com

totem {
version: 2
cluster_name: lbcluster
transport: udpu
interface {
ringnumber: 0
bindnetaddr: 192.168.125.0
broadcast: yes
mcastport: 5405
}
}

quorum {
provider: corosync_votequorum
two_node: 1
}

nodelist {
node {
ring0_addr: 192.168.125.10
name: sad2021
nodeid: 1
}
node {
ring0_addr: 192.168.125.20
name: sad2021-2
nodeid: 2
}
}

logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}

Esto habrá que hacerlo en ambas máquinas, lo mejor será hacerlo en


una y copiarlo a la otra con scp.

Si queremos que corosync se inicie automáticamente con las


máquinas (deseable) deberemos de editar el fichero
/etc/default/corosync, y cambiar el valor a YES.

START=yes

Reiniciaremos ambas máquinas y comprobaremos que el servicio de


corosync está ejecutándose:

sudo corosync-cmapctl | grep members

Deberemos obtener un listado de 8 líneas donde se nos indica que los


dos nodos se han unido al cluster.

Cluster en Linux Ubuntu Pàgina 3 de 5


I. E. S. MARE NOSTRUM
Beato Fco. Castelló Aleu s/n   965936520
03008 ALICANTE
www.iesmarenostrum.com
correo@iesmarenostrum.com

runtime.totem.pg.mrp.srp.members.1.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.1.ip (str) = r(0) ip(192.168.125.10)
runtime.totem.pg.mrp.srp.members.1.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.1.status (str) = joined
runtime.totem.pg.mrp.srp.members.2.config_version (u64) = 0
runtime.totem.pg.mrp.srp.members.2.ip (str) = r(0) ip(192.168.125.20)
runtime.totem.pg.mrp.srp.members.2.join_count (u32) = 1
runtime.totem.pg.mrp.srp.members.2.status (str) = joined

Por último comprobaremos si el servicio pacemaker está


ejecutándose y, en caso negativo, lo arrancaremos. También podemos
habilitarlo para que se arranque al iniciar el sistema (si no hubiera
arrancado por defecto).

sudo service pacemaker status


sudo service pacemaker start (si no está corriendo)

sudo update-rc.d pacemaker defaults 20 01 (si no ha arrancado al


reiniciar)

Paso 3: configuración del cluster

Para configurar el cluster deberemos instalar el comando crm


(crmsh). Una vez hecho, podemos comprobar si nuestro cluster está
funcionando:

sudo crm status

El primer paso de configuración, en nuestro caso, será eliminar la


necesidad de quorum (ya que únicamente tenemos dos nodos) y el
stonith (para detectar nodos problemáticos en un cluster múltiple).

sudo crm configure property no-quorum-policy=ignore


sudo crm configure property stonith-enabled=false

Una vez hecho esto, crearemos un recurso de manera que el cluster


pueda ser accedido mediante una IP virtual (en nuestro caso,
192.168.125.50).

crm configure primitive FAILOVER-ADDR ocf:heartbeat:IPaddr2


params ip="192.168.125.50" nic="eth0" op monitor interval="10s"
meta is-managed="true"

En estos momentos el cluster debería ser capaz de responder a la ip


192.168.125.50 con las dos máquinas. Podemos verificarlo haciendo
ping desde la máquina real y parando alternativamente cada una de
las máquinas.

Cluster en Linux Ubuntu Pàgina 4 de 5


I. E. S. MARE NOSTRUM
Beato Fco. Castelló Aleu s/n   965936520
03008 ALICANTE
www.iesmarenostrum.com
correo@iesmarenostrum.com

El último paso será dar el servicio web mediante las dos máquinas.
Para ello instalaremos apache2 (sudo apt-get install apache2), y
modificaremos el fichero /var/www/html/index.html, añadiendo el
número de nodo que da soporte al servicio (y vuestras iniciales).

<html>
<body>
<h1>It works! JRGS</h1>
<p>This is the default web page for server 1(2).</p>
<p>The web server software is running but no content
has been added, yet.</p>
</body>
</html>

Una vez hecho ésto, crearemos el servicio en el cluster:

crm configure primitive FAILOVER-APACHE lsb::apache2 op monitor


interval=15s

crm configure group mi_cluster_web FAILOVER-ADDR FAILOVER-APACHE

A partir de ahora, deberíamos poder acceder a la página web situada


en http://192.168.125.50. Probad a hacerlo parando
alternativamente una y otra máquina, y comprobad que servidor os
está dando servicio cada una de las veces.

Cluster en Linux Ubuntu Pàgina 5 de 5

También podría gustarte