Top Banner
Cluster Redundante de la Suite Asterisk IP PBX con DRBD y Heartbeat Tópico 1 CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II 1 LVM
37

1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Dec 31, 2015

Download

Documents

Yovxy Ma
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

1

LVM

Page 2: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

IntroducciónA lo largo de este tópico avanzado estaremos desarrollando el tema de instalación, configuración y despliegue de una

solución de Cluster Redundante Failover de dos Nodos, Primario y Secundario, para una Suite Asterisk IP PBX. El objetivo es

que tengamos las herramientas para desplegar una solución de Asterisk de Alta Disponibilidad. Lo que vamos a hacer es

instalar Dos (02) Nodos con exactamente con el mismo Sistema Operativo y la misma Arquitectura de Hardware. Uno de ellos

va a ser configurado como Nodo Principal o Primario y el otro como Nodo de Respaldo o Secundario.

La idea es sencilla: si ambos Nodos se encuentran Activos, solo el Nodo Primario estará configurado con la IP del

Sistema y es el que tendrá arriba los servicios, en este caso Asterisk, y el Nodo Secundario funcionara como Backup. Si el

Nodo Primario falla, entonces el Nodo Secundario entrara en operación y se levantan los servicios y la IP del Sistema. Es

claro, que en ambos nodos debemos instalar y configurar la Suite Asterisk y los demás servicios que vamos a utilizar.

Como soporte de la Plataforma, haremos uso de dos aplicaciones fundamentales: DRBD y Heartbeat. DRBD es la

herramienta encargada de hacer la replicación del sistema de archivos y las particiones entre los nodos. Heartbeat es la

aplicación encargada de hacer la conmutación de los servicios y la IP de un nodo al otro cuando ocurre una falla y/o una

restauración. Como soporte para las particiones, haremos uso de Particiones basadas en Volúmenes Lógicos LVM y

utilizaremos formato ‘ext3’ para dichos volúmenes.

Para el despliegue de los Dos Nodos del Cluster Redundante, haremos uso de una Plataforma de Virtualizacion basada

en VMWARE bajo Windows XP. Con VMWARE vamos a crear las Maquinas Virtuales con Debian GNU/Linux. A cada

Maquina Virtual le vamos a configurar dos unidades de disco SCSI de 100GB c/u, uno para el Sistema Operativo y otro para la

Data y los Servicios.

2

Page 3: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Distributed Replicated Block Device (DRBD)

1.- Introducción y Aspectos Generales de DRBDDRBD es una herramienta de software que se usa para almacenamiento distribuido y replicado (mirroning replicated storage)

de particiones, unidades de discos y/o unidades lógicas de almacenamiento, entre servidores. Las características de DRBD son:

'Real Time': la replicación es continua, mientras las aplicaciones escriben, borran, modifican o actualizan datos.

'Transparently': las aplicaciones gestionan los datos como si estuvieran directamente en una unidad logica, particion o

directorio del disco.

'Synchronously or Asynchronously Mirroning': con 'synchronous mirroning' un proceso de escritura termina solo cuando

en ambos servidores se ha completado la escritura y con 'asynchronous mirroning' el proceso de escritura termina cuando en el

servidor local se ha terminado la escritura y antes de que la escritura se progague al 'peer system'.

DRBD es la solución ideal para sistemas de 'High Availability' con esquemas de Redundancia HSB o de tipo 'Fail Over 1+1'.

DRBD es un sistema de Clustering en modo 'Active/Active' para particiones, con soporte para File System de tipo 'ext3' o

XFS. DRBD es una aplicación basada en 'Linux Kernel Module'. Es decir, requiere de un condicionamiento especial del Kernel

de Linux. DRBD se convierte fundamentalmente en el driver de la unidad virtual de almacenamiento. Por ello es que DRBD es

muy flexible y versátil.

3

Page 4: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Herramientas de Administración de DRBDDRBD dispone de una serie de herramientas de administración del sistema para controlar y accesar directamente a las

configuraciones del modulo del kernel DRBD a fin de gestionar la administración de los recursos. A continuación, se describen

esas herramientas:

La Herramienta 'drbdadm'. Es la herramienta 'high-level' de la suite DRBD. Esta herramienta obtiene los parámetros de

configuración de DRBD del archivo '/etc/drbd.conf' y actúa como un 'front-end' para las demás herramientas y para la

ejecución directas de comandos de administración del sistema. La herramienta drbdadm, si se ejecuta con la opción '-d'

muestra las diferentes opciones de comando para la administración del sistema.

La Herramienta 'drbdsetup'. Es la herramienta que permite al administrador de Linux configurar el modulo DRBD que se

va a cargar en el Kernel. Es una herramienta 'low-level' que permite manipular manualmente los parámetros de configuración

del modulo DRBD.

La Herramienta 'drbdmeta'. Esta, es la herramienta que permite al administrador create, dump, restore and modify DRBD

meta Data Structures.

4

Page 5: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

RecursosEn DRBD cuando mencionamos el término 'resource' hacemos referencia a todos los aspectos de un dispositivo de

almacenamiento replicado. Esto incluye:

Resource Name:

Arbitrario, lo importante es que no contenga espacios.

DRBD Device:

'Virtual Block Device' gestionado por DRBD. Se referencia con '/dev/drbdm', donde m es el numero del dispositivo.

Disk Configuration:

Es la copia local de la Data, y el uso interno de la Meta Data.

Network Configuration:

Aspectos de comunicación del DRBD.

5

Page 6: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Resource RolesEn DRBD, cada 'resource' tiene un 'role'. El 'role' del recurso puede ser Primary or Secondary. En DRBD no utilizamos la

terminología Active/Passive, el cual es mas bien un termino referido a la disponibilidad (Availability) del storage. En un

sistema Active/Passive solo uno de los dos sistemas esta Activo, y este no es el caso de DRBD. En DRBD entonces utilizamos

la terminología Primary and Secundary para referirnos a los dispositivos distribuidos de almacenamiento, y con ello significar

que ambos dispositivos están en Modo Mirroning y siempre ambos Activos.

El Dispositivo DRBD en 'Primary Role' es el dispositivo principal para Operaciones de Read y Write, es el que se usa para

Montar el File System.

El Dispositivo DRBD en 'Secondary Role' recive todos los Updates del 'Peer Device'. Este dispositivo tiene by default

deshabilitado el Acceso y no puede ser utilizado por las aplicaciones, ni para Read ni para Write. Es decir, el DRBD en

'secondary Role' solo actúa como 'Read Only Access' a find e mantener la 'Cache Coherency.

El Role de los recursos de DRBD puede ser cambiado Manualmente o por un 'Cluster Management Application'. Nos

referimos al cambio del Role de un recurso como una 'promotion' y la operacion reversa se denomina 'demotion'.

6

Page 7: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.- Instalación de DRBD en Debian GNU/Linux

2.1.- Instalación de los 'Pre-Builds' de DRBD

2.1.1.- Instalación de 'Pre-Builds' de DRBD descargados de LINBITLINBIT es la compañía Sponsor del Proyecto DRBD. En el Web Link "http://www.linbit.com/support" se pueden descargar

los paquetes necesarios para DRBD. Allí, podemos descargar los Builds para RHEL, SLES, Debian y Ubuntu Server. En

nuestro caso, estamos interesados en los Builds para Debian. Necesitamos entonces descargar los paquetes:

drbd8-utils

drbd8-module

Luego de descargar los Builds (*.deb) los instalamos con los comandos 'dpkg -i' o 'gdebi'. Un aspecto importante del acceso al

Web Link de LinBit es que tenemos que registrarnos para poder descargar archivos (Username: jgcotua, Password: 123xyz).

Luego hacer el Login, podemos tener acceso a los Archivos *.deb, para Debian Squeeze, en el siguiente Link:

http://www.linbit.com/support/drbd-8.4.1/debian-squeeze/

2.1.2.- Instalación de 'Pre-Builds' de DRBD usando 'apt-get'Lo que hacemos es utilizar la herramienta 'apt-get' para instalar los paquetes de Debian necesarios para DRBD, utilizando los

repositorios oficiales de Debian. A continuación, los comandos:

apt-get updateapt-get install drbd-utils drbd8-utils drbdlinksapt-get install build-essential module-assistant

7

Page 8: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.- Instalación de DRBD vía Compilación

2.2.1.- Descarga del Código Fuente de DRBDA la fecha de escribir este documento, la versión más reciente de DRBD es la v8.4.1. Podemos descargar el Código Fuente

directamente del Link 'http://oss.linbit.com/drbd/' seleccionando el archivo *.tar.gz correspondiente a la versión que deseamos

utilizar. Es recomendable hacer la descarga y la descompresión en el directorio '/usr/src/' o en '/usr/local/src/'. A continuación,

los comandos para la descarga y la descompresión:

cd /usr/src/drbdVersion="8.4.1"rm -rf drbd-${drbdVersion}.tar.gz > /dev/null 2>&2rm -rf drb -${drbdVersion} > /dev/null 2>&2wget http://oss.linbit.com/drbd/8.4/drbd-${drbdVersion}.tar.gztar xvzf drbd-${drbdVersion}.tar.gzln -s /usr/src/drbd-${drbdVersion} /usr/src/drbdls -la

Luego de descomprimir, se va a crear el directorio ‘/usr/src/drbd-8.4.1/’.

8

Page 9: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.2.- Compilación de DRBD

2.2.2.1.- Pre-RequisitosPara poder compilar exitosamente a DRBD necesitamos tener instalado en nuestro Linux los siguientes paquetes: make, gcc,

glibc (development) y flex. Es importante incluso chequear que el gcc utilizado para compilar nuestro DRBD sea el mismo que

se utilizo para la compilación del Kernel. También, requerimos el paquete autoconf. Por otro lado también necesitamos las

librerías del Kernel: kernel-headers y linux-headers. A continuación, los comandos para la instalación de estos paquetes en

Debian:

apt-get install make makedev autoconf cmake cmake-dbg cmake-data glibc-2.11-1 flex apt-get install kernel-package linux-kernel-headers

2.2.2.2.- Preparando el KernelLo que debemos hacer es crear un enlace simbólico '/usr/src/linux' al directorio 'kernel sources', el cual típicamente es el

directorio '/usr/src/linux-version'. A continuación, los comandos:

cd /usr/srckernelVersion="2.6.32-5-686"ln -s /usr/src/linux-headers-2.6.32-5-686 /usr/src/linuxcd /usr/src/linuxmake mrproperzcat /proc/config.gz > .configmake cloneconfigcp /boot/config-$(uname -r) .configcp .config /root/.config-backup

9

Page 10: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.2.3.- Compilando DRBDA continuación, los comandos:

cd /usr/src/drbd./configure --help./configure

Cuando ejecutamos el script 'configure', este crea un archivo de registro llamado 'config.log' en el mismo directorio donde la

ejecución del script es invocada.

Ahora, lo que hacemos es Compilar e Instalar a DRBD:

makemake installls -la /sbin/drbd*

Con el último comando, se crean las siguientes herramientas en el directorio ‘/sbin/’:

• drbdadm

• drbdsetup

• drbdmeta

10

Page 11: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.2.4.- Compilando DRBD como un Modulo del KernelPara compilar a DRBD como un Modulo del Kernel, debimos haber ejecutado el script de configuración

'/usr/src/drbd/configure' con la opción '--with-km', la cual esta deshabilitada por defecto.

Para compilar a DRBD para la Versión Actual del Kernel que se está utilizando, hacemos:

cd /usr/src/drbdmake clean all

Con esta opción, la compilación de DRBD se hará haciendo Match con la Versión Actual del Kernel que esta corriendo en

nuestro Linux. Recordemos que los módulos del Kernel actual están accesibles en el directorio '/lib/modules/`uname -r`/build'.

Si queremos compilar a DRBD contra otra versión de Kernel, lo que hacemos es utilizar la opcion KDIR, de la siguiente

forma:

cd /usr/src/drbdmake cleanmake KDIR=/path/to/kernel/source

11

Page 12: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Por otro lado, también es posible explicitar el compilador que queremos utilizar, haciendo uso de la Variable CC, de la

siguiente forma:

cd /usr/src/drbdmake cleanmake CC=gcc32

Finalmente, para chequear que la compilación de hizo satisfactoriamente lo que hacemos es verificar que el archivo de modulo

'drbd.ko' se encuentra ubicado en el directorio /usr/src/drbd. Podemos correr el siguiente comando:

/sbin/modinfo drbd.ko

12

Page 13: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.3.- Instalando DRBD como un Paquete DebianPara ello, necesitamos tener instalado en nuestro Debian Linux los siguientes paquetes: dpkg-dev, fakeroot. El paquete

fakeroot, lo necesitamos si vamos a compilar a DRBD como un non-root user, lo cual se recomienda ampliamente.

(Continuar...)

13

Page 14: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.- Configuración de DRBD (Post-Instalación)

3.1.- Secciones Lógicas de AlmacenamientoUna vez que hemos culminado exitosamente la compilación e instalación de DRBD debemos establecer dos secciones lógicas

de almacenamiento del mismo tamaño, una en cada nodo del Cluster DRBD (Primary and Secondary). A estas secciones

lógicas de almacenamiento es a lo que le llamaremos 'lower-level device' en nuestro DRBD Resource.

Podemos utilizar cualquier tipo de unidad de almacenamiento, como:

Un Disco Duro en su totalidad

Una Partición de un Disco Duro

Un Dispositivo RAID

Un Volumen Lógico LVM

Un Volumen EVMS

Cualquier tipo de Dispositivo de Almacenamiento

Un aspecto importante es que NO ES NECESARIO que las secciones lógicas de almacenamiento estén vacías entes de crear el

DRBD Resource. De hecho, podemos perfectamente pasar de un sistema 'non-redundant single-server' a un sistema DRBD.

Para fines de esta guia, asumiremos que ambos nodos disponen de una Partición Vacía llamada /dev/sda7.

14

Page 15: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.2.- Preparación de la Conexión de Red para la Replicación DRBD

Es altamente recomendado que la Replicación DRBD se haga sobre una Conexión Gigabit Ethernet Dedicada y en

Modo Back-to-Back, es decir; con un Cable Ethernet Cross-Over entre ambos nodos. No se recomienda la Replicación DRBD

vía enrutamiento, ni vía wireless, incluso ni siquiera vía Switching. Si se va a hacer la Replicación DRBD vía Switching, se

recomienda el uso de elementos redundantes de enlace, como Linux Bonding en Modo Active-Backup.

La Replicación DRBD se hace usando Conexiones TCP con el rango de Puertos del 7788 al 7799. La Replicación

DRBD de cada Resurso usa Dos (02) Conexiones, una en cada sentido entre los nodos del Cluster Redundante. Porsupuesto,

debemos asegurarnos que el Puerto TCP que usa la Replicación DRBD no esté siendo utilizado por cualquier otra aplicación

en nuestro Linux. No es posible que la Replicación DRBD de un Recurso utilice más de una Conexión TCP, por tanto si

queremos redundancia de Red a nivel de la Replicación DRBD debemos hacerla a nivel de Capa 2.

Como buena práctica para servidores GNU/Linux con interfaces Wan y Lan, se recomienda entonces una Tercera

Interface, la cual será dedicada exclusivamente para el Trafico TCP/IP correspondiente a la Replicación DRBD. Si en servidor

trabaja en un ambiente de Red Lan solamente bastaría solo con una segunda Interface de Red adicional para la Replicación

DRBD. Podemos incluso, hacer uso de Tarjetas PCI/PCIe las cuales vienen en un Bundle de 4 Puertos Gigabit Ethernet en un

solo Slot PCI o PCI Express. También, se recomienda que la asignación IPv4 de las Interfaces de Red para la Replicación

DRBD sea de forma Estática y hacer uso de una Familia IPv4 con Mascara de Red 255.255.255.252 (/30). Es decir, una

configuración de Red Punto a Punto IPv4 entre ambos nodos del Cluster Redundante.

15

Page 16: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.3.- Configuración de los Recursos de DRBDEl funcionamiento de DRBD está controlado por un Archivo de Configuración Único, el archivo /etc/drbd.conf. El

archivo código fuente TAR.GZ de DRBD contiene una copia de ejemplo del drbd.conf en el subdirectorio scripts. Luego de la

instalación de DRBD, podemos encontrar también ejemplos de drbd.conf en el directorio /etc o en el directorio de

documentación /usr/share/doc/packages/drbd. El archivo de configuración drbd.conf DEBE ser exactamente idéntico en todos

los nodos que participan en el cluster.

Archivo de Configuración de DRBD (/etc/drbd.conf)

/etc/drbd.conf (with include statements) /etc/drbd.conf (flat configuration file)include "/etc/drbd.d/global_common.conf";

include "/etc/drbd.d/*.res";

global {

usage-count no;

}

common {

protocol C;

}

resource kPBX {

device /dev/drbd1;

disk /dev/sda7;

meta-disk internal;

on primary {

address 10.0.1.1:7789;

}

on secondary {

address 10.0.1.2:7789;

}

}

16

Page 17: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

La sección 'global' es permitida solo una vez en el archivo de configuración. Normalmente, colocamos esta sección el

archivo '/etc/drbd.d/global_common.conf', al igual que la sección 'common'. Por ahora, el único parámetro que hemos

colocado en esta sección es el 'usage-count', el cual se ha colocado en 'no' para deshabilitar el envió de información de

estadísticas a los servidores del Proyecto DRBD. El parámetro 'usage-count' puede tener los siguientes valores: yes, no y ask

(valor por defecto).

La sección 'common' contiene parámetros de configuración aplicables a todos los Recursos. Se pueden definir

parámetros de configuración particulares para cada Recurso o bien definirlos en la sección 'common' y son aplicables a todos

los recursos por igual. Por ahora, en esta sección solo hemos definido el parámetro de configuración 'protocol C', el cual

especifica que la Replicación DRBD es Síncrona.

Finalmente, hemos definido un recurso, al cual le hemos llamado 'kPBX', el cual usa a /dev/sda7' como low-level

device y está configurado como 'internal meta data' y usa Conexiones TCP con el Puerto 7789 en las direcciones IP 10.0.1.1 y

10.0.1.2 para los Nodos del Cluster.

17

Page 18: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Elaboración de las Prácticas

Creación de Cluster Redundante con DRBD y

Heartbeat

Uso del Cluster para Servidor

Asterisk IP PBX

18

Page 19: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

1.- Preparación del Entorno de Particiones LVMPara el entorno vamos a usar Particiones LVM como unidades de almacenamiento para DRBD. Vamos a montar un

sistema de cluster redundante de dos nodos basado en DRBD y Heartbeat. Vamos a asumir que en cada nodo disponemos de un

Disco Duro SCSI de 100GB, adicional a Disco Duro para el Sistema Operativo y las Particiones del Sistema, para que pueda

ser usado como Volumen Físico para las Particiones LVM. Asumamos entonces que /dev/sda es el dispositivo correspondiente

al Disco Duro del SO y que /dev/sdb es la Unidad de Disco dispuesto para LVM.

A continuación el procedimiento paso a paso para la creación de las Particiones LVM. El Volumen Físico es /dev/sdb,

el Volumen Virtual lo llamaremos kkpbx. Con respecto a los Volúmenes Lógicos, vamos a crear dos: uno para el Bloque de

Replicación DRBD de 80GB, al cual llamaremos kkpbx, y otro para ser usado como Meta-Disk Externo de 8GB, al cual

llamaremos kkpbx-meta. Las Particiones LVM serán formateadas con ‘ext3’.

Las Especificaciones del Entorno LVM son las siguientes:

• Volumen Físico (Phy de PV): /dev/sdb (con una Capacidad de 100GB)

• Volumen Virtual (VG): kkpbx

• Volúmenes Lógicos: kkpbx (80GB) y kkpbx-meta (8GB)

• Formato de los Volúmenes Lógicos: ext3

• Nombre del Dispositivo DRBD: /devdrbd1

• Punto de Montaje de la Partición DRBD: /mnt/vfs

19

Page 20: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

1.1.- Creación del Volumen FísicoUnidad de Disco: /dev/sdb

Comandos:

pvcreate /dev/sdbpvdisplay

1.2.- Creación del Volumen VirtualNombre del Volumen Físico: /dev/sdb

Nombre del Volumen Virtual: kkpbx

Comandos:

vgcreate kkpbx /dev/sdbvgdisplay

1.3.- Creación del Volumen LógicoNombre del Volumen Virtual: kkpbx

Nombre de los Volúmenes Lógicos: kkpbx y kkpbx-meta

Tamaño de los Volúmenes Lógicos: 80GB y 8GB

Comandos:

lvcreate -L 80G -n kkpbx kkpbxlvcreate -L 8G -n kkpbx-meta kkpbxlvdisplay

Los Volúmenes Lógicos quedan referenciados como /dev/kkpbx/kkpbx y /dev/kkpbx/kkpbx-meta, respectivamente.

20

Page 21: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Nótese que la notación es de la forma /dev/vgname/lvname, donde vgname es el Nombre del Volumen Virtual y

lvname es el Nombre del Volumen Lógico LVM.

1.4.- Formatear la Partición LVMAhora, debemos formatear las Particiones LVM que ya hemos creado. Vamos a formatearla con el formato ‘ext3’.

Nombre de las Particiones LVM: /dev/kkpbx/kkpbx y /dev/kkpbx/kkpbx-meta

Formato: ext3

Comandos:

mkfs -t ext3 -m 1 -v /dev/kkpbx/kkpbxmkfs -t ext3 -m 1 -v /dev/kkpbx/kkpbx-meta

1.5.- Montar la Partición LVMLa idea aquí es ver los comandos para un eventual montaje de las Particiones LVM que se han creado y formateado.

Nombre de la Particiones LVM: /dev/kkpbx/kkpbx y /dev/kkpbx/kkpbx-meta

Directorio de Montaje: /mnt/vfs

Comandos:

mkdir /mnt/vfsmount -t ext3 /dev/kkpbx/kkpbx /mnt/vfs

Sin embargo, realmente estas Particiones LVM no las vamos a montar, ya que van a ser usadas por DRBD. Montaremos

posteriormente, es el dispositivo DRBD creado.

21

Page 22: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

1.6.- Edición del Archivo ‘/etc/fstab’A carácter de información solamente, si quisiéramos que una Partición LVM se monte automáticamente, lo que

hacemos es editar el archivo ‘/etc/fstab’ y a colocarle una línea para que de forma automática se monte la Partición

LVM en el directorio ‘/mnt/vfs’.

La línea que se va a insertar, seria:

/dev/kkpbx/kkpbx /mnt/vfs ext3 rw 0 0

Finalmente, podemos ejecutar el siguiente comando para ver la información lógica y de tamaño de las particiones del

sistema:

df -h

22

Page 23: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.- Montaje de DRBD sobre la Partición LVMToda vez que hemos creado y configurado las Particiones LVM en los Nodos Primario y Secundario de nuestro Cluster

Redundante, debemos proceder a configurar DRBD para que dichas particiones comiencen a sincronizarse. En ambos nodos, la

Partición LVM del Bloque DRBD se llama ‘/dev/kkpbx/kkpbx’, y la Partición para el Meta-Disk es /dev/kkpbx/kkpbx-meta.

Es importante notar que en ambos nodos, la Partición LVM para el Bloque DRBD DEBEN ser exactamente del mismo

Tamaño. Debemos tener la IPv4 del Nodo Primario y del Nodo Secundario. Asumamos que el Nodo Primario es 10.0.1.21 y

que el Nodo Secundario es 10.0.1.22.

Procedemos entonces a configurar el archivo ‘/etc/drbd.conf’ de la siguiente forma:

global { usage-count no;}common { protocol C;

syncer { rate 10M; }}resource kPBX { device /dev/drbd1;

disk /dev/kkpbx/kkpbx; meta-disk /dev/kkpbx/kkpbx-meta [11]; on kPBXPRI { address 10.0.1.21:7789; }

on kPBXSEC { address 10.0.1.22:7789; }}

23

Page 24: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Es importante que en ambos nodos el archivo ‘/etc/drbd.conf’ sea configurado exactamente igual. Lo que hay que estar

pendiente es de las direcciones IP y los puertos TCP asignados al Nodo Primario y al Nodo Secundario. El Nombre del

Recurso DRBD es ‘kPBX’ y el Nombre del Bloque DRBD es ‘/dev/drbd1’. En ambos Nodos la Sección Lógica de

Almacenamiento DRBD es ‘/dev/kkpbx/kkpbx’ y el Meta-Disk es ‘/dev/kkpbx/kkpbx-meta. Igualmente, en ambos Nodos el

Puerto TCP para la Replicación DRBD es 7789.

Otro aspecto muy importante es el Nombre de los Nodos configurado en ‘/etc/drbd.conf’: kPBXPRI y kPBXSEC. Es

muy importante que en cada Nodo el Hostname (/etc/hostname) y /etc/hosts) sean respectivamente kPBXPRI y kPBXSEC.

Podemos editar el ‘/etc/hosts’ en cada nodo y hacer las configuraciones respectivas.

24

Page 25: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.1.- Creación de la Partición Virtual DRBDToda vez instalado y configurado nuestro DRBD, lo que sigue es la creación de las Particiones Virtuales DRBD, una

para cada Recurso que hayamos definido. En nuestro caso, solo hemos definido un Recurso DRBD al cual hemos denominado

kPBX. La Partición Virtual queda referenciada como /dev/drbd1, tal y como se definió en el archivo de configuración

‘/etc/drbd.conf’. Para la creación de la Partición Virtual DRBD usamos el comando ‘drbdadm’, de la siguiente manera:

drbdadm create-md kPBX

Al ejecutar este comando se crean automáticamente los Bloques DRBD y el Bloque DRBD de la Mata Data. El Bloque DRBD

‘/dev/drbd1’ queda creado y listo para comenzar a trabajar con él. En cada Nodo del Cluster DRBD debemos crear los

Bloques DRBD.

Luego de crear los Bloques DRBD, procedemos a iniciar el Servicio DRBD en ambos servidores, de la siguiente forma:

/etc/init.d/drbd Start

Podemos correr el comando ‘cat /proc/drbd’ para ver que aun no se están sincronizando los Bloques DRBD. Esto, lo sabemos

al ver ‘ds: Inconsistent/Inconsistent …’ al ejecutar ‘cat /proc/drbd’.

25

Page 26: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.- Inicio de la Sincronización/Replicación DRBDLuego de Crear las Particiones Virtuales DRBD (Bloques DRBD), debemos decirle a DRBD que comience con la

sincronización de los bloques. Primero, debemos marcar a uno de los Nodos como Primario, el Nodo kPBXPRI, de la siguiente

forma:

drbdadm -- --overwrite-data-of-peer primary all

Por otro lado, debemos marcar a kPBXSEC como Secundario, de la siguiente forma:

drbdadm secondary all

En este mismo momento, el Nodo Secundario comenzara a sincronizar los datos. Lo podemos observar corriendo el

comando ‘cat /proc/drbd’ y ver ‘cs:SyncTarget ro:Secondary/Primary …’. Una vez que aparezca

‘ds:UpToDate/UpToDate’ indica que los Bloques DRBD están Sincronizados.

En todo momento, en cualquiera de los Nodos podemos determinar el ‘rol’ de un Nodo ejecutando el siguiente

comando:

drbdadm role kPBX

En cada uno de los Nodos veremos ‘Primary/Secondary’ si es Primario y ‘Secondary/Primary’ si es Secundario.

26

Page 27: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.- Configuracion Adicional DRBD solo en el Nodo PrimarioFinalmente, solo en el Nodo Primario, nos falta Formatear la Nueva Partición Virtual DRBD (/dev/drbd1). Usaremos

‘ext3’ como formato para esta partición. Luego de formatearla, tenemos que Montarla para que sea accesible en el Nodo

Primario. A continuación, los comandos:

mkfs.ext3 /dev/drbd1mkdir /mnt/vfsmount -t ext4 /dev/drbd1 /mnt/vfsmount

Es muy importante destacar que por defecto, DRBD NO PERMITE montar las Particiones DRBD simultáneamente en el Nodo

Primario y en el Nodo Secundario. El montaje se hace solamente en el Nodo Primario. De hecho, eso es exactamente lo que

queremos, ya que el sistema que estamos montando es un Cluster de tipo Failover, en el cual desde el punto de vista de los

servicios y los datos, solo queremos leer a uno de los nodos a la vez.

27

Page 28: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.- Pruebas de Funcionamiento de DRBD

3.1.- Prueba de Funcionamiento de la Replicación DRBD

Una vez que en el Nodo Primario hayamos montado la Partición DRBD /dev/drbd1 en /mnt/vfs, lo que podemos hacer

es copiar o crear algunos directorios o archivos en /mnt/vfs y vemos si realmente se está haciendo la Replicación DRBD.

En el Nodo Primario:

• Creamos unos Archivos y Directorios de Prueba en la Partición DRBD

cd /mnt/vfsmkdir dir1cc dir1touch archivo.textecho “Hola” > archivo.text

• Desmontamos la Partición DRBD y hacemos que el Primario pase a ser Secundario

umount /mnt/vfsdrbdadm secondary kPBXdrbdadm role kPBX

Deberíamos ver ‘Secondary/Secondary’ en el Nodo Primario.

28

Page 29: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

En el Nodo Secundario:

• Hacemos que el Nodo Secundario pase a ser Primario y Montamos la Partición DRBD. Luego de montarla, vemos que

los archivos y directorios están presentes:

drbdadm primary kPBXmkdir /mnt/vfsmount -t ext3 /dev/drbd1 /mnt/vfsls -la /mnt/vfs

En este momento lo que hemos hecho, a manera de comprobación de funcionamiento de la Replicación DRBD, es que

hemos Promovido el Nodo Primario como Secundario y el Secundario como Primario. Esto, a fin de chequear que la

Replicación DRBD funciona perfectamente.

29

Page 30: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.2.- Prueba de Replicación DRBD Inversa y Restauración

Ahora, vamos a evaluar lo que sucede al dejar apagado el Nodo Primario, que hemos de momento puesto como

Secundario, y al copiar y crear nuevos archivos y directorios en el Nodo que ahora tenemos como Primario. Esto, sería lo que

sucede si tenemos un Failover en el Cluster Redundante, al caerse el Nodo Primario, y se levantan los servicios en el Nodo

Secundario.

Lo que hacemos entonces es dejar el Nodo Primario apagado y copiamos y/o creamos algunos archivos y directorios en

el Nodo Secundario (que de momento esta como Primario). Viendo la salida del comando ‘cat /proc/drbd’ observamos que el

Cluster deja de estar sincronizado. Procedemos a encender el Nodo Primario kPBXPRI y observamos que comienza de nuevo

la Replicación DRBD de kPBXSEC a kPBXPRI, hasta que se sincronicen completamente.

Seguidamente, procedemos a apagar el Nodo kPBXSEC, que hasta los momentos producto del Failover hemos

colocado como primario. Lo apagamos a fuerza bruta, sin desmontar siquiera la Partición DRBD. Vamos al kPBXPRI y

observamos que se pierde la sincronización en el kPBXPRI. Lo que hacemos es volver a colocar a kPBXPRI como Primario,

con el comando ‘drbdadm primary kPBX’ y montamos nuevamente la Partición DRBD con el comando ‘mount -t ext3

/dev/drbd1 /mnt/vfs’. A este punto, hemos restaurado el Cluster. Es decir, kPBXPRI ha vuelto a ser Primario y kPBXSEC ha

vuelto a ser el Secundario. Al volver a encender el kPBXSEC, arrancara en ‘rol’ de Secundario y procederá a sincronizarse.

30

Page 31: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Parte II

Instalación, Configuracion y Pruebas de Heartbeat1.- Instalación de Heartbeat

En los repositorios de Debian disponemos del paquete ‘heartbeat’. Por tanto, en este caso no usaremos la instalación

vía compilación, sino que utilizaremos aptitude o apt-get para instalar el paquete en forma automatizada. A

continuación, los comandos:

apt-get install heartbeat

Cuando apt-get culmina la instalación de heartbeat, probablemente nos indique que no ha conseguido el archivo

/etc/ha.d/ha.cf y de una falla en el arranque de heartbeat. Esto es normal, ya que todavía no hemos configurado a

heartbeat y es lo que en lo inmediato vamos a hacer.

2.- Configuracion de Heartbeat

Heartbeat tiene tres (03) archivos de configuración, los cuales están ubicados en el directorio /etc/ha.d/. En este

directorio, también vamos a encontrar el README de heartbeat, el cual por supuesto se recomienda leerlo. Los tres

archivos de configuración de heartbeat son los siguientes:

ha.cf Archivo de Configuracion Principal de Heartbeatharesources Archivo de Configuracion de Recursos de Heartbeatauthkeys Información de Autenticación para Heartbeat

31

Page 32: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

Muestras de estos archivos de configuración de heartbeat se encuentran en el directorio /usr/share/doc/heartbeat. Lo

que hacemos entonces es copiarlos y descomprimirlos en /etc/ha.d/, a continuación los comandos:

cp /usr/share/doc/heartbeat/ha.cf.gz /etc/ha.d/cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/cp /usr/share/doc/heartbeat/haresources.gz /etc/ha.d/gzip -d ha.cf.gzgzip -d haresources.gz

2.1.- Configuración del Archivo ‘/etc/ha.d/ha.cf’.

Ahora, lo que vamos a hacer es a empezar a configurar los archivos de heartbeat, de acuerdo a nuestro escenario de

trabajo. El primer archivo que vamos a editar es el /etc/ha.d/ha.cf, allí colocamos la siguiente configuración:

Archivo /etc/ha.d/ha.cf:

debugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility local0keepalive 2deadtime 20warntime 10initdead 40udpport 694bcast eth0auto_failback offnode kPBXPRInode kPBXSEC

32

Page 33: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

La opción ‘auto_failback off’ es muy importante. Esta opción especifica cómo va a actuar heartbeat cuando se restaure

el nodo calificado como primario. Comúnmente, lo que se hace es colocar esta opción en ‘auto_failback on’, lo cual le

dice a heartbeat que si el nodo kPBXPRI falla el control pasa a kPBXSEC y que si kPBXPRI se restaura entonces el

control vuelve a kPBXPRI. Sin embargo, esta forma de trabajar podría generar inconvenientes en la operación de los

servicios, puesto que si kPBXPRI se vuelve inestable y empieza a parpadear el sistema podría comenzar a oscilar, lo

cual no sería de ninguna manera conveniente.

Más bien entonces, lo que convendría es que cuando el sistema falle y conmute y luego se restaure dejar el nodo

secundario como activo hasta verificar que el nodo primario este restaurado y estable. Por esta razón, es que sugerimos

que coloquemos la opción ‘auto_failback off’, y dejar el sistema heartbeat en ‘Modo No Revertible’.

Es importante de que en ambos nodos del heartbeat, lo la configuración de los archivos sea exactamente la misma. En

los archivos de configuración que vienen como muestra, podemos encontrar la explicación detallada de cada uno de las

opciones de configuración de heartbeat.

33

Page 34: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.2.- Configuracion del Archivo ‘/etc/ha.d/haresources’.

En el archivo ‘/etc/ha.d/haresources’ se define la información de montaje de los recursos DRBD, la Dirección IP Virtual

de los servicios y los Archivos de Scripts en el ‘/etc/init.d/’ de Failover y Switchover. Editamos entonces el

‘/etc/ha.d/haresources’ y colocamos lo siguiente:

kPBXPRI drbddisk::kPBX Filesystem::/dev/drbd1::/mnt/vfs::ext3 IPaddr::10.0.1.99/24/eth1 asterisk fonulator heartbeat-info

kPBXPRI Especifica que el Nodo kPBXPRI es el Primariodrbddisk::kPBX Nombre del Recurso DRBDFilesystem::/dev/drbd1::/mnt/vfs::ext3 Información para el Montaje de DRBDIPaddr::10.0.1.99/24/eth1 Dirección IP Virtual (VIP: Virtual IP Address)asterisk fonulator heartbeat-info Scripts en ‘/etc/init.d/’ a Ejecutar en Failover/Switchover

Script ‘/etc/init.d/asterisk’

Arranca y detiene Asterisk. No es necesario arrancar y/o detener el DAHDI, que perfectamente podemos tenerlo

habilitado.

Script ‘/etc/init.d/fonulator’

Ejecuta ‘fonulator’ cada vez que haya un Failover.

Script ‘/etc/init.d/heartbeat-info’

La idea de este script es que se envíen mensajes E-mail, SMS, GTalk, Skype o Twitter cada vez que haya Failover o

Switchover.

34

Page 35: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

2.3.- Configuracion del Archivo ‘/etc/ha.d/authkeys’.

En este archivo se configuran los keys para la autenticación de heartbeat entre los nodos del cluster. De esta forma, se

provee un mínimo nivel de seguridad.

En el archivo ‘/etc/ha.d/authkeys’, colocamos entonces:

auth 22 sha1 elpasswordquequeramos

Es importante que el archivo ‘/etc/ha.d/authkeys’ tenga permiso de lectura solo para ‘root’, para ello ejecutamos el

siguiente comando:

chmod 600 /etc/ha.d/authkeys

35

Page 36: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.- Pruebas de Funcionamiento de DRBD y Heartbeat

3.1.- Prueba 1, Levantar los Nodos.

Para comenzar a probar apagamos ambos nodos del cluster y encendemos solamente el Nodo kPBXPRI. Debemos

chequear que se monta la partición de DRBD y que la VIP está disponible y que los servicios están arriba. Podemos

además, comprobar que el nodo kPBXPRI esta como Primario, para observar esto ejecutamos el siguiente comando:

drbdadm role kPBXPrimary/Unknow

A continuación arrancamos el kPBXSEC y comprobamos que es efectivamente el Nodo Secundario.

drbdadm role kPBXSecondary/Primary

Además, deberíamos observar que el Nodo Secundario se sincroniza con el DRBD. Esto, lo hacemos viendo el

‘/proc/drbd’ y detallar ‘ds:UpToDate/UpTodate’.

36

Page 37: 1 - La Suite Asterisk IP PBX y DRBD y Heartbeat (Linux HA)

Cluster Redundante de la Suite Asterisk IP PBX con DRBD y HeartbeatTópico 1

CONATEL / CEDITEL - VoIP Telefonía IP y sus Aplicaciones sobre Plataformas de Red GNU/Linux y Software Libre con Asterisk, Nivel Avanzado II

3.2.- Prueba 2, Failover (Prueba de Fuego).

Esta es la prueba más importante del Sistema DRBD+Heartbeat. Lo que hacemos es apagar el Nodo Primario.

Inmediatamente, el Nodo Secundario pasa a ser Primario, que toma el Control DRBD, que monta la Partición DRBD,

que se configura la VIP y que los servicios se levantan. Solo se cortara el servicio entre 5 a 15 segundos.

La restauración. Debemos levantar el Nodo kPBXPRI, que ahora será Secundario, esperar que se sincronicen las

Particiones DRBD. Para hacer el Switchover, vamos al kPBXSEC y ejecutamos:

/etc/init.d/heartbeat restart

Al hacer esto, kPBXPRI pasara a tomar el control.

37