Download - Manual proyecto final
Manual de Proyecto Final
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Índice
Configuración.....................................................................................................................................3
Virtualbox......................................................................................................................................3
Red................................................................................................................................................7
Interfáz Gráfica............................................................................................................................11
Webmin.......................................................................................................................................11
Samba..........................................................................................................................................18
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Configuración
Virtualbox
Primero necesitamos que tener previamente instalado un software para virtualizar maquinas, en esta
caso usaremos virtualbox y también necesitamos descargar la imagen .iso de Ubuntu server,
teniendo esto podemos empezar la instalación.
Abrimos virtualbox y seleccionamos nueva, nos aparecerá el asistente de instalación y
seleccionamos siguiente.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Aparecerá una ventana donde elegiremos el nombre de la máquina virtual, el tipo de sistema
operativo y su distribución o versión, para nuestro caso seleccionaremos Linux, la versión será
Ubuntu y le damos un nombre a la máquina virtual. Seleccionamos siguiente.
Eligiéremos cuanta memoria RAM se le va asignar a la máquina virtual una vez que esta inicie. Este
parámetro va a variar dependiendo el hardware del equipo donde estemos virtualizando, nosotros le
asignamos 1500mb de RAM. Le damos siguiente.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
El siguiente paso será para seleccionar o crear un disco duro virtual, nosotros crearemos uno nuevo
y continuamos. Después seleccionamos el tipo de disco duro que será, dejaremos el de default que
es propio de virtualbox (vdi) y le damos siguiente. Ahora nos da la opción de almacenamiento fijo o
dinámico para lo cual nosotros seleccionaremos tamaño fijo y le damos siguiente. Por ultimo
escogeremos la cantidad de espacio que tendrá el disco duro virtual, este parámetro también puede
variar. Nosotros le asignaremos 10gb. Le damos siguiente y crear.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Una vez creada la máquina virtual la iniciamos y nos pedirá un disco de instalación, seleccionamos
la ubicación de nuestra imagen ISO de Ubuntu server y después empezara a correr. Aparecerá una
ventana donde seleccionaremos instalar Ubuntu server. A partir de ahí tenemos que hacer algunas
configuraciones básicas como el idioma, teclado, país, formato del disco y actualizaciones. Pero nos
interesa llegar a la parte que dice que paquetes extras queremos instalar, ahí seleccionaremos LAMP
y WEBMIN que son paquetes que usaremos para montar los servicios que daremos.Continuamos y
terminaremos la instalación.
Durante la instalación nos pedirá la contraseña de root para mysql y cuando termine la instalación
se reiniciara la máquina y nos pedirá el usuario y contraseña e iniciara en consola ya que Ubuntu
server no tiene interfaz gráfica, la cual hay que instalar aparte.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Agregaremos las siguientes líneas al repositorio y también los siguientes comandos.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Red
Ahora necesitamos que la máquina virtual tenga una IP de la misma red a la que estamos
conectados para saber que los servicios están disponibles para cualquiera usuario de la red. Para
esto apagaremos la máquina virtual con el comando sudo shutdown –P now. Una vez apagada en
virtualbox le damos click derecho a la máquina virtual y seleccionamos configuración después red y
ahí en la opción de conectado a: le daremos en adaptador puente. Le damos aceptar y iniciamos la
máquina virtual.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Ya otra vez en la máquina virtual observaremos si se nos asignó una IP de la red, para esto usaremos
el comando ifconfig y podemos ver la IP del servidor.
Un servidor debe tener una IP estática, para cambiar la configuración de la ip ejecutaremos los
siguientes comandos sudo nano /etc/network/interfaces y modificaremos ese archivo con los
siguientes datos, que varian dependiendo de la configuración de la red.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Ahora reiniciaremos el servicio de red con el comando sudo /etc/init.d/networking restart. Y
ejecutamos el comando ifconfig para ver los cambios.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Interfáz Gráfica
Para instalar la interfaz gráfica se necesita ejecutar el siguiente comando sudo apt-get install gnome-
shell y una vez que termine de instalarse se levantara la interfaz gráfica con el comando sudo startx
Webmin
En este punto empezaremos a configurar los servicios que daremos, para esto usaremos la
herramienta webmin que nos permite hacer varias configuraciones de manera gráfica y remota. Para
acceder a la herramienta tenemos que poner en el explorador la IP del servidor y entrar por el puerto
10000 e ingresar el usuario y contraseña de la máquina.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Entraremos a la opción de servidores -> servidor DNS y seleccionaremos crear una zona maestra,
ahí pondremos los datos del dominio que queremos crear.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Después agregaremos un alias para ese dominio agregándole el www y que no aparezca completo
con el nombre del equipo.
Para que quede completo este dominio hay que crear una zona inversa para que se pueda acceder a
la página con la IP en lugar del dominio, para esto creamos una nueva zona maestra y ahora
pondremos la IP pero omitiremos el último segmento de esta el cual está destinado a hosts.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Ahora ya tenemos configurado un DNS con un domino, pasaremos configurar un host virtual en
apache para que el dominio que acabamos de crear tenga una página web. Primero necesitamos
crear una carpeta donde tengamos guardados los archivos de la página web con sus permisos
correspondientes, una vez hecho esto entramos a webmin en servidores y luego apache, ahí
seleccionaremos crear un virtual host y pondremos los datos del domino al que le corresponde el
host y la carpeta donde estará.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Aplicaremos los cambios y para probar si funciona se necesita tener una página web en la carpeta
que escogimos y un cliente que tenga como servidor DNS la IP de nuestro servidor, una vez hecho
esto entramos al navegador e ingresamos el domino que creamos y veremos la página web.
Para configurar un servidor de correo muy simple necesitamos entrar a webmin y después postfix
ahí entraremos a la parte de opciones generales y agregaremos nuestro dominio a la lista de
dominios que se van a recibir.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Después regresamos al menú de postfix y entramos a dominios virtuales, ahí agregamos nuestro
domino igualmente para crear las cuentas de correo con nuestro domino.
Ahora en ese mismo menú seleccionaremos crear un nuevo mapeo y llenaremos la información de
nuestra nueva cuenta de correo con la dirección de correo y al usuario que le pertenece., claro que
esto será solo una dirección de correo local.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Crearemos otra cuenta con otro usuario para poder probarlo entre estas dos cuentas. Se puede
probar con Outlook o algún otro cliente que acepte conexión SSL o segura y configurando en el
cliente el servidor SMTP y POP3 daremos la dirección IP de nuestro servidor.
Pasaremos a configurar el servidor FTP, primero necesitamos descargar el paquete vsftpd que será
el que usaremos, para esto ejecutaremos el siguiente comando sudo apt-get install vsftpd. Una vez
que se descargue y se instale bajaremos el modulo para poder administrarlo desde webmin, el
modulo lo descargaremos del siguiente link www.provider4u.de/download.html, ya descargado
entraremos a webmin webmin-> configuración, ahí entraremos a módulos y seleccionamos desde
un archivo local la carpeta donde está el modulo descargado y lo instalamos.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Ya instalado el modulo lo podemos encontrar en los servidores, lo seleccionamos y entramos al
menú de vsftpd, ahí seleccionamos entradas manuales para modificar directamente el archivo de
configuración, ya que para este servicio en lo personal es más fácil configurarlo por este medio.
Borramos todo el archivo y escribiremos las siguientes líneas:
En la línea “anon_root” estamos seleccionado la carpeta donde accederán los usuarios anónimos,
esto lo dejamos por si se desea compartir una carpeta para cualquier usuario conectado a la red, la
ruta se debe modificar.
Samba
Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows
(antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De
esta forma, es posible que ordenadores con Linux o Mac OS X se vean como servidores o actúen
como clientes en redes de Windows. Samba también permite validar usuarios haciendo de
Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio
Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión,
directorios compartidos y autenticar con su propio archivo de usuarios.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Configuración del samba desde de la aplicación webmin
Accedemos a la aplicación de Samba desde webmin localizada en las herramientas de servers, el
cual muestra un entorno más grafico e interactivo para la configuracion, haciendo esto mas fácil
para el usuario, en caso de que no se encuentre instalada la aplicación en samba se puede instalar
desde la terminal mediante:
apt-get install samba smbfs
o en caso contrario también se puede desde el mismo webmin buscando la aplicacion de Samba en
Un-used Modulos para instalarlo.
Una vez accediendo a la Aplicación de samba mostrara algo parecido a la imagen
En donde por lo particular mostrador las impresoras compartidas, lo que realizaremos a
continuación será crear una ruta y una carpeta para comprar archivos entre el servidor una maquina
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
cliente el sistema operativo de ambas maquinas puede ser diferente, como en este caso se maneja el
servidor con Ubuntu server y cliente con Windows 7.
Nos dirigimos a Windows Networking donde configuraremos la carpeta para compartirla con el
sistema operativo Windows.
Llenamos los datos del área de trabajo, podemos agregar una descripción del mismo y las ip que
podrán ver estar acceder a esta área, en este caso solamente configuraros los dos primeros
parámetros y guardamos.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Lo que también lo que podemos configurar son los clientes que pueden acceder a la carpeta
compartida así como también los permisos que deseemos otórgales a cada uno, independientemente
o para usuarios en general.
Los usurios que maneja Samba no son los mismos que maneje el sistema para ello lo que aremos
será sincronizar los usuarios de Ubuntu con los de Samba mediante Configure automatic Unix and
Samba user synchronisation, en donde solo se habilitan los siguientes campos y aplicamos para
sincronizar unix con samba en la creación, cambios y borrados de usuarios se realice en ambos
sistemas.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
En edit Samba users and passwords, encontramos la lista de los usuarios que tiene Samba y además
podemos agregar contraseñar y permisos a cada uno.
Por ejemplo editaremos nuestro usuario morviuz agregando una contraseña.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
También podemos configurar las carpetas que se comparten entre los sistemas, dándole doble clic
sobre la carpeta nos mostrara la dura y los atributos que tiene dicha carpeta agregaremos accesos de
control en seguty and Access Control, en donde tendremos todas los accesos y restricciones de
dicha carpeta.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
En este caso solo agregaremos a uno de nuestros usuarios de poder leer y escribir agregandodo al
usuario al campo de Read/Write, una vez modificado y guardado nos mostrara en las
especificaciones de la carpeta los usuarios con permisos especiales, en este ejemplo nuestro usurio
Morviuz.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Una vez terminado toda la configuración reiniciamos el Samba para poder visualizar nuestra red en
Windows
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Servidor mirror
Un servidor mirror o espejo es un servidor que respalda al principal el cual el cual mantendrá el
sistema funcionando en caso de un daño o falla del servidor principal por lo cual existe un
monitoreo de este para que en dado caso ocurra un problema entre en acción el servidor espejo.
Para conseguir este monitoreo y acción de suplantar el servidor principal en caso de que este falle
utilizaremos la herramienta Heartbeat.
Heartbeatesunserviciodeagrupamientocluster,esdecirpermiteaungrupodemáquinasmonitorizarseentre
síydeestaformaganarunnivelextradefiabilidadenunservicio.Permitealosclientessabersiunodelosnodos
estápresenteoausente,intercambiadofácilmentemensajesentreéstos.CuandounMasterServer(porejemp
lounServidorWeb)sevieneabajo,unservidorsecundariotomacontroldelosservicios.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Configuración del Heartbeat
Requerimientos
1. 2 Equipos, o mas, que podrán ser virtuales (si se desea solo realizar una prueba de
aprendizaje, no se recomienda esto para nada en producción)
2. Storage en común (puede ser un disco de fibra como una unidad DRBD, o un disco en
común mediante VirtualBox u otra utilidad) con formato OCFS2
3. Apache corriendo en ambos equipos con su configuración correspondiente en ambos
equipos identica, y ambos apuntando al mismo directorio, el cual sera la unidad OCFS2.
4. 3 Direcciones IPs publicas/privadas, una para cada uno de los nodos y una para el “cluster”
Instalacion
Instalamos Heartbeat en los dos nodos frontales (SO y MIRROR), configurando el nodo SO como
activo y el nodo MIRROR como pasivo.
El sistema estaba formado por dos nodos frontales en donde sólo uno de ellos estará activado (SO),
recibiendo las peticiones y balanceándolas a continuación a los dos nodos traseros. La máquina
activa tiene dos direcciones IP virtuales configuradas (se denominan virtuales porque cuando SO
falle, MIRROR las asumirá), 192.168.0.153 y 10.0.0.20, y una serie de servicios levantados.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
¿Cómo funciona todo esto?
El Heartbeat del nodo activo (so) enviará periódicamente "latidos" al nodo pasivo (mirror) para
indicarle que sigue vivo. En caso de que el nodo pasivo no reciba los latidos, interpretará que el
nodo SO está caído, y en consecuencia pasará a modo activo, levantando automáticamente las
direcciones IP virtuales y arrancando los servicios gestionados.
Los latidos pueden ser enviados a través de cualquiera de los interfaces de red, y también como
complemento y de forma redundante, a través de un cable serie.
Y con el objetivo de incrementar más aun la fiabilidad del sistema, vamos a instalar un watchdog
software que se encargue de controlar a Hearbeat. Si Heartbeat se cae, el watchdog reiniciará la
máquina transcurrido un minuto.
Vamos a comenzar instalando los paquetes watchdog y heartbeat en ambos nodos frontales.
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
~# aptitude install watchdog heartbeat
Heartbeat utiliza tres tipos de ficheros: authkeys (lugar donde se establece la contraseña compartida
por los dos nodos), ha.cf (fichero de configuración de Heartbeat) y haresources (fichero donde se
indica cuál será el nodo activo, así como los servicios a gestionar).
Instalación de los ficheros
1. sudo cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/
2. sudo sh -c “zcat /usr/share/doc/heartbeat/ha.cf.gz > /etc/ha.d/ha.cf”
3. sudo sh -c “zcat /usr/share/doc/heartbeat/haresources.gz > /etc/ha.d/haresources”
A continuación se muestra el contenido del fichero authkeys. Este archivo será idéntico en ambos
nodos frontales y por seguridad, deberá tener exclusivamente permisos de lectura/escritura para el
usuario root.
~# cat /etc/ha.d/authkeys
auth 1
1 md5 d2R5h4!
~# chmod 600 /etc/ha.d/authkeys
Este fichero contiene información que Heartbeat utiliza para autenticar a los miembros del cluster.
La primera línea indica a Heartbeat qué clave debe utilizarse para firmar los paquetes salientes
(latidos), ya que se pueden definir varias claves en el mismo archivo. La siguiente línea indica el
algoritmo que se utilizará para firmar los paquetes (md5) y la propia clave privada con la que se
realizará la firma (d2R5h4!).
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
El siguiente fichero que vamos a tratar va a ser ha.cf. Este archivo se encarga de listar los nodos del
cluster (en este artículo cuando hablamos de cluster, nos estamos refiriendo al cluster de Alta
Disponibilidad, es decir, los dos nodos frontales), la topología de comunicación y las características
de la configuración que están habilitadas.
~# cat /etc/ha.d/ha.cf
# Archivo donde se escribirán los mensajes de debug
debugfile /var/log/ha-debug
# Archivo donde se escribirán el resto de mensajes
logfile /var/log/ha-log
# Facility a emplear por el syslog
logfacility local0
# Tiempo transcurrido entre el envío de cada uno de los latidos (segundos)
keepalive 2
# Tiempo transcurrido hasta declarar al nodo como caído (segundos)
deadtime 12
# Tiempo transcurrido antes de generar un warning (segundos)
warntime 6
# Tiempo transcurrido para comenzar a levantar los servicios (segundos)
initdead 18
# Puerto para la comunicacion UDP
udpport 694
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
# Interfaz utilizado para enviar los mesajes de broadcast
bcast eth0
# Interfaz y nodo al que enviar los latidos
ucast eth0 mirror
# Si el nodo se cae y se vuelve a recuperar, recuperara su rol original
auto_failback on
# Si el Heartbeat local no envía latidos en un minuto, reinicia la maquina
watchdog /dev/watchdog
# Maquinas que conforman el cluster
node so
node mirror
Este fichero será el mismo en ambos nodos, lo único que cambiará será la línea ucast eth0 haX, que
en el caso del nodo SO será ucast eth0 MIRROR (enviar los latidos al nodo MIRROR a través del
interfaz eth0) y para MIRROR ucast eth0 SO (enviar los latidos al nodo SO a través del interfaz
eth0).
Y ya para finalizar, el último fichero que habrá que configurar será haresources. Este archivo se
utilizará para definir los recursos que Heartbeat deberá gestionar. Será el mismo para los dos nodos.
~# cat /etc/ha.d/haresources
SO IPaddr2::192.168.1.20 IPaddr2::10.0.0.20 mysql-ndb-mgm ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master mon
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
La línea de datos está formada por dos parámetros, el primero de ellos es el nombre o dirección IP
de la máquina activa (SO, recordar que definimos las direcciones IP asociadas al nombre de la
máquina en el fichero /etc/hosts) y el segundo parámetro será la lista de recursos a gestionar. Es
necesario establecer una tabulación a continuación del primer parámetro.
Dentro de la lista de recursos, Heartbeat levantará en la máquina activa las dos direcciones IP
virtuales (192.168.0.153 y 10.0.0.20) y arrancará un grupo de servicios, como por ejemplo el
demonio de administración del cluster MySQL (mysql-ndb-mgm). El resto de servicios serán
detallados en los siguientes artículos. A su vez en la máquina pasiva, las dos direcciones IP virtuales
no estarán configuradas y los servicios serán detenidos.
Los servicios definidos en haresources se lanzan de izquierda a derecha cuando Heratbeat los
arranca (start), y los detiene de derecha a izquierda (stop).
Debido a que Hearbeat se encarga de la administración de dichos servicios (sus scripts de gestión
residen en /etc/init.d/), habrá que eliminar todos los enlaces relacionados que se encuentren dentro
del directorio /etc/rc[nivel_de_seguridad].d/. Vamos a eliminar en ambos nodos el enlace a mysql-
ndb-mgm. El resto de enlaces de los otros servicios los iremos quitando a medida que vayamos
viendo sus funciones en los siguientes artículos.
~# update-rc.d -f mysql-ndb-mgm remove
Cuando el sistema esté en funcionamiento (nodo SO activo y nodo MIRROR pasivo), si hacemos la
prueba de matar al demonio de Heartbeat en SO (~# pkill heartbeat), al visualizar el log de
Heartbeat en el nodo MIRROR podremos ver los siguientes mensajes:
root@MIRROR~# >/var/log/ha-log ; tail -f /var/log/ha-log
WARN: node ha1: is dead
info: Dead node ha1 gave up resources.
info: Resources being acquired from ha1.
info: Link ha1:eth0 dead
....
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Es decir, podremos apreciar cómo MIRROR ha detectado la caída de SO y a continuación este
último asumirá el rol de activo, levantando las dos direcciones IP virtuales y los servicios
gestionados.
Para iniciar, detener o reiniciar Heartbeat se pueden emplear los siguientes comandos:
~# /etc/init.d/heartbeat start
~# /etc/init.d/heartbeat stop
~# /etc/init.d/heartbeat restart
Para monitorizar y controlar los servidores reales del cluster LVS, así como para llevar a cabo la
administración de las tablas de forwarding del kernel, emplearemos el demonio ldirectord, el cual
será arrancado y detenido cuando sea necesario por Hearbeat.
Ldirectord comprobará el estado de los servidores reales (LB1 y LB2) en intervalos de tiempo
predeterminados, con el objetivo de mantener actualizada la tabla de conexiones del servidor virtual
(SO o MIRROR).
Ldirectord genera reglas ipvsadm para gestionar el cluster LVS. Si alguno de los nodos traseros deja
de atender peticiones de alguno de los servicios configurados por el LVS, ldirectord creará una
llamada a ipvsadm que hará que el balanceador deje de enviarle paquetes a dicho nodo y servicio
que no responde.
Lo primero que vamos a hacer va a ser instalar el paquete ldirectord en los dos nodos frontales, SO
y MIRROR.
~# aptitude install ldirectord
A continuación vamos a editar el fichero de configuración (/etc/ha.d/conf/ldirectord.cf) para
establecer los servicios a controlar (Apache, MySQL y vsftpd). Dentro de cada uno de los servicios
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
a monitorizar, indicaremos la dirección IP virtual que recibirá los paquetes (192.168.1.20) y las
direcciones IP de los servidores reales a los cuales se les repartirá la carga (10.0.0.12 y 10.0.0.13).
Este fichero será idéntico en ambos nodos frontales.
~# cat /etc/ha.d/conf/ldirectord.cf
# Tiempo máximo para comprobar el estado del servicio (segundos)
checktimeout=2
# Periodo de comprobación (segundos)
checkinterval=30
# Apache
virtual=192.168.1.20:80
real=10.0.0.12:80 masq
real=10.0.0.13:80 masq
service=http
protocol=tcp
scheduler=lc
checktype=negotiate
request="index.html"
receive="It works!"
# MySQL
virtual=192.168.1.20:3306
real=10.0.0.12:3306 masq
real=10.0.0.13:3306 masq
service=mysql
protocol=tcp
scheduler=lc
checktype=connect
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
# Vsftpd
virtual=192.168.1.20:21
real=10.0.0.12:21 masq
real=10.0.0.13:21 masq
service=ftp
protocol=tcp
persistent=600
scheduler=lc
checktype=connect
Como ha podido observarse, el fichero está formado por distintas secciones, una para cada tipo de
servicio gestionado. Cada uno de estos bloques comienza por la dirección IP virtual del cluster por
la que se atenderán las peticiones, y el puerto al que corresponde la clase de servicio especificado
(virtual=X.X.X.X:Y). Es muy importante acordarse de tabular cada uno de los elementos que
componen el bloque.
El primer elemento que aparece en cada una de las sección es la dirección o direcciones IP de los
servidores reales, definidas a través de la etiqueta masq, mediante la cual estaremos indicando que
se emplee un modelo LVS-NAT.
Otra de las etiquetas a destacar es la de scheduler, mediante la cual se señala el tipo de algoritmo a
emplear de cara al balanceo de carga. En nuestro caso se va a emplear un Least Connection (lc), que
lo que hace es asignar más trabajos a aquellos servidores que presentan menos carga de trabajo
(para consultar el resto de algoritmos soportados se puede recurrir a la ayuda de ipvsadm).
También cabe mencionar el parámetro checktype, que cuando tenga el valor connect indicará a
ldirectord que únicamente compruebe cada intervalo de tiempo definido (checkinterval) si el puerto
está abierto (para ello enviará un paquete SYN al puerto configurado). Si dicho parámetro toma el
valor negotiate, tendrá que negociar el estado de la conexión. Por ejemplo para el caso de HTTP,
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
ldirectord solicitará a Apache la página web index.html (request) y comprobará su contenido
(receive).
Para el caso del protocolo FTP configuraremos la opción de la persistencia. Debido a que este
protocolo utiliza dos puertos (20 para datos y 21 para control), es necesario que todas las peticiones
pertenecientes a una misma sesión vayan dirigidas siempre al mismo nodo (LB1 o LB2). De esta
forma si por ejemplo una máquina con dirección IP 192.168.1.150 inicia una sesión FTP contra la
dirección IP virtual 192.168.1.20, y este balanceador redirecciona la conexión hacia el nodo LB1, el
resto de conexiones que tengan como origen la dirección IP 192.168.1.150 y servicio FTP, siempre
irán al nodo LB1.
A través de la etiqueta persist=600 se configurará el tiempo de vida para dichas sesiones
persistentes. Si no hay actividad durante ese periodo de tiempo, la sesión se considerará cerrada.
Este parámetro también lo declarararíamos en caso de definir una sección para el protocolo HTTPS
(tiene también el problema de la persistencia - ver el artículo anterior -).
Además, decir también que para el caso del protocolo FTP no es suficiente con declarar la etiqueta
persist, también es necesario cargar un módulo (ip_vs_ftp) durante el arranque del sistema. Para ello
incluiremos este módulo dentro del archivo /etc/modules (en ambos nodos frontales).
~# cat /etc/modules
...
ip_vs_ftp
Otro aspecto que hay que tener en cuenta es el de la sincronización de la tabla de conexiones. En un
momento dado, el nodo activo puede tener abiertas varias conexiones HTTP. Todas estas
conexiones serán almacenadas por ipvsadm en una tabla de estados (/proc/net/ip_vs_conn_sync).
Para ello, el nodo activo enviará periódicamente mensajes multicast con los cambios de estado
acaecidos en su tabla de conexiones. El balanceador pasivo recibirá estos mensajes e irá
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
actualizando sus tablas
Si en un momento dado el nodo HA1 se cae y HA2 asume el papel de activo, este último tendrá
registradas la mayoría de las conexiones establecidas contra el cluster, con lo que la mayor parte de
las sesiones iniciadas podrán seguir accediendo a los mismos servicios que tenían abiertos con total
normalidad.
Para realizar esta tarea, tendremos que arrancar el demonio de sincronización al inicio del sistema
en ambos nodos, pero con la diferencia de que en el nodo configurado por defecto como activo
tendrá el estado master, y en el pasivo, backup. Esta acción la ejecutaremos añadiendo la siguiente
línea en el script de arranque /etc/rc.local.
root@ha1:~# cat /etc/rc.local
...
ipvsadm --start-daemon master
exit 0
root@ha2:~# cat /etc/rc.local
...
ipvsadm --start-daemon backup
exit 0
Y ya por último, si recordamos el archivo /etc/ha.d/haresources empleado por Hearbeat, podremos
ver que este demonio era el encargado de detener e iniciar a ldirectord (estará arrancado en el nodo
activo y parado en el pasivo).
~# cat /etc/ha.d/haresources
ha1 IPaddr2::192.168.1.20 IPaddr2::10.0.0.20 mysql-ndb-mgm ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master mon
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.
Manual de Proyecto Final
Por este motivo será necesario que el proceso init no levante a ldirectord cuando arranque el
sistema. Para ello, tendremos que ejecutar el siguiente comando en los dos nodos frontales.
~# update-rc.d -f ldirectord remove
Esta obra de Juan Ramón Moreno Novelo, José Enrique González Trejo y Luis Ángel Reyes Cruz
está bajo una licencia Creative Commons Atribución-NoComercial 3.0 Unported.