Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

42
CLÚSTER HA Clúster HA con Pacemaker, Corosync & Apache2 29 DE NOVIEMBRE DE 2013 ITP Sistemas Distribuidos I Mario Alberto Ángeles Jiménez 09200021 José Alfonso Quezada Ibarra 09201176 Isabel Martínez Monsalvo 10200222 Alex Domitilo García Hernández 09201173

Transcript of Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Page 1: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

CLÚSTER HA Clúster HA con Pacemaker, Corosync & Apache2

29 DE NOVIEMBRE DE 2013 ITP

Sistemas Distribuidos I Mario Alberto Ángeles Jiménez 09200021

José Alfonso Quezada Ibarra 09201176

Isabel Martínez Monsalvo 10200222

Alex Domitilo García Hernández 09201173

Page 2: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 1 Clúster HA

Contenido: Problema .............................................................................................. 3

Marco teórico ......................................................................................... 3

¿Qué son los clúster? .............................................................................. 3

Definición de Clúster ........................................................................... 3

Clúster en GNU/Linux ............................................................................. 4

Tipos de Clúster ................................................................................... 5

Clústeres de Balanceo de Carga .............................................................. 5

Clústeres de Alto Rendimiento ................................................................ 5

Clústeres de Alta Disponibilidad .............................................................. 5

Componentes principales de un Clúster de Alta Disponibilidad ............................. 6

Nodos ............................................................................................. 6

Sistema Operativo .............................................................................. 6

Conexiones de RED ............................................................................. 7

MiddleWare ...................................................................................... 7

Recursos o Servicios ............................................................................ 7

Alta Disponibilidad ................................................................................ 8

Beneficios de un Clúster de Alta Disponibilidad .............................................. 9

Estrategia de Implementación .................................................................... 10

Objetivos ............................................................................................. 12

Objetivo General ................................................................................. 12

Objetivos Específicos ............................................................................ 12

Justificación ......................................................................................... 13

Determinación del software a ocupar ............................................................ 14

Requerimientos Básicos para la implementación del clúster HA .......................... 14

Elementos del Clúster desarrollado ............................................................ 14

Instalación y configuración del software ........................................................ 15

Instalación del sistema Operativo .............................................................. 15

Software Requerido .............................................................................. 16

Instalación & Configuraciones................................................................ 16

FTP/VSFTPD .................................................................................. 16

Telnet ......................................................................................... 21

SSH ............................................................................................ 22

Page 3: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 2 Clúster HA

NFS ............................................................................................ 24

Samba ......................................................................................... 24

Configuración e instalación de Pacemaker, Corosync & Apache2 ...................... 25

Conclusiones ......................................................................................... 40

Referencias ........................................................................................... 41

Page 4: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 3 Clúster HA

Problema “implantación de un clúster de alta disponibilidad (HA), como proyecto final de la

materia de sistemas distribuidos I”

Marco teórico

¿Qué son los clúster?

Definición de Clúster “un tipo de sistema distribuido o paralelo conformado por una colección de

computadoras interconectadas usado como un único recurso de computación

unificado”

Las supercomputadoras son usadas en bancos, universidades y centros de investigación

para realizar complejos cálculos y obtener rápidos resultados. Seguramente habrán visto

en fotos esas grandes máquinas que ocupan cuartos completos y que permiten ejecutar

miles de millones de operaciones por segundo.

Esas "Centrales" poseen varios procesadores, inmensas cantidades de memoria y un

espacio de almacenamiento mucho más grande de lo que puedan imaginar. Todos estos

recursos pueden estar dispuestos de dos formas:

centralizados (todo dentro de una gran caja)

distribuidos.

Esta última modalidad es la que nosotros vamos a implementar. Vamos a decir que los

clúster son computadoras potentes que funcionan gracias a un sistema que permite

compartir los recursos de varios subsistemas. Podemos tener dos o más computadoras

interconectadas entre sí por una red y hacer que compartan libremente sus recursos.

Y cuando hablamos de recursos, no sólo nos referimos a archivos e impresoras: los

clúster permiten que las computadoras compartan sus procesadores y sus memorias RAM.

Se estarán preguntando, entonces: si conectamos dos computadoras en una arquitectura

de clúster... ¿Podemos obtener una sola con el doble de potencia?

En cierta forma, sí. La ganancia de rendimiento no es de exactamente el doble, pero es

muy superior a la de cada unidad del clúster.

Page 5: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 4 Clúster HA

En muchas universidades se usan clúster de 40 o 50 computadoras de "bajo"

rendimiento, como 486 y Pentium I o II. Estas máquinas, trabajando en conjunto,

ofrecen un súper sistema de cómputo muy eficaz, cuyo costo es significativamente

menor que el de una supercomputadora cuyos recursos están centralizados en una gran

caja.

Clúster en GNU/Linux Nuestro querido sistema operativo nos permite hacer esto de forma súper sencilla. Todo

lo que necesitamos son un par de máquinas conectadas entre sí (una red convencional es

suficiente) y el software requerido.

Page 6: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 5 Clúster HA

Tipos de Clúster Los clústeres cuyos nodos tienen arquitecturas similares y un mismo sistema operativo se

los conoce como Homogéneos caso contrario se los conoce como Heterogéneos.

Así mismo, existen 3 áreas principales en las que los clústeres tienen su campo de acción

y es precisamente de allí de donde toman su nombre.

Clústeres de Balanceo de Carga.

Clústeres de Alta Disponibilidad.

Clústeres de Alto Rendimiento

Clústeres de Balanceo de Carga

El objetivo de un clúster de Balanceo de Carga es el de distribuir el trabajo entre todos

los nodos del clúster, esto se consigue asignando el trabajo al nodo que posee más

recursos disponibles.

Este tipo de clústeres se usan comúnmente en servicios que por su naturaleza tienen una

enorme cantidad de carga, como por ejemplo: los servidores Web.

Clústeres de Alto Rendimiento

El objetivo de un clúster de alto rendimiento es compartir el recurso más valioso de un

computador, es decir, la capacidad de procesamiento.

Este tipo de clústeres son muy populares, y quizás también los más antiguos, ya que en

sus inicios fueron desarrollados para centros de cómputo enfocados en investigaciones

científicas donde era necesario tener un gran poder de procesamiento, capaz de

soportar una inmensa cantidad de cálculos para resolver un problema específico.

Clústeres de Alta Disponibilidad

El objetivo principal de un clúster de alta disponibilidad, también conocido como clúster

HA por las palabras en inglés High Availability, es el de mantener disponible uno o más

servicios la mayor cantidad de tiempo posible.

Page 7: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 6 Clúster HA

Este tipo de clústeres se caracterizan por que sus nodos están monitoreándose de

manera continua, es así que, cuando se detecta un falló de hardware o software en uno

de los nodos, otro nodo se encarga de proveer los servicios del nodo con problemas,

minimizando así la percepción de la pérdida de servicio por parte de los usuarios.

Componentes principales de un Clúster de Alta Disponibilidad

Los componentes principales de un clúster HA son:

Nodos

Sistema Operativo

Conexiones de Red

Middleware

Recursos o Servicios

Nodos

Un nodo no es otra que un computador dentro del clúster. Un nodo puede ser un

computador convencional, un servidor o un súper computador. Aunque no es

estrictamente obligatorio que todos los nodos del clúster sean exactamente iguales es

recomendable que estos compartan características similares de procesamiento y

almacenamiento para evitar un comportamiento ineficiente del clúster.

Sistema Operativo Una definición más precisa de lo que es un sistema operativo se encuentra más

adelante, sin embargo se puede decir de manera general que un sistema operativo es

aquel que se encarga de alojar los recursos e interactuar con el hardware en un

computador. No todos los sistemas operativos disponibles tienen las características

necesarias para conformar un clúster, un claro ejemplo de esta realidad es MS-DOS.

Por lo tanto, un sistema operativo para clústeres debe ser robusto, estable y confiable,

además debe ser multiusuario y multiproceso.

Page 8: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 7 Clúster HA

Conexiones de RED

Computacionalmente hablando, una conexión de red es el medio por el cual, al menos

dos computadores, envían y reciben información. Un requisito indispensable para la

implementación de un clúster es que todos los nodos sean capaces de comunicarse entre

sí a través de una conexión de red. Independientemente de la tecnología seleccionada se

recomienda que la velocidad de comunicación entre los nodos sea lo más homogénea

posible y mientras más rápida, mejor.

MiddleWare

De acuerdo con el profesor Sacha Krakowiak de la Universidad Joseph Fourier de

Francia, un middleware es:

“la capa de software que se encuentra entre el sistema operativo y las aplicaciones

en cada sitio del sistema.”

(Krakowiak, 2003)

En otras palabras, es un programa intermediario entre dos programas independientes. El

middleware es el encargado de monitorear, administrar, distribuir y controlar el

comportamiento general del clúster.

Algunos de los middlewares de alto nivel más populares para clústeres son:

Beowulf.

OSCAR (Open Source Cluster Application Resources).

OpenMosix.

Pacemaker.

Red Hat HPC Solution cluster.

Recursos o Servicios

Desde el punto de vista de un administrador de sistemas, un servicio o aplicación son

piezas de código que se ejecutan en el servidor para cumplir una tarea específica. Sin

embargo desde el punto de vista del Clúster, un servicio o aplicación son simples

recursos que pueden ser iniciados o detenidos. Por ejemplo, si hablamos de un servicio

Web ó un servidor HTTP, el recurso para el clúster es el servidor Web.

De la misma manera, para un servicio de correo o servidor SMTP, el recurso es el

servidor de correo. Esto también quiere decir que todo recurso tiene un servicio

asociado.

Page 9: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 8 Clúster HA

Alta Disponibilidad La disponibilidad se basa en un modelo matemático que provee el grado en que un

sistema de software permanece en una condición operable.

𝐴 =𝑀𝑇𝑇𝐹

𝑀𝑇𝑇𝐹+𝑀𝑇𝑇𝑅

MTTF = Es el tiempo promedio entre fallos.

MTTR = Es el tiempo promedio que tomar reparar el sistema después de un fallo.

Existen 2 métodos para alcanzar una alta disponibilidad:

Incrementar el valor del MTTF.

Reducir el valor del MTTR.

Page 10: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 9 Clúster HA

Beneficios de un Clúster de Alta Disponibilidad

Uno de los beneficios principales de un clúster de alta disponibilidad es la reducción de

las interrupciones de los servicios por problemas imprevistos de hardware o software, ya

que los recursos pueden ser configurados de tal manera que sean migrados

automáticamente a otro servidor ante un evento ocasionado por problemas en el

servidor principal.

Así mismo es posible cambiar o mover los recursos dinámicamente entre los nodos del

clúster cuando existen tareas planificadas de mantenimiento o actualizaciones de

hardware y software.

Otros beneficios de un clúster de alta disponibilidad son:

Mayor disponibilidad

Bajo costo de operación

Escalabilidad

Recuperación de desastres

Protección y Redundancia de datos

Page 11: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 10 Clúster HA

Estrategia de Implementación

La estrategia de implementación propuesta consiste en instalar, configurar e integrar

todos los componentes.

Para completar la estrategia es necesario realizar las siguientes actividades:

Diseñar la arquitectura física del clúster.

Instalar y configurar el sistema operativo GNU/Linux.

Instalar y configurar el sistema de archivos para clústeres o el

administrador de sincronización de datos.

Instalar el administrador de membresía y mensajería.

Instalar y configurar el administrador de recursos.

Instalar y configurar los servicios y/o aplicaciones.

Page 12: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 11 Clúster HA

•BIND

•VSFTPD

•Apache

Servicios y/o Aplicaciones

•Corosync

•Pacemaker

Administradores (Mensajeria, Membrecia y Recursos)

•DRBD

Sistema de Almacenamiento Distribuido (Sincronizacion)

UBUNTU 12.04

Page 13: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 12 Clúster HA

Objetivos

Objetivo General Mostrar una estrategia para la implementación de un clúster de alta disponibilidad, para

profundizar conceptos y fundamentos relacionados con este tipo de clúster, utilizando

software de distribución libre bajo la licencia de GNU/Linux.

Objetivos Específicos Plantear una estrategia para la implementación de un

Clúster de Alta disponibilidad.

Implementar un prototipo de un Clúster de Alta

Disponibilidad sobre la plataforma Linux Ubuntu.

Configurar e Integrar cuatro nodos al Clúster de Alta

Disponibilidad con 2 Servicios (Apache y FTP).

Page 14: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 13 Clúster HA

Justificación

En la actualidad los servicios de computación relacionados con el Internet como el

correo electrónico, la navegación Web y transferencia de archivos son una parte

importante en el día a día de muchas empresas, por esta razón es necesario

implementar mecanismos de redundancia que permitan que estos servicios estén

disponibles la mayor cantidad de tiempo posible para los usuarios.

Por esta razón se justifica la implementación de este proyecto en vista de la necesidad

de mejorar la redundancia y la alta disponibilidad de aquellas empresas que dependen

de los servicios proporcionados por un solo servidor.

Por otro lado es importante que las empresas de nuestro país utilicen tecnología de

punta dentro de su infraestructura tecnológica para poder competir con otras empresas

del país y del mundo.

Page 15: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 14 Clúster HA

Determinación del software a ocupar

Requerimientos Básicos para la implementación del clúster HA

2 Computadoras con tarjetas de red Ethernet

(Pueden ser máquinas virtuales).

1 Red Ethernet.

Acceso a Internet.

Cada computadora debe tener como sistema

operativo, Ubuntu 12.04.

Elementos del Clúster desarrollado 4 laptop´s con sus respectivos puertos de red Ethernet y Wi-Fi

1 red de Ethernet (proporcionado por un modem Thomson

“Telmex”)

Acceso a internet

Ubuntu 12.04 a 64 bits

####################################################################

NOTA: todas las instalaciones de Ubuntu, deben ser la misma versión y misma

arquitectura esto es x86 o x64, además no se puede hacer las configuraciones

de Pacemaker y Corosync en versiones XX.10 de Ubuntu, Ejemplo Ubuntu

13.10 o Ubuntu Gnome 13.10, parece ser que la versión 13.04 de Ubuntu es

compatible, y la versión 12.10 no fue probada.

####################################################################

####################################################################

Page 16: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 15 Clúster HA

Instalación y configuración del software

Sin lugar a dudas estos son los dos puntos más importantes dentro de la elaboración de

este tipo de proyectos por ello es recomendable leer y entender la documentación

incluida con el software para que la instalación y la configuración seleccionada sea la

más adecuada.

También es importante cumplir los requerimientos individuales de cada programa para

evitar problemas de incompatibilidad.

Instalación del sistema Operativo

El sistema operativo a utilizar es la distribución de Linux Ubuntu en su versión 12.04, con

la arquitectura x64.

Una vez instalado se actualiza el sistema en todos los nodos del clúster, esto es:

root@iponxho18:~# apt-get update

root@mario:~# apt-get update

root@alex:~# apt-get update

root@iza:~# apt-get update

Page 17: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 16 Clúster HA

Software Requerido

VSFTPD

XINETD

TELNETD

SSH

NFS

SAMBA

JAVA

PACEMAKER

COROSYNC

APACHE2

Este software debe ser instalado en todos y cada uno de los nodos del clúster.

Instalación & Configuraciones

FTP/VSFTPD

FTP – Protocolo de transferencia de archivos

Es un protocolo de red para la transferencia de archivos entre sistemas

conectados a una red TCP (Transmission Control Protocol), basada en la

arquitectura Cliente Servidor.

VSFTPD – Very Secure FTP Daemon

Es un servidor de archivos por FTP muy ligero y seguro. Es el recomendado por

DEBIAN y Ubuntu tiene una configuración muy sencilla en un solo fichero y se

adapta muy bien a un servidor multi-hosting.

Page 18: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 17 Clúster HA

Se Instala con el comando:

Después tenemos que hacer unas modificaciones al archivo de configuración vsftpd.conf

Y nos abrirá la siguiente ventana, solo hay que des-comentar las líneas

Local_enable=yes

Write_enable=yes

root@iponxho18:~# apt-get install vsftpd nmap

root@mario:~# apt-get install vsftpd nmap

root@alex:~# apt-get install vsftpd nmap

root@iza:~# apt-get install vsftpd nmap

root@iponxho18:~# gedit /etc/vsftpd.conf

root@mario:~# gedit /etc/vsftpd.conf

root@alex:~# gedit /etc/vsftpd.conf

root@iza:~# gedit /etc/vsftpd.conf

Page 19: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 18 Clúster HA

#######################################################################

### /etc/vsftpd.conf ###

#######################################################################

# Example config file /etc/vsftpd.conf

#

# The default compiled in settings are fairly paranoid. This sample file

# loosens things up a bit, to make the ftp daemon more usable.

# Please see vsftpd.conf.5 for all compiled in defaults.

#

# READ THIS: This example file is NOT an exhaustive list of vsftpd options.

# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's

# capabilities.

#

#

# Run standalone? vsftpd can run either from an inetd or as a standalone

# daemon started from an initscript.

listen=YES

#

# Run standalone with IPv6?

# Like the listen parameter, except vsftpd will listen on an IPv6 socket

# instead of an IPv4 one. This parameter and the listen parameter are mutually

# exclusive.

#listen_ipv6=YES

#

# Allow anonymous FTP? (Beware - allowed by default if you comment this out).

anonymous_enable=YES

#

# Uncomment this to allow local users to log in.

local_enable=YES

#

# Uncomment this to enable any form of FTP write command.

write_enable=YES

#

# Default umask for local users is 077. You may wish to change this to 022,

# if your users expect that (022 is used by most other ftpd's)

#local_umask=022

#

# Uncomment this to allow the anonymous FTP user to upload files. This only

# has an effect if the above global write enable is activated. Also, you will

# obviously need to create a directory writable by the FTP user.

#anon_upload_enable=YES

#

# Uncomment this if you want the anonymous FTP user to be able to create

# new directories.

#anon_mkdir_write_enable=YES

#

# Activate directory messages - messages given to remote users when they

# go into a certain directory.

dirmessage_enable=YES

#

# If enabled, vsftpd will display directory listings with the time

# in your local time zone. The default is to display GMT. The

# times returned by the MDTM FTP command are also affected by this

# option.

use_localtime=YES

#

# Activate logging of uploads/downloads.

xferlog_enable=YES

Page 20: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 19 Clúster HA

#

# Make sure PORT transfer connections originate from port 20 (ftp-data).

connect_from_port_20=YES

#

# If you want, you can arrange for uploaded anonymous files to be owned by

# a different user. Note! Using "root" for uploaded files is not

# recommended!

#chown_uploads=YES

#chown_username=whoever

#

# You may override where the log file goes if you like. The default is shown

# below.

#xferlog_file=/var/log/vsftpd.log

#

# If you want, you can have your log file in standard ftpd xferlog format.

# Note that the default log file location is /var/log/xferlog in this case.

#xferlog_std_format=YES

#

# You may change the default value for timing out an idle session.

#idle_session_timeout=600

#

# You may change the default value for timing out a data connection.

#data_connection_timeout=120

#

# It is recommended that you define on your system a unique user which the

# ftp server can use as a totally isolated and unprivileged user.

#nopriv_user=ftpsecure

#

# Enable this and the server will recognise asynchronous ABOR requests. Not

# recommended for security (the code is non-trivial). Not enabling it,

# however, may confuse older FTP clients.

#async_abor_enable=YES

#

# By default the server will pretend to allow ASCII mode but in fact ignore

# the request. Turn on the below options to have the server actually do ASCII

# mangling on files when in ASCII mode.

# Beware that on some FTP servers, ASCII support allows a denial of service

# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd

# predicted this attack and has always been safe, reporting the size of the

# raw file.

# ASCII mangling is a horrible feature of the protocol.

#ascii_upload_enable=YES

#ascii_download_enable=YES

#

# You may fully customise the login banner string:

#ftpd_banner=Welcome to blah FTP service.

#

# You may specify a file of disallowed anonymous e-mail addresses. Apparently

# useful for combatting certain DoS attacks.

#deny_email_enable=YES

# (default follows)

#banned_email_file=/etc/vsftpd.banned_emails

#

# You may restrict local users to their home directories. See the FAQ for

# the possible risks in this before using chroot_local_user or

# chroot_list_enable below.

#chroot_local_user=YES

#

# You may specify an explicit list of local users to chroot() to their home

# directory. If chroot_local_user is YES, then this list becomes a list of

# users to NOT chroot().

Page 21: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 20 Clúster HA

# (Warning! chroot'ing can be very dangerous. If using chroot, make sure that

# the user does not have write access to the top level directory within the

# chroot)

#chroot_local_user=YES

#chroot_list_enable=YES

# (default follows)

#chroot_list_file=/etc/vsftpd.chroot_list

#

# You may activate the "-R" option to the builtin ls. This is disabled by

# default to avoid remote users being able to cause excessive I/O on large

# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume

# the presence of the "-R" option, so there is a strong case for enabling it.

#ls_recurse_enable=YES

#

# Customization

#

# Some of vsftpd's settings don't fit the filesystem layout by

# default.

#

# This option should be the name of a directory which is empty. Also, the

# directory should not be writable by the ftp user. This directory is used

# as a secure chroot() jail at times vsftpd does not require filesystem

# access.

secure_chroot_dir=/var/run/vsftpd/empty

#

# This string is the name of the PAM service vsftpd will use.

pam_service_name=vsftpd

#

# This option specifies the location of the RSA certificate to use for SSL

# encrypted connections.

rsa_cert_file=/etc/ssl/private/vsftpd.pem

############################################################################

############################################################################

Page 22: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 21 Clúster HA

Telnet

Telnet

Es el nombre de un protocolo de red que sirve para accedes mediante una red a

otra máquina para manejarla remotamente como si estuviéramos sentados

delante de ella.

Para su instalación:

############################################################################

Nota: actualmente se desaconseja el uso de telnet en ambiente donde la

seguridad sea importante, ya que los datos son enviados sin cifrar, y esto facilita

que cualquier intruso espié el tráfico de la red y pueda obtener los nombre de

usuarios y contraseñas, y de este modo poder accesar a los equipos.

############################################################################

############################################################################

root@iponxho18:~# apt-get install xinetd telnetd

root@mario:~# apt-get install xinetd telnetd

root@alex:~# apt-get install xinetd telnetd

root@iza:~# apt-get install xinetd telnetd

Page 23: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 22 Clúster HA

SSH

SSH – Secure Shell

Es el nombre del protocolo y del programa que lo implementa y sirve para

acceder a maquinas remotas a través de una red.

Permite manejar por completo la computadora mediante interprete de

comandos, y también redirigir el tráfico de X para poder ejecutar programas

gráficos si tenemos un servidor X (en sistemas Unix y Windows) corriendo.

Para la instalación:

La configuración del SSH

Y solamente agregamos al final del archivo la siguiente línea ALL:ALL

root@iponxho18:~# apt-get install openssh-server

root@mario:~# apt-get install openssh-server

root@alex:~# apt-get install openssh-server

root@iza:~# apt-get install openssh-server

root@iponxho18:~# gedit /etc/hosts.allow

root@mario:~# gedit /etc/hosts.allow

root@alex:~# gedit /etc/hosts.allow

root@iza:~# gedit /etc/hosts.allow

Page 24: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 23 Clúster HA

#######################################################################

### /etc/hosts.allow ###

#######################################################################

# /etc/hosts.allow: list of hosts that are allowed to access the system.

# See the manual pages hosts_access(5) and hosts_options(5).

#

# Example: ALL: LOCAL @some_netgroup

# ALL: .foobar.edu EXCEPT terminalserver.foobar.edu

#

# If you're going to protect the portmapper use the name "portmap" for the

# daemon name. Remember that you can only use the keyword "ALL" and IP

# addresses (NOT host or domain names) for the portmapper, as well as for

# rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8)

# for further information.

#

ALL:ALL

############################################################################

############################################################################

Page 25: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 24 Clúster HA

NFS

NFS (Network File System) es un protocolo de sistema de archivos en red

desarrollado originalmente por Sun Microsystems en 1984, permitiéndole a un

usuario en una máquina cliente acceder a los archivos en la red como si lo

estuviera haciendo localmente.

Para su instalación:

Samba

Samba es un software que permite a tu ordenador poder compartir archivos e

impresoras con otras computadoras en una misma red local. Utiliza para ello un

protocolo conocido como SMB/CIFS compatible con sistemas operativos UNIX o

Linux, como Ubuntu, pero además con sistemas Windows (XP, NT, 98...), OS/2 o

incluso DOS. También se puede conocer como LanManager o NetBIOS.

Para su instalación:

root@iponxho18:~# apt-get install nfs-kernel-server nfs-common portmap

root@mario:~# apt-get install nfs-kernel-server nfs-common portmap

root@alex:~# apt-get install nfs-kernel-server nfs-common portmap

root@iza:~# apt-get install nfs-kernel-server nfs-common portmap

root@iponxho18:~# apt-get install samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba

root@mario:~# apt-get install samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba

root@alex:~# apt-get install samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba

root@iza:~# apt-get install samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba

Page 26: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 25 Clúster HA

Configuración e instalación de Pacemaker, Corosync & Apache2

Primero que nada tenemos que crear un red, para esto utilizamos un modem X

(utilizamos nuestro modem Telmex, porque queríamos dejar sin internet a nuestro

carnalito XD), y configurar las direcciones IP de cada equipo como estáticas.

Para montar nuestro clúster, se utilizaron 3 clientes y un servidor

192.168.1.2 iponxho18 Nodo Principal

192.168.1.3 iza Nodo

192.168.1.4 mario Nodo

192.168.1.5 alex Nodo

Editamos el archivo /etc/hosts

root@iponxho18:~# gedit /etc/hosts

root@mario:~# gedit /etc/hosts

root@alex:~# gedit /etc/hosts

root@iza:~# gedit /etc/hosts

Page 27: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 26 Clúster HA

#######################################################################

### /etc/hosts ###

#######################################################################

127.0.0.1 localhost

127.0.1.1 iponxho18

192.168.1.2 iponxho18

192.168.1.3 iza

192.168.1.4 mario

192.168.1.5 alex

192.168.1.254 Modem

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

############################################################################

############################################################################

Se hacen los pings a los nodos que se crearon

Page 28: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 27 Clúster HA

Para empezar se instalara Apache2

Creamos un virtual-host, para esto editaremos el siguiente archivo:

Y lo modificamos para que este de la siguiente forma:

root@iponxho18:~# apt-get install apache2

root@mario:~# apt-get install apache2

root@alex:~# apt-get install apache2

root@iza:~# apt-get install apache2

root@iponxho18:~# gedit /etc/apache2/sites-available/default

root@mario:~# gedit /etc/apache2/sites-available/default

root@alex:~# gedit /etc/apache2/sites-available/default

root@iza:~# gedit /etc/apache2/sites-available/default

Page 29: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 28 Clúster HA

#######################################################################

### /etc/apache2/sites-available/default ###

#######################################################################

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName localhost

DocumentRoot /home/www/SISTEMAS

<Directory />

Options FollowSymLinks

AllowOverride None

</Directory>

<Directory /home/www/SISTEMAS>

Options Indexes FollowSymLinks MultiViews

AllowOverride None

Order allow,deny

allow from all

</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">

AllowOverride None

Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch

Order allow,deny

Allow from all

</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,

# alert, emerg.

LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"

<Directory "/usr/share/doc/">

Options Indexes MultiViews FollowSymLinks

AllowOverride None

Order deny,allow

Deny from all

Allow from 127.0.0.0/255.0.0.0 ::1/128

</Directory>

</VirtualHost>

############################################################################

############################################################################

Page 30: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 29 Clúster HA

En donde:

“DocumentRoot /home/www/SISTEMAS” & “<Directory /home/www/SISTEMAS>

Pertenecen a los directorios donde están alojadas las páginas a mostrar.

El siguiente paso en el directorio /etc/apache2/sites-available/ teclear el

siguiente comando:

El comando "a2ensite", lo único que hace es un enlace simbólico dentro de la carpeta

/etc/apache2/sites-enabled a algunos de los sitios que están en la otra carpeta

/etc/apache2/sites-available, es decir en sites-available están los sitios disponibles, y

en sites-enabled están los que podemos usar.

Y después recargamos el apache:

root@iponxho18:~# cd /etc/apache2/sites-available/

root@iponxho18:/etc/apache2/sites-available# a2ensite default

root@mario:~# cd /etc/apache2/sites-available/

root@mario:/etc/apache2/sites-available# a2ensite default

root@alex:~# cd /etc/apache2/sites-available/

root@alex:/etc/apache2/sites-available# a2ensite default

root@iza:~# cd /etc/apache2/sites-available/

root@iza:/etc/apache2/sites-available# a2ensite default

root@iponxho18:~# /etc/init.d/apache2 reload

root@mario:~# /etc/init.d/apache2 reload

root@alex:~# /etc/init.d/apache2 reload

root@iza:~# /etc/init.d/apache2 reload

Page 31: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 30 Clúster HA

Ahora instalaremos COROSYNC y PACEMAKER en todos los nodos del clúster.

Como el nodo principal (servidor) es iponxho18, en esta máquina se creara el archivo de

autentificación de Corosync

Automáticamente le da permisos, así que no es necesario especificarlos, después hay

que pasar esta llave a los demás nodos por medio de SSH, antes que nada en los nodos

clientes hay que otorgar permisos de escritura.

root@iponxho18:~# apt-get install pacemaker corosync

root@mario:~# apt-get install pacemaker corosync

root@alex:~# apt-get install pacemaker corosync

root@iza:~# apt-get install pacemaker corosync

root@iponxho18:~# Corosync-keygen

Page 32: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 31 Clúster HA

Ahora si podemos pasar el archivo llave.

Cabe destacar que la sintaxis es la siguiente:

scp Archivo_a_copiar Usuario@IP:Directorio_a_guardar

Editamos el fichero de configuración /etc/corosync/corosync.conf en todos los nodos, y

añadimos la red a utilizar.

root@iponxho18:~# cd /etc/

root@iponxho18:/etc# chmod –R 777 corosync

root@mario:~# cd /etc/

root@mario:/etc# chmod –R 777 corosync

root@alex:~# cd /etc/

root@alex:/etc# chmod –R 777 corosync

root@iza:~# cd /etc/

root@iza:/etc# chmod –R 777 corosync

root@iponxho18:~#

scp /etc/Corosync/authkey iza@iza:/etc/corosync/authkey

root@iponxho18:~#

scp /etc/Corosync/authkey mario@mario:/etc/corosync/authkey

root@iponxho18:~#

scp /etc/Corosync/authkey alex@alex:/etc/corosync/authkey

Page 33: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 32 Clúster HA

#######################################################################

### /etc/corosync/corosync.conf ###

#######################################################################

# Please read the openais.conf.5 manual page

totem {

version: 2

# How long before declaring a token lost (ms)

token: 3000

# How many token retransmits before forming a new configuration

token_retransmits_before_loss_const: 10

# How long to wait for join messages in the membership protocol (ms)

join: 60

# How long to wait for consensus to be achieved before starting a new round of membership

configuration (ms)

consensus: 3600

# Turn off the virtual synchrony filter

vsftype: none

# Number of messages that may be sent by one processor on receipt of the token

max_messages: 20

# Limit generated nodeids to 31-bits (positive signed integers)

clear_node_high_bit: yes

# Disable encryption

secauth: off

# How many threads to use for encryption/decryption

threads: 0

# Optionally assign a fixed node id (integer)

# nodeid: 1234

# This specifies the mode of redundant ring, which may be none, active, or passive.

rrp_mode: none

interface {

# The following values need to be set based on your environment

ringnumber: 0

root@iponxho18:~# gedit /etc/Corosync/Corosync.conf

root@mario:~# gedit /etc/Corosync/Corosync.conf

root@alex:~# gedit /etc/Corosync/Corosync.conf

root@iza:~# gedit /etc/Corosync/Corosync.conf

Page 34: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 33 Clúster HA

bindnetaddr: 192.168.1.0

mcastaddr: 226.94.1.1

mcastport: 5405

}

}

amf {

mode: disabled

}

service {

# Load the Pacemaker Cluster Resource Manager

ver: 0

name: pacemaker

}

aisexec {

user: root

group: root

}

logging {

fileline: off

to_stderr: yes

to_logfile: no

to_syslog: yes

syslog_facility: daemon

debug: off

timestamp: on

logger_subsys {

subsys: AMF

debug: off

tags: enter|leave|trace1|trace2|trace3|trace4|trace6

}

}

############################################################################

############################################################################

Donde bindnetaddr: 192.168.1.0

Sirve para especificar que el clúster va a trabajar en todo el rango de direcciones

IP de 192.168.1.X

Page 35: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 34 Clúster HA

También tendremos que configurar el fichero /etc/default/corosync para que reconozca

el demonio, esto se consigue poniéndolo a yes:

#######################################################################

### /etc/default/corosync ###

#######################################################################

# start corosync at boot [yes|no]

START=yes

############################################################################

############################################################################

Se reinicia el servicio en todos los nodos:

root@iponxho18:~# gedit /etc/default/corosync

root@mario:~# gedit /etc/default/corosync

root@alex:~# gedit /etc/default/corosync

root@iza:~# gedit /etc/default/corosync

root@iponxho18:~# service Corosync restart

root@mario:~# service Corosync restart

root@alex:~# service Corosync restart

root@iza:~# service Corosync restart

Page 36: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 35 Clúster HA

Y con el comando crm status podemos ver el estado del

Configuración de la IP VIRTUAL como recurso:

El recurso que vamos a configurar en este ejemplo va a ser una dirección IP

192.168.1.90, para ello en primer lugar desactivamos el mecanismo de STONITH (Shoot

The Other Node In The Head), que se utiliza para parar un nodo que esté dando

problemas y así evitar un comportamiento inadecuado del clúster:

Ahora configuramos el recurso de la IP virtual (192.168.1.90):

Y configuraremos un recurso para los nodos (a partir de ahora todo lo que se configure

de crm en un nodo se replicará al otro):

root@iponxho18:~# crm configure property stonith-enabled=false

root@mario:~# crm configure property stonith-enabled=false

root@alex:~# crm configure property stonith-enabled=false

root@iza:~# crm configure property stonith-enabled=false

Page 37: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 36 Clúster HA

donde se tiene la siguiente sintaxis:

crm configure primitive NOMBRE_RECURSO ocf:heartbeat:IPaddr2 params

ip=”IP_VIRTUAL” nic=”eth0” op monitor interval=”10s” meta is-managed=”true”

Podremos comprobarlo haciendo un crm_mon:

Sin embargo iponxho18 (Nodo Principal) no pasa a ofrecer el recurso directamente

porque no hay cuórum en el clúster. El cuórum (quorum) es una propiedad que utiliza

Pacemaker para tomar las decisiones apropiadas mediante consultas consensuadas a

todos los nodos, pero no tiene razón de ser en un clúster de solo dos nodos, ya que sólo

habrá quorum cuando los dos nodos estén operativos, así que ignoramos las decisiones

basadas en cuórum:

root@iponxho18:~# crm configure primitive FAILOVER-ADDR

ocf:heartbeat:IPaddr2 params ip=”192.168.1.90” nic=”eth0” op

monitor interval=”10s” meta is-managed=”true”

root@iponxho18:~# crm_mon

root@iponxho18:~# crm configure property no-quorum-policy=ignore

Page 38: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 37 Clúster HA

Después configuraremos el recurso para apache:

Donde:

P_APACHE es el nombre del recurso a compartir

Ahora pondremos el orden en el que Pacemaker y Corosync irán checando los

servidores para ver su disponibilidad, y si están así mostrar su contenido.

Donde la sintaxis es la siguiente:

crm configure order START_ORDER inf: Nombre_de_la_IP_VIRTUAL

Nombre_Recurso_Apache

Marcaremos ambos nodos como el primero, segundo,…, N.

root@iponxho18:~# crm configure primitive P_APACHE

ocf:heartbeat:apache params configfile="/etc/apache2/apache2.conf"

statusurl="http://localhost/server- status" op monitor

interval="40s"

root@iponxho18:~# crm configure order START_ORDER inf: FAILOVER-ADDR P_APACHE

root@iponxho18:~# crm configure location L_IP_NODE001 FAILOVER-ADDR 100:

iponxho18

root@iponxho18:~# crm configure location L_IP_NODE002 FAILOVER-ADDR 100:

alex

root@iponxho18:~# crm configure location L_IP_NODE003 FAILOVER-ADDR 100:

mario

root@iponxho18:~# crm configure location L_IP_NODE004 FAILOVER-ADDR 100:

iza

Page 39: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 38 Clúster HA

Donde tiene la siguiente sintaxis:

crm configure location NUMERACION NOMBRE_RECURSO_IP_VIRTUAL 100:

NOMBRE_DEL_NODO

Si todo va bien al teclear el sig. Comando crm configure show aparecerá lo siguiente:

#######################################################################

### crm configure show ###

#######################################################################

node alex

node iponxho18

node mario

primitive FAILOVER-ADDR ocf:heartbeat:IPaddr2 \

params ip="192.168.1.90" nic="eth0" \

op monitor interval="10s" \

meta is-managed="true"

primitive P_APACHE2 ocf:heartbeat:apache \

params configfile="/etc/apache2/apache2.conf" statusurl="http://localhost/server-status" \

op monitor interval="40s"

location L_IP_NODE001 FAILOVER-ADDR 100: iponxho18

location L_IP_NODE002 FAILOVER-ADDR 100: alex

location L_IP_NODE003 FAILOVER-ADDR 100: mario

location L_IP_NODE004 FAILOVER-ADDR 100: iza

order START_ORDEn inf: FAILOVER-ADDR P_APACHE2

property $id="cib-bootstrap-options" \

dc-version="1.1.6-9971ebba4494012a93c03b40a2c58ec0eb60f50c" \

cluster-infrastructure="openais" \

expected-quorum-votes="3" \

stonith-enabled="false" \

no-quorum-policy="ignore"

############################################################################

############################################################################

Page 40: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 39 Clúster HA

Ahora bien solo reiniciamos todos los equipos, para que las configuraciones agan efecto,

después de esto simplemente en la barra de direcciones tecleamos 192.168.1.90 y debe

de mostrar la pagina web por defecto en iponxho18 para todos.

Ahora bien si el servidor iponxho18 se llegara a caer automáticamente la pagina alojada

en alex entrara en servicio, y asi sucesivamente.

############################################################################

############################################################################

Nota: para efectos prácticos de instalación por tiempo, se pueden instalar todos

root@iponxho18:~# apt-get install vsftpd xinetd telnetd openssh-server nmap

tree aptitude nfs-kernel-server nfs-common portmap samba samba-common

smbclient libpam-smbpass python-glade2 system-config-samba pacemaker corosync

apache2

root@mario:~# apt-get install vsftpd xinetd telnetd openssh-server nmap tree

aptitude nfs-kernel-server nfs-common portmap samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba pacemaker corosync apache2

root@alex:~# apt-get install vsftpd xinetd telnetd openssh-server nmap tree

aptitude nfs-kernel-server nfs-common portmap samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba pacemaker corosync apache2

root@iza:~# apt-get install vsftpd xinetd telnetd openssh-server nmap tree

aptitude nfs-kernel-server nfs-common portmap samba samba-common smbclient

libpam-smbpass python-glade2 system-config-samba pacemaker corosync apache2

Page 41: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 40 Clúster HA

los paquetes con el siguiente comando:

Esto significa un ahorro significativo de tiempo, esto solo cumple con la

instalación, la configuración debe realizarse de forma manual.

############################################################################

############################################################################

Conclusiones

Jose Alfonso Quezada Ibarra

Para el manejo de sistema operativo que en este caso es Ubuntu ya es más familiar por

que a medida de que fuimos aprendiendo durante el curso. Por ese lado ya se nos hace

casi fácil manejarlo como los otros sistemas operativos que se manejan.

Isabel Martínez Monsalvo

Los clúster son una excelente idea cuando se necesita un sistema de súper computación

pero no se tienen los recursos económicos suficientes para invertir en él. Obviamente en

este tutorial solo se vio un pequeño concepto de lo que implica un clúster HA.

Mario Alberto Ángeles Giménez

Para esta unidad cabe mencionar que este tema fue relativamente nuevo para mi puesto

que al intentar instalar algunas paqueterías y o programas tuvimos demasiados errores

los cuales nos llevaron a buscar en diferentes sitios de internet así como también de

libros en los cueles tuvimos que basarnos para así poder cerrar este clúster aprendiendo

a base de pruebas y de bastantes errores los cuales nos llevaron a aprender bastantes

comando para poder realizarlo, al final todo lo instalado y modificado ya fue de mayor

facilidad puesto q después de tanto practicar e investigar la forma de realizar el clúster

fue de una manera más sencilla que cuando lo empezamos a realizar.

Page 42: Cluster de Alta Disponibilidad Con Corosync, Pacemaker & Apache2

Instituto Tecnológico de Pachuca P á g i n a | 41 Clúster HA

Referencias http://www.ajaxman.net/1541/tutorial-creando-virtual-host-de-apache-usando-linux/.

(s.f.). Taringa! Obtenido de Crear VirtualHost en Apache:

http://www.taringa.net/posts/linux/6772970/Crear-VirtualHost-en-Apache.html

navarro, J. e. (s.f.). Informatica para todos. Obtenido de HA cluster de apache2 con

pacemaker y corosync: http://enunlugardealcala.blogspot.mx/2013/03/ha-

cluster-de-apache2-con-pacemaker-y.html