Anda di halaman 1dari 13

Crear un Cluster de Elastix (PASO a PASO) -- Parte 1

Hola a tod@s,

En esta entrada voy a explicar como montar un servidor de alta disponibilidad de asterisk
(ELASTIX) con sus paneles web.

Para ello lo primero que haremos es montar 2 Elastix en dos maquinas que sern los dos
nodos de nuestro CLUSTER.

Podemos descargar la ISO de la pagina oficial de Elastix:

http://Elastix/2.3.0/Elastix-2.3.0-i386-bin-02Apr2012.iso/download


Una vez tengamos la ISO, la quemamos en un CD y la instalamos en 2 maquinas.Lo unico
que tendremos que tener en cuenta para las particiones es dejar un espacio libre donde
montaremos la particion de DRBD que balancear nuestra configuracin entre los nodos. Lo
demas, es poco ms que siguiente, siguiente...

En mi caso crear 3 particiones, la primera SWAP, la siguiente ser la raiz (/) y la tercera la
dejo libre sin particionar ni darle formato (esta es la que usar drbd)

La ventaja de instalar Asterisk a travs de un CD de Elastix es que este ya nos provee de
Sistema Operativo ( CENTOS) y muchisimas utilidades como fail2ban, a2billing, hyafax...

Ahora desde la shell hacemos un yum update para dejar las maquina actualizadas.

Una vez finalizado, ya tenemos preparadas las maquina para empezar con la configuracin.
PREPARACION INICIAL

Lo primero va a ser configurar las tarjetas de red. Vamos a necesitar 2, la primera ser la tarjeta
de LAN y estar configurada con una IP interna. Es importante que tengamos salida a Internet.

En la segunda IP pondremos una IP privada que hablar solo a travs de un cable RJ45 con la
otra ip de la segunda maquina.

Lo primero editaremos el fichero:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
IPADDR=192.168.10.11
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes


Y en la otra maquina pondremos:
DEVICE=eth0
IPADDR=192.168.10.12
IPV6INIT=yes
IPV6_AUTOCONF=yes
ONBOOT=yes


Como ya hemos comentado antes estas IPs son del rango de nuestra LAN y tienen salida a
Internet.

Ahora configuraremos las 2as tarjetas, encargadas de comunicarse entre ellas y replicar los
datos entre los dos nodos:

vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
IPADDR=10.0.0.1
ONBOOT=yes
Y
DEVICE=eth1
IPADDR=10.0.0.2
ONBOOT=yes
Esto es lo unico que necesitamos modificar en esos ficheros (EN LOS DOS NODOS).

En este momento ya podemos dar formato a la particin que habiamos reservado para el uso
del DRBD. En los dos nodos hacemos:


fdisk /dev/cciss/c0d0

Add a new partition(n)

Primary(p)

Apretamos t para cambiar el sistema de particion

Apretamos 3 para elegir el numero de particin (tenemos / y swap por
lo que es la 3)

Elegimos 83 (Linux)

Presionamos w para grabar


Notar que /dev/cciss/c0d0 es una unidad de disco en RAID (por hardware) si no teneis ningun
raid es probable que vuestra unidad sea /dev/sda

Ahora actualizamos la tabla de particiones:


partprobe /dev/cciss/c0d0


Y podemos comprobar que la particion ya ha sido creada:


[root@localhost ~]# cat /proc/partitions

major minor #blocks name



104 0 586029016 cciss/c0d0

104 1 307202931 cciss/c0d0p1

104 2 8193150 cciss/c0d0p2

104 3 270630990 cciss/c0d0p3


A continuacin le damos formato (a la nueva particin...)


[root@localhost ~]# mke2fs -j /dev/cciss/c0d0p3

mke2fs 1.39 (29-May-2006)

Etiqueta del sistema de ficheros=

Tipo de SO: Linux

Tamao del bloque=4096 (bitcora=2)

Tamao del fragmento=4096 (bitcora=2)

33832960 nodos i, 67657747 bloques

3382887 bloques (5.00%) reservados para el sper usuario

Primer bloque de datos=0

Maximum filesystem blocks=4294967296

2065 bloque de grupos

32768 bloques por grupo, 32768 fragmentos por grupo

16384 nodos i por grupo

Respaldo del sper bloque guardado en los bloques:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632,
2654208,

4096000, 7962624, 11239424, 20480000, 23887872



Mientras se escriban las tablas de nodos i: terminado

Creando el fichero de transacciones (32768 bloques): hecho

Escribiendo superbloques y la informacin contable del sistema de
ficheros: hecho



Este sistema de ficheros se revisar automticamente cada 34 meses o

180 dias, lo que suceda primero. Utilice tune2fs -c o -i para cambiarlo.

[root@localhost ~]#


Borramos la informacin contenida en esta nueva particin:


dd if=/dev/zero bs=1M count=1 of=/dev/cciss/c0d0p3; sync



Con esto ya hemos dejado preparadas las maquinas para la instalacin del software para
montar el servicio de alta disponibilidad. Ahora instalamos los paquetes necesarios en ambos
nodos.


yum install heartbeat drbd83 kmod-drbd83


Crear un Cluster de Elastix (PASO a PASO) -- Parte 2


Esto es una continuacin
de: http://tomasterisk.blogspot.com.es/2013_01_02_archive.html


CONFIGURACION DE DRBD

Bienvenidos a la segunda parte de la configuracin de un
cluster de Elastix.

En esta parte vamos a aprender a configurar DRBD que nos
permitir configurar una particin compartida entre los dos
nodos y autoreplicada por la red.

Lo primero que necesitaremos es especificar el nombre de los
dos nodos, as no necesitaremos aprendernos las IPs...

editamos el fichero /etc/hosts en las dos maquinas:


192.168.10.11 elastix.servidor

192.168.10.12 elastix.backup



Una vez realizado pasaremos a rellenar el fichero de
configuracin de drbd. En los dos nodos editamos el fichero
/etc/drbd.conf


nano /etc/drbd.conf

global { usage-count no; }

resource r0 {

protocol C;

startup { wfc-timeout 10; degr-wfc-timeout 30; }
disk { on-io-error detach; }
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 "nuestra_pass";
}

syncer { rate 100M; }
on voipserver.indigo {
device /dev/drbd0;
disk /dev/cciss/c0d0p3;
address 10.0.0.1:7788;
meta-disk internal;
}

on voipbackup.indigo {
device /dev/drbd0;
disk /dev/cciss/c0d0p3;
address 10.0.0.2:7788;
meta-disk internal;
}
}

Una vez configurado creamos el rea de meta-data (ANTES DE ARRANCAR
DRBD)

[root@voipbackup ~]# drbdadm create-md r0

Writing meta data...

initializing activity log

NOT initialized bitmap

New drbd meta data block successfully created.

[root@voipbackup ~]#

Arrancamos el servicio:

service drbd start

Starting DRBD resources: [ d(r0) s(r0) n(r0) ].

Si miramos que hace el proceso...

cat /proc/drbd

version: 8.3.13 (api:88/proto:86-96)

GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by
mockbuild@builder10.centos.org, 2012-05-07 11:56:36

0: cs:StandAlone ro:Secondary/Unknown ds:Inconsistent/DUnknown r---
-s

ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b
oos:270622692

Podemos ver que como solo hay activo un nodo su estado es
"standalone", en secundario y "inconsistent".

Configuramos en segundo nodo igual y lo arrancamos.

Una vez los dos nodos esten arrancados nos vamos al nodo principal
(elastix.server) y hacemos:

drbdadm -- --overwrite-data-of-peer primary r0


Con esto, lo establecemos como nodo primario y comenzar la
sincronizacin de los datos entre los dos nodos:


cat /proc/drbd

version: 8.3.13 (api:88/proto:86-96)

GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by
mockbuild@builder10.centos.org, 2012-05-07 11:56:36

0: cs:SyncSource ro:Secondary/Secondary ds:UpToDate/Inconsistent C r-
----

ns:9489664 nr:0 dw:0 dr:9489664 al:0 bm:579 lo:0 pe:1 ua:0 ap:0
ep:1 wo:b oos:261133156
[>....................] sync'ed: 3.6% (255012/264276)M
finish: 53:50:09 speed: 1,324 (1,280) K/sec


Dependiendo del tamao de la particin tardar ms o menos, asi que
... paciencia xD

(despues de un rato...)

Una vez sincronizado, ponemos el rol de primario en el server
principal y damos formato a la particin usada por el drbd:

[root@elastix ~]# drbdadm primary r0

[root@elastix ~]# mkfs.ext3 /dev/drbd0 ; mkdir /replica

Y finalmente montaremos esa unidad:



[root@elastix ~]# mount /dev/drbd0 /replica


Ahora nos ubicamos en el directorio /replica y almacenaremos todos los
ficheros de configuracin:

rbdadm -- --overwrite-data-of-peer primary r0

cd replica/

tar -zcvf etc-asterisk.tgz /etc/asterisk

tar -zxvf etc-asterisk.tgz

tar -zcvf var-lib-asterisk.tgz /var/lib/asterisk/

tar -xvfz var-lib-asterisk.tgz
tar -zxvf var-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 -zcvf var-www.tgz /var/www/
tar -zxvf var-www.tgz


Fijaros que lo que hemos hecho es comprimir los ficheros de
configuracin de asterisk (incluidos, buzones, logs, etc...) de mysql
y los portales web (ubicados en /var/www/)

Despues los descomprimimos RESPETANDO LA ESTRUCTURA DE DIRECTORIOS en
la carpeta /replica

Cuando ya tenemos los ficheros de configuracin montados en la particin
que se balancear podemos borrar los ficheros actuales:


rm -fr /etc/asterisk

rm -fr /var/lib/asterisk/

rm -fr /var/spool/asterisk/

rm -fr /var/lib/mysql/

rm -fr /var/log/asterisk/


Recordar que por si la habeis liado teneis una copia comprimida en
/replica

Finalmente haremos softlinks de los ficheros de configuracin hacia
donde estan ahora los ficheros:

ln -s /replica/etc/asterisk/ /etc/asterisk

ln -s /replica/var/lib/asterisk/ /var/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/



Con esto, en principio tenemos todos los ficheros necesarios para que
nos funcione la centralita correctamente.

Ahora nos tocara parar los servicios que gestionar heartbeat para el
cluster, en nuestro caso sern:

service mysqld stop

service asterisk stop

service httpd stop

Con esto tendremos todos los servicios parados, desmontamos la particin
de replica y pondremos al nodo en secundario:

umount /replica ; drbdadm secondary r0



Ahora nos vamos al nodo2 y crearemos el directorio donde montaremos la
particin usada por drbd:

En elastix.backup:

mkdir /replica

drbdadm primary r0

mount /dev/drbd0 /replica

Si todo ha ido correctamente podemos ver los ficheros de la config en
la particin haciendo un simple ls:



Ahora eliminaremos los ficheros de configuracin y los linkaremos hacia
la particin de replica (como hicimos en elastix.server):


rm -fr /etc/asterisk

rm -fr /var/lib/asterisk/

rm -fr /var/spool/asterisk/

rm -fr /var/lib/mysql/

rm -fr /var/log/asterisk/

---------------------------------------------------------------

ln -s /replica/etc/asterisk/ /etc/asterisk

ln -s /replica/var/lib/asterisk/ /var/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/



paramos los servicios en este nodo:

service mysqld stop

service asterisk stop

service httpd stop


Ahora desmontamos la particin y ponemos en secundario a elastix.backup:


umount /replica ; drbdadm secondary r0

Y volvemos al nodo1 (elastix.server)

drbdadm primary r0; mount /dev/drbd0 /replica


Con esto ya tenemos configurado el servicio DRBD y con este, los ficheros
de configuracin de nuestra futura centralita de alta disponibilidad.


Crear un Cluster de Elastix (PASO a PASO) -- Parte 3
Esto es una continuacin
de: http://tomasterisk.blogspot.com.es/2013_01_03_archive.html


En esta entrada final, configuraremos la ltima parte necesaria para
tener nuestra Elastix en alta-disponibilidad, y esto es, heartbeat.


CONFIGURACION DE HEARTBEAT




Lo primero que deberemos hacer es quitar los servicios en el arranque
del sistema, porque ser heartbeat quien los gestione. Para ello
hacemos:

chkconfig asterisk off
chkconfig mysqld off
chkconfig httpd off

Es IMPORTANTISIMO hacer esto en los dos nodos, sino nos pasar que
heartbeat no podr levantar los servicios y ningn nodo se establecer
como primario (y no cargar los recursos)

creamos (o modificamos) el fichero se configuracin de heartbeat

[root@voipserver ~]# cat /etc/ha.d/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 elastix.server
node elastix.backup

Como se puede apreciar el fichero es bastante sencillo.

Crearemos tambin un fichero de claves autorizadas:

nano /etc/ha.d/authkeys

auth 1

1 sha1 nuestra_pass

Cambiamos los permisos del fichero authkeys

chmod 600 /etc/ha.d/authkeys



Y editamos el fichero de recursos de hearbeat. Cuidado que es solo una
lnea y el formato es IMPORTANTE.

nano /etc/ha.d/haresources

voipserver.indigo drbddisk::r0 Filesystem::/dev/drbd0::/replica::ext3
IPaddr::192.168.10.10 mysqld asterisk httpd


Fijaros que la IP virtual del cluster ser: 192.168.10.10 y es donde
deberemos apuntar siempre para acceder a la centralita.


Una vez creados los ficheros de configuracin ya podemos levantar el
servicio de heartbeat:

service heartbeat start

Y lo aadimos para que se arranque al iniciar el sistema:

chkconfig add heartbeat

Ahora debemos replicar los ficheros de configuracin al otro nodo:

scp /etc/ha.d/ha.cf /etc/ha.d/authkeys
/etc/ha.d/haresourcesroot@elastix.backup:/etc/ha.d

Y lo aadimos para que se arranque al iniciar el sistemaen el nodo2:

chkconfig add heartbeat


IMPORTANTE: Recordar quitar del arranque los servicios que gestionar
heartbeat en el nodo 2!!






NOTAS FINALES

Ahora ya est todo configurado, podemos crear a travs de los paneles
de configuracin de Elastix las extensiones, trunks, etc etc apuntando
a la IP virtual.
Podemos comprobar que todo funciona OK parando heartbeat en el nodo
principal y comprobar que el nodo secundario toma el mando.

Tambin veremos que los ficheros de configuracin se han replicado
correctamente.

TODOS los cambios realizados deben hacerse a travs del panel Web. Y
por ltimo NO ACTUALIZAR la Elastix porque se descartaran todos los
cambios del cluster y los links a la particin /replica.

Anda mungkin juga menyukai