Sei sulla pagina 1di 17

Instalacin de Elastix con servicios de Alta Disponibilidad

Nombre: Juan Diego Calle


Paralelo: 2
Fecha: 15 de Diciembre, 2013

Tabla de Contenidos
Objetivos....................................................................................................................................................3
Parmetros.............................................................................................................................................3
Arquitectura...........................................................................................................................................3
Instalacin de Elastix.................................................................................................................................4
Post Instalacin......................................................................................................................................4
Particin para DRBD.............................................................................................................................5
Configuracin de DRBD..................................................................................................................6
Heartbeat.............................................................................................................................................10
Pruebas.....................................................................................................................................................12
Resolviendo problemas............................................................................................................................17
Conclusiones ...........................................................................................................................................17
Recomendaciones.....................................................................................................................................17

Objetivos
Instalar un sistema de Elastix que pueda brindar un servicio de alta disponibilidad. Se plantea
usar una arquitectura de Servidor Maestro/Esclavo.

Parmetros
Usando los servicios de DRBD se compartir los archivos de configuracin, los datos usados,
por ejemplo de las base de datos entro los dos equipos. El servicio de HeartBeat nos servir para
detectar cuando se ha caido algun servidor o cuando se vuelven a levantar los servidores para poder
levantar los servicios necesarios de Elastix, como el Asterisk, MySQL y Apache o apagarlos.
Por efectos didcticos vamos a usar ds mquinas virtuales en un mismo servidor para simular
su conexin con tarjetas virtuales. En el caso de de una aplicacin de mundo real seria mucho mejor
poner los Servidores con Elastix en dos equipos diferentes.

Arquitectura

1. Arquitectura usada para un servidor maestro esclavo

Se necesitan dos servidores con iguales requerimientos, dos tarjetas de red en cada servidor y
una particin del mismo tamao. En el caso de que los discos sean de distinto tamao se necesita crear
una particin extra, de un tamao exacto. Esta particin extra es donde vamos a almacenar las base de
datos, los archivos de configuracin. El DRBD sincroniza constantemente esta particin para que al
momento de una caida de servicio se pueda levantar los servicios donde se qued el otro servidor.

En nuestro caso vamos a usar dos discos virtuales de 30 GB, asignando 10 GB para la raz del
sistema operativo, 2GB para la particin SWAP (Estamos usando 2GB de ram en cada mquina
virtual), y vamos a dejar el resto para nuestra particin DRBD. En un escenario real se aconseja un
disco duro mayor de uno 500GB. Asignando cerca de un 50 GB para el sistema operativo.

Instalacin de Elastix
La instalacin de Elastix es bastante estndard, excepto en la parte de particionar el disco duro.
Vamos a usar un sistema de particionamiento customizado, no hay que usar las opciones por defecto ya
ocupara todo el disco.

2. Particiones

Nuestra particin resultante queda cerca de 18GB. Despus de los 2 GB en sistemas Linux se
recomienda que las particiones swap sean en relacin 1 a 1. Vamos a dejar por el momento a este
espacio libre sin partcionar, esto lo dejamos para despus. Seguimos con las instalaciones por defecto,
a menos que se quiera hacer algo fuera de lo normal.

Post Instalacin
Una vez finalizada la instalacin es altamente recomendable actualizar el sistema.

# yum update -y
Esto es importante para el buen funcionamiento del DRBD que esto se haga al principio.
Ahora vamos a instalar DRBD y HeartBeat
# yum install heartbeat drbd83 kmod-drbd83
En versiones antiguas se manejaba las versiones del drbd83 y el drbd82, segn la
documentacin encontrada se puede dar problemas con en sistemas operativos de 64 bits la versin
drbd83 y se deberia usar la 82 en caso de que de problemas. En nuestras pruebas nunca tuviemos
problemas con la versin 83. Hoy en da se maneja la versin por defecto drbd83, el empaquetado lo
maneja como drbd, sin el nmero de la versin.

Particin para DRBD


Con cualquier programa de particionamiento ya sea fdisk, cdisk o gdisk en el caso de que se
este usando un tipo de particin GPT, vamos a crear nuestra particin usando lo que resta del disco. En
mi caso yo use fdisk.

3. Particionamiento, notesse que sda3 es la particin para DRBD

El tipo de particin que vamos a usar es de tipo Linux o 83. Al finalizar formateamos nuestra particin
con el comando mke2fs.
# mke2fs j /dev/sda3
Lo siguiente que hacemos es llenar de ceros esta particin para poder usarle.
# dd if=/dev/zero bs=1M count=1 of=/dev/sda3; sync
Como se puede apreciar en el grfico 1, se asignaron los nombres elastix1.localdomain al primer
servidor y elastix2.localdomain al segundo servidor. Se podra usar un servicio de DNS, pero para
efectos ms simples y prcticos vamos a usar el archivo /etc/hosts para resolver nombres.

4. Ejemplo de /etc/hosts

En el grfico 4 podemos observar los nombres de los dominios.

Configuracin de DRBD
Vamos a crear el archivo /etc/drbd.conf en el caso que no exista, si existe lo editamos de la siguiente
forma
global { usage-count no; }
resource r0 {
protocol C;
startup {
wfc-timeout 5;
degr-wfc-timeout 10;
} # cambiar los puestos de respuesta a lo que se desee
disk { on-io-error detach; } # or panic, ...
net {
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;
cram-hmac-alg "sha1";
shared-secret "Cent0Sru!3z";

}
syncer { rate 100M; }
on elastix1.localdomain {
device /dev/drbd0;
disk /dev/sda3;
address 10.1.1.1:7788;
meta-disk internal;
}
on elastix2.localdomain {
device /dev/drbd0;
disk /dev/sda3;
address 10.1.1.2:7788;
meta-disk internal;
}
5. /etc/drbd.conf

En este archivo estamos llamando a los dos servidores e indicando sus direcciones internas 10.1.1.1 y
la 10.1.1.2.
Hasta el momento solo se ha manejado la instalacin de un servidor. En este caso como se
utilizaron mquinas virtuales se pudo clonar las mquinas y solo se necesit cambiar los nombres en
los archivos /etc/sysconfig/network y cambiar las direcciones IP en las redes /etc/sysconfig/networkscript/ifcfg-eth0 y ifcfg-eth1. Lo importante es que se repitan los procesos en los dos servidores hasta
este punto.
Hora en ambos servidores inicializamos la particin DRBD
# drbdadm create-md r0
Ahora inicializamos el servicio
# service drbd start
Verificamos que ambos servidores estn como secundarios
# cat /proc/drbd
Debe decir en los dos secondary/secondary.
Ahora se debe elegir el servidor Maestro o Primario. En el caso de ejemplo se uso el servidor
elastix2.localdomain. Este comando solo se lo debe correr en el servidor Maestro o Primario, lo que
hace es sincronizar ambas particiones
# drbdadm -- --overwrite-data-of-peer primary r0
Con el comando watch vamos ver que este finalizado

# watch -n 1 cat /proc/drbd


Debemos ver que llegue al 100%. Esto se lo puede ejecutar en cualquiera de los dos servidores.
El siguiente paso es formatear la particion drbd y montarla en el servidor Maestro
# mkfs.ext3 /dev/drbd0
# mkdir /replica
# mount /dev/drbd0 /replica
El comando drbdadm nos permite saber en que estado esta el nuestro servidor, si esta como primario o
secundario.
# drbdadm role r0

6. Servidor elastix1

Servidor elastix2

En el servidor principal vamos a copiar nuestros archivos de configuracin en nuestra particin y crear
un symlinc o softlink a donde estaban.
cd /replica
tar -zcvf etc-asterisk.tgz /etc/asterisk
tar -zxvf etc-asterisk.tgz
tar -zcvf var-lib-asterisk.tgz /var/lib/asterisk
tar -zxvf var-lib-asterisk.tgz
tar -zcvf usr-lib-asterisk.tgz /usr/lib/asterisk/
tar -zcvf var-www.tgz /var/www/
tar -zxvf usr-lib-asterisk.tgz
tar -zcvf var-spool-asterisk.tgz /var/spool/asterisk/
tar -zxvf var-spool-asterisk.tgz
tar -zcvf var-lib-mysql.tgz /var/lib/mysql/
tar -zxvf var-lib-mysql.tgz
tar -zcvf var-log-asterisk.tgz /var/log/asterisk/
tar -zxvf var-log-asterisk.tgz
tar -zxvf var-www.tgz
rm -rf /etc/asterisk
rm -rf /var/lib/asterisk
rm -rf /usr/lib/asterisk/
rm -rf /var/spool/asterisk
rm -rf /var/lib/mysql/

rm -rf /var/log/asterisk/
ln -s /replica/etc/asterisk/ /etc/asterisk
ln -s /replica/var/lib/asterisk/ /var/lib/asterisk
ln -s /replica/usr/lib/asterisk/ /usr/lib/asterisk
ln -s /replica/var/spool/asterisk/ /var/spool/asterisk
ln -s /replica/var/lib/mysql/ /var/lib/mysql
ln -s /replica/var/log/asterisk/ /var/log/asterisk
ln -s /replica/var/www /var/www
7. Comandos para usar drbd mysql, asterisk y apache

Los servicios van a ser manejados por Heartbeat: apache, mysql y asterisk. Por lo cual es mejor
apagarlos.
service mysqld restart
service mysqld stop
service asterisk stop
service httpd stop
Ahora en el servidor primario vamos a desmontar la particin de replica en el servidor primario
y convertirlo de momento como secundario.
# umount /replica ; drbdadm secondary r0
Ahora vamos al servidor secundario o nuestro caso elastix1
# mkdir /replica ; drbdadm primary r0 ; mount /dev/drbd0 /replica
# ls /replica/
Otra forma de verificar es con el comando df -h viendo que la particin /replica este montada solo en el
servidor Principal.

8. Particin replica montada en el servidor primario

En el servidor secundario (elastix1) vamos ahora borrar los archivos de configuracin y crear link

simblicos o softlinks.
rm -rf /etc/asterisk
rm -rf /var/lib/asterisk
rm -rf /usr/lib/asterisk/
rm -rf /var/spool/asterisk
rm -rf /var/lib/mysql/
rm -rf /var/log/asterisk/
ln -s /replica/etc/asterisk/ /etc/asterisk
ln -s /replica/var/lib/asterisk/ /var/lib/asterisk
ln -s /replica/usr/lib/asterisk/ /usr/lib/asterisk
ln -s /replica/var/spool/asterisk/ /var/spool/asterisk
ln -s /replica/var/lib/mysql/ /var/lib/mysql
ln -s /replica/var/log/asterisk/ /var/log/asterisk
ln -s /replica/var/www /var/www
9. Servidor secundario

Desmontamos la particin replica en el servidor secundario y le hacemos secundario de nuevo.


# umount /replica/ ; drbdadm secondary r0
En el servidor primario volvemos a montar la particin replica y lo volvemos a primario de nuevo.
# drbdadm primary r0 ; mount /dev/drbd0 /replica
El siguiente paso es asegurarse que los servicios de drbd
chkconfig drbd on

Heartbeat
Heartbeat significa latido de corazn. Bsicamente lo que hace este programa es generar un
ping cada cierto tiempo, y si no hay repuesta levantar los servicios en el otro servidor. Esto significa
que los servidores maestro y esclavo van a a estar monitoreandose constantemente para saber si estan
en lnea o no. Necesitamos que los servicios de mysql, apache y asterisk no se levanten a menos que
Heartbeat lo haga.
chkconfig asterisk off

chkconfig mysqld off


chkconfig httpd off
service mysqld stop
service asterisk stop
service httpd stop
10. Los servicios requeridos no arrancan al inicar el sistema operativo

En la carpeta /etc/ha.d/ se manejan los archivos de configuracin. Necesitamos crear un archivo


llamado ha.cf en esta carpeta.
[root@elastix2 ha.d]# cat ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth1
auto_failback on
node elastix2.localdomain
node elastix1.localdomain
11. Archivo /etc/ha.d/ha.cf

Las dos ltimas lneas indican los nodos.


El siguiente archivo a crear es authkeys, este archivo maneja las llaves de conexin
[root@elastix2 ha.d]# cat authkeys
auth 1
1 sha1 MySecret
12. Archivo /etc/ha.d/authkeys

En el archivo haresources se debe poner la siguiente.

elastix2.localdomain drbddisk::r0 Filesystem::/dev/drbd0::/replica::ext3


IPaddr::192.168.0.30/24/eth0/192.168.0.255 mysqld asterisk httpd
13. Archivo /etc/ha.d/haresources

Pruebas
Estos archivos deben copiarse al servidor secundario tal como estn.
Ahora podemos verificar que nuestro servidor sirve ingresando a la direccin IP: 192.168.0.30.

14. Acceso al servidor Elastix por http://192.168.0.30

Desde ahi ya se pueden hacer pruebas apagando el servidor principal y volviendo a encenderlos.
Monitoreando los logs del servidor secundario, elastix1, se puede ver su comportamiento.
En el servidor primario podemos ver las interfaces IP, y que esta como primario y secundario.

15. Servidor Primario con DRBD y Heartbeat corriendo

Nuestro servidor secundario se debe ver de la siguiente forma

16. Servidor Secundario con DRBD y HeartBeat

Ahora vamos a apagar el servidor primario.

17. Apagando el servidor primario

Revisamos el servidor primario

18. Servidor secundario despus de levantar los servicios para convertirse en primario.

Hay que notarse que si esta caido el otro servidor, va a salir como Primary/Unknown.
En el siguiente grfico podemos ver que esta apagado nuestro servidor.

19. El servidor Elastix2 esta abajo en VirtualBox

Debemos revisar que podemos ingresar a las configuraciones por medio de un navegador a la
misma direccin IP, http://192.168.0.30.
Si encedemos de nuevo el servidor Elastix2, este va a volver a ser su servidor primario. Vemos
que el servidor secundario devuelve sus privilegios al servidor primario.

20. Servidor secundario cediendo sus privilegios como primario.

Resolviendo problemas
Con algunos equipos y aplicaciones hay algunos problemas ingresando directamente las
extensiones a la configuracin. La forma en la que se encontr solucin fue ingresando o registrando la
configuracin a la direccin IP del servidor que este funcionando. En nuestro caso, la opcin de Host,
se puso la direccin IP del servidor primario 192.168.0.32, en vez de la opcin por defecto
192.168.0.30. Despus de eso no habia problema si se cambiaba la configuracin a la direccin IP
192.168.0.30.

Conclusiones
Esta opcin de alta disponibilidad nos presenta una solucin muy buena, pero no es perfecta.
Se puede dar un servicio a pesar de que se caiga el servidor principal, pero si hay un problema con el
servidor en medio de una llamada se va a caer la llamada. Adems que se demora algunos segundos en
iniciar el servidor secundario.
El esquema de Maestro/Esclavo de alta disponibilidad tiene otra limitante, un servidor esclavo
desperdicia recursos porque nunca esta en uso a menos que se caiga el servidor primario. En un
verdadero cluster se podra poner un balanceador de carga en el cual se puede no solo distribuya la
carga entre los servidores, si no que se aprevecha los recursos de todos.

Recomendaciones
Para dar un mejor servicio podra separarse el servidor de mysql a otro equipo, de esta forma se
maneja alta disponibilidad de la base de datos y tambien se levantaria el servidor secundario mucho
ms rpido ya que la base de datos esta arriba.
Al instalar los paquetes extra hubo problemas en algunos casos en los cuales se deba instalar en
las dos instancias de elastix.
Puede haber problemas al actualizar Elastix a futuro debido a que pueden sobrescribirse los
links simblicos o softlinks con los archivos de actualizacin.

Bibliografa
1. Guevara, Daniel. Mayo 2, 2012. Building Elastix-2.3 High Availability Clusters with DRBD
and Heartbeat.

Adjuntos
Building Elastix-2.3 High Availability Clusters with DRBD and Heartbeat.

Potrebbero piacerti anche