alumno@pc:~$ bash ejercicio-linuxha.sh
Powershell.exe -executionpolicy bypass -file ejercicio-linuxha.ps1
NOTAS:
$DIR_BASE
especifica donde se descargarán las imágenes y se crearán las MVs.
$HOME/CDA1516
y en Windows en C:\\CDA1516
.vdi.zip
de http://ccia.ei.uvigo.es/docencia/CDA/1516/practicas
y copiarlos en el directorio anterior ($DIR_BASE
) para que el script haga el resto.
DIR_BASE
($HOME/CDA1516
ó C:\\CDA1516
)
base_cda.vdi
(0,8 GB comprimida, 2,8 GB descomprimida):
Imagen genérica (común a todas las MVs) que contiene las herramientas a utilizar
login | password |
---|---|
root | purple |
usuario1 | usuario1 |
swap1024.vdi
: Disco de 1 GB formateado como espacio de intercambio (SWAP)
VBoxManage startvm CLIENTE_<id> VBoxManage startvm SERVIDOR1_<id> VBoxManage startvm SERVIDOR2_<id>
WEB LinuxHA: http://www.linux-ha.org/
Manuales heartbeat: http://www.linux-ha.org/doc/users-guide/users-guide.html
Manuales pacemaker: http://clusterlabs.org/wiki/Main_Page
apt-get install heartbeat cluster-glue apt-get install pacemaker resource-agents
servidor1:~# ifconfig eth1 10.10.10.11 netmask 255.255.255.0 broadcast 10.10.10.255 up servidor2:~# ifconfig eth1 10.10.10.22 netmask 255.255.255.0 broadcast 10.10.10.255 up
Es necesario asegurar una configuración correcta de la direccion de broadcast (10.10.10.255) ya que nuestra configuración de Heartbeat enviará los ''pulsos'' como paquetes UDP a la dirección de broadcast.
/etc/hosts
con las direcciones correctas (ya hecho)
------Contenido----- 127.0.0.1 localhost 10.10.10.11 servidor1 10.10.10.22 servidor2 ------Contenido-----
servidor1:~# hostname servidor2:~# hostname(si es necesario asignar los correctos con ''
servidor1:~# hostname servidor1
'' ó ''servidor2:~# hostname servidor2
'')
servidor1:~# nano /var/www/index.html servidor2:~# nano /var/www/index.html
No es necesario arrancar los servidores Apache explícitamente (ya lo hará Pacemaker cuando ''toque'')
Heartbeat se encarga de gestionar los nodos del cluster y su estado (up/down)
servidor1:~# cd /etc/ha.d servidor1:/etc/ha.d/# nano ha.cf ------Contenido----- logfile /var/log/heartbeat.logfile logfacility local0 autojoin none # Los nodos del cluster se declararan de forma estaica en # los parametros "node" del fichero /etc/ha.d/ha.cf bcast eth1 # Envio de "pulsos" (heartbeat) sobre eth1 en modo broadcast # usando paquetes UDP (puerto 694 por defecto) warntime 5 deadtime 15 initdead 60 keepalive 2 # "Pulsos" entre nodos (heartbeats) cada 2 segundos node servidor1 node servidor2 pacemaker respawn ------Contenido-----
servidor1:/etc/ha.d/# nano authkeys ------Contenido----- auth 1 1 sha1 unaclavecualquiera ------Contenido-----
Ajustar (en ambas máquinas) los permisos del fichero de claves (deben de permitir únicamente acceso para usuario root)
servidor1:/etc/ha.d/# chmod 600 authkeys
servidor1:/etc/ha.d/# /usr/share/heartbeat/ha_propagate (pedirá la contraseña de root de cada máquina del cluster [purple])
Comprobar en el directorio /etc/ha.d
de la máquina servidor2
que
realmente se han propagado los 2 ficheros (ha.cf
, authkeys
)
servidor1:/etc/ha.d/# /etc/init.d/heartbeat restart servidor2:/etc/ha.d/# /etc/init.d/heartbeat restartTardará hasta un minuto (parámetro
initdead
).
Se puede ver como se ''suman'' nodos al cluster con el comando crm_mon
servidor1:/etc/ha.d/# crm_mon servidor2:/etc/ha.d/# crm_mon (finalizar con CONTROL+C)
Al finalizar el ''arranque'' del cluster mostrará que hay configurados 2 nodos y 0 recursos,
indicando los nodos que están online (Online: [servidor1 servidor2]
)
servidor1:/etc/ha.d/# crm status
Pacemaker gestiona los recursos (servicios del cluster) y su asignación a los nodos.
En este ejemplo Pacemaker gestionará 2 recursos en modo activo-pasivo:
DIR_PUBLICA
]
APACHE
]
servidor1:/etc/ha.d/# crm configure crm(live) configure# show crm(live) configure# show xml
/var/lib/heartbeat/crm/cib.xml
]
commit
).
crm(live) configure# property stonith-enabled=false crm(live) configure# property no-quorum-policy=ignore crm(live) configure# commit crm(live) configure# show
DIR_PUBLICA
193.147.87.47
(fallará hasta que el cluster la habilite)
cliente:~/# ping 193.147.87.47
IPaddr
crm(live) configure# ra crm(live) configure ra# list ocf (muestra los ''agentes de recurso'' de Heartbeat/Pacemaker disponibles) crm(live) configure ra# list lsb (muestra los ''agentes de recurso'' del sistema disponibles [scripts en /etc/init.d]) crm(live) configure ra# info ocf:heartbeat:IPaddr crm(live) configure ra# cd
/usr/lib/ocf/resource.d/heartbeat
<OJO: todo en la misma linea>
crm(live) configure# primitive DIR_PUBLICA ocf:heartbeat:IPaddr params ip=193.147.87.47 cidr_netmask=255.255.255.0 nic=eth0 crm(live) configure# commit crm(live) configure# show
(comprobar el ping desde cliente [en algún momento empezará a responder])
crm status
'' a qué nodo se le ha asignado el recurso DIR_PUBLICA
ifconfig -a
'' (habrá creado y configurado un alias eth0:0
)
APACHE
apache
crm(live) configure# ra crm(live) configure ra# list ocf crm(live) configure ra# info ocf:heartbeat:apache crm(live) configure ra# cd
crm(live) configure# primitive APACHE ocf:heartbeat:apache params configfile=/etc/apache2/apache2.conf crm(live) configure# commit crm(live) configure# show
CONTROL+F2
] o desde el otro nodo: comprobar cómo evoluciona el
estado del cluster [comando ''crm_mon
'' ó ''crm status
'']
DIR_PUBLICA
se asigne a un nodo y el recurso APACHE
al otro
DIR_PUBLICA
y APACHE
(''co-localizar'' ambos recursos)
crm(live) configure# colocation APACHE_SOBRE_DIRPUBLICA inf: DIR_PUBLICA APACHE crm(live) configure# commit crm(live) configure# show crm(live) configure# exit
crm_mon
'' hasta que se estabilice y los
dos recursos se asignen al mismo nodo.
lynx
o firefox
(a 193.147.87.47)
servidor1:/etc/ha.d/# crm resource migrate APACHE servidorX servidor1:/etc/ha.d/# crm status
servidorX
) [o apagarla]
y comprobar que el otro servidor ocupa su lugar
servidorX: shutdown -h now servidorY:~/# crm_mon (esperar hasta 10s [intervalo por defecto del agente de monitorización de apache] ó 15s [param deadtime]) servidorY:~/# crm statusCuando termine la migración, comprobar el acceso al servidor web desde la máquina cliente con lynx o firefox
Entrega: FAITIC
Fecha límite: <pendiente de determinar>