Está en la página 1de 11

Implementación EPA

Subdirección de Diseño instruccional

Servicios
Nombre de la
Sigla Asignatura ASY4142 Convergentes (Voz, Tiempo 7 horas
Asignatura
Videos y Datos)
Experiencia de Aprendizaje N° 3 Administración Avanzada de Sistema de Servicios Convergentes
Actividad N° 3.3 Generando Soluciones de Alta Disponibilidad

Nombre del Recurso Didáctico 3.3.2 Implementación de una Solución de Alta Disponibilidad

1. Aprendizajes e Indicadores de Logro

Aprendizajes (Procedimentales, Actitudinales y Indicadores de logro


conceptuales)
Implementar soluciones convergentes que
 Desarrolla una solución de Alta disponibilidad para el servicio
permitan la interconexión con otras centrales, la
considerando las distintas tecnologías disponibles.
PSTN y redes móviles, considerando alta
disponibilidad.
Reconocer los distintos componentes y  Identifica las metodologías de resolución de problemas para redes de
procesos necesarios para implementar una voz y de video.
solución de voz y video acorde a las necesidades
de la organización.

Distinguir las variables de entorno en la red, que  Identifica los problemas que pueden afectar la comunicación en una
afectan el tráfico de voz, video y datos, llamada telefónica/video llamada considerandos variables del
considerando la Calidad de Servicio. entorno corporativo.

Identificar y analizar un problema para generar  Aplica en su totalidad la alternativa de solución escogida para el
alternativas de solución, aplicando métodos problema planteado.
aprendidos. Resolución de Problemas (N1)  Aplica un método lógico en la resolución del problema, considerando
pasos definidos y relacionados entre sí.

1. Descripción General Actividad.

Esta actividad tiene como principal objetivo implementar una solución de alta disponibilidad para un sistema de
comunicaciones Asterisk/Issabel. Al finalizar, dispondrás de una pauta de Reflexión para analizar tu desempeño
durante esta última experiencia, en el recurso 3.3.3.
Instrucciones:
1. Para esta actividad se desarrolla en grupos de dos integrantes o de manera individual.
2. Cada PC debe contar funcionalidad de virtualización activada y con un programa de virtualización como
VirtualBox o VmWare, más conexión a Internet.
3. Los estudiantes deberán cargar(importar) la Imagen de Issabel que exportaron la clase pasada como
para del trabajo hecho.
NOTA:
Para esta actividad se recomienda la clonación de una imagen virtualizada de Issabel ya disponible, la que
actuará como Nodo 2, de forma de optimizar el tiempo de desarrollo de las actividades

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


1
Implementación EPA
Subdirección de Diseño instruccional

2. Actividad: implementación Alta Disponibilidad para Servicios de Comunicaciones Issabel


2.1 Creación de Nodos Issabel:

 Cree una imagen clonada de su server Issabel en VirtualBox o VMware.


 Realice los siguientes ajustes sobre las 2 máquinas virtuales de Issabel, las que en nuestro esquema
de alta disponibilidad constituirán el Nodo 1 y Nodo 2:

Sistemas Issabel:
CPU: 2 núcleos
RAM: 1GB
D.D.: 8GB
DD DRBD: 4GB
Nombres Servidores:
- Issabel1
- Issabel2

Definimos en Red el Adaptador 2 como el común entre los 2 Nodos:


(No olvide renovar la MAC en al menos un Nodo)

Tipos de Direccionamiento IP que aparecerán:


1) Direccionamiento de los Servers a su conexión a Internet (eth0)
Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.
2
Implementación EPA
Subdirección de Diseño instruccional

Issabel1: 201.0.100.180
Issabel2: 201.0.100.181
2) Direccionamiento IP de los Servers en su conexión común (eth2)
Issabel1: 20.20.20.10
Issabel2: 20.20.20.20
3) IP virtual flotante

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


3
Implementación EPA
Subdirección de Diseño instruccional

Habilite la interfaz eth2, ingrese en la configuración de red


en cada Server usando el comando:
# nmtui

Editen las interfaces y habiliten en direccionamiento de


eth2
NOTA: el direccionamiento de eth0 lo obtiene del dhcp de
la red interna. En este caso es conveniente que habilite IP
Fija, para ello (revise el rango del dhcp para que asigne IPs fuera de dicho rango)

Verifique en los servidores Issabel:

2.2 Instalar y configurar DRBD (todo lo que sigue aplica a los 2 server)
 Chequee la Creación de los discos duras de drbd en cada nodo (4GB)
# fdisk -l
 Chequear salida Internet: (no podrá continuar si esto no ocurre)
# ping www.google.com

 Actualizar servidor: (esto puede durar varios minutos)


# yum -y update

a) Editar los nombres de los hosts de Issabel. Ingrese y edite el archivo host en cada server:
# vim /etc/hosts
Vaya al final y anote la IP de la conexión en común de cada uno:
20.20.20.10 Issabel1 Issabel1.local
20.20.20.20 Issabel2 Issabel2.local

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


4
Implementación EPA
Subdirección de Diseño instruccional

Confirme que desde cada Server tiene ping hacia el otro a través de la eth2:

EVIDENCIA 1:
 Capture imagenes de ambos server con la configuración de la eth2 (use ifconfig)
 Capture imágenes de ambos server con ping hacia el dominio del otro.

b) Levantando DRBD:
Editamos los repositorios e instalamos los paquetes necesarios. Creamos el siguiente
archivo con los siguientes contenidos: drbdlink.repo
# vim /etc/yum.repos.d/drbdlink.repo
[drbdlink]
name=Drbdlinks
baseurl=http://dl.fedoraproject.org/pub/epel/7/x86_64/
enable=1
gpgcheck=0

y luego actualizamos los repositorios: # yum repolist all

c) Instalamos los siguientes paquetes PACEMAKER y COROSYNC:


# rpm –import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

# yum install -y corosync pcs pacemaker resource-agents drbd84-utils kmod-drbd84


drbdlinks git

d) Crear el Siguiente Archivo de Configuración para Monitoreo del Servidor APACHE:


Creamos un archivo en los dos servidores en el directorio /etc/httpd/conf.d con el nombre
de serverstatus.conf y que contenga
# vim /etc/httpd/conf.d/serverstatus.conf
Listen 127.0.0.1:80
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
Comentamos el Puerto 80 para no tener problemas cuando realicemos el monitoreo (en
ambo servers):
/etc/httpd/conf/httpd.conf
# sed -i "s/Listen/#Listen/" /etc/httpd/conf/httpd.conf

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


5
Implementación EPA
Subdirección de Diseño instruccional

Comentamos la linea RewriteRule en el archivo:


# sed -i "s/RewriteRule/#RewriteRule/" /etc/httpd/conf.d/issabel.conf

e) Agregamos la IP virtual y puerto por donde va a escuchar el http:


echo "Listen 201.0.100.183:80"|tee --append /etc/httpd/conf/httpd.conf
Creamos la particion en el segundo disco:
fdisk /dev/xvdb
mkfs.xfs /dev/xvdb1
dd if=/dev/zero bs=1M count=1 of=/dev/xvdb1; sync

Editamos el archivo vim /etc/drbd.d/global_common.conf, y agregamos lo siguiente en la


opcion net:
vim /etc/drbd.d/global_common.conf
net {
protocol C;
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;

Creamos el archivo vim /etc/drbd.d/drbd0.res, con el siguiente contenido:


vim /etc/drbd.d/drbd0.res
resource drbd0 {
disk /dev/xvdb1;
device /dev/drbd0;
meta-disk internal;
on issabel1.security.net.co {
address 20.20.20.10:7789;
}
on issabel2.security.net.co {
address 20.20.20.20:7789;
}
}
f) Creamos el recurso drbd0:
drbdadm create-md drbd0
Arrancamos el servicio:
# drbdadm up drbd0
# drbdadm primary --force drbd0
=> establecemos como primario drbd0 (SOLO EN SERVER PRIMARIO)

Chequemos: # cat /proc/drbd

Una vez terminado, formateamos el recurso compartido:


mkfs.xfs /dev/drbd0

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


6
Implementación EPA
Subdirección de Diseño instruccional

g) Creamos el directorio a donde se va a montar la particion compartida


mkdir /datos

Bajamos los servicios para que no arranque con el servidor (en ambos Server):
systemctl stop httpd.service
systemctl stop asterisk.service
systemctl stop dahdi.service
systemctl stop issabel-portknock.service
systemctl stop issabel-updaterd.service
systemctl stop hylafax.service
systemctl stop iaxmodem.service
systemctl stop mariadb.service

systemctl disable httpd.service


systemctl disable asterisk.service
systemctl disable dahdi.service
systemctl disable issabel-portknock.service
systemctl disable issabel-updaterd.service
systemctl disable hylafax.service
systemctl disable iaxmodem.service
systemctl disable mariadb.service

2.3 Configuración del Cluster HA


 Creamos la Password para el Usuario Ha Cluster:
echo P@ssw0rd1 | passwd --stdin hacluster

 Arrancamos el servicio (en ambos):


systemctl start pcsd
 Autenticamos en los dos servidores

Conexión del Cluster (Sólo server principal):


pcs cluster auth issabel1 issabel2 -u hacluster -p P@ssw0rd1

Creamos el cluster con el nombre asterisk_drbd. Crea el archivo /etc/corosync/corosync.conf.


con la configuracion necesaria del cluster:
pcs cluster setup --name asterisk_drbd issabel1 issabel2 (ejecuta en Server 1)
Arrancamos los nodos de cluster:
pcs cluster start –all (solo Issabel 1 )
corosync-cfgtool -s
Revisamos que estén conectados los dos Servidores y nos da la información del grupo:
pcs status corosync
Revisamos si tenemos errores en el cluster:
crm_verify -L -V

Como vamos a tener activo/pasivo, deshabilitamos la propiedad STONITH, para que no


compartan la ip virtual al mismo tiempo:
pcs property set stonith-enabled=false
Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.
7
Implementación EPA
Subdirección de Diseño instruccional

Como solo tenemos dos nodos, le decimos que ignore el umbral de nodos:
pcs property set no-quorum-policy=ignore
Creamos la ip virtual, que es la que se va a compartir entre los dos servidores:
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=201.0.100.183
cidr_netmask=24 nic=eth0:1 op monitor interval=10s
Creamos el monitoreo del servidor http:
# pcs resource create webserver ocf:heartbeat:apache
configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op
monitor interval=20s
Asignar la ip virtual y el servicio http al nodo que este activo:
pcs constraint colocation add webserver virtual_ip INFINITY (en Issabel 1)
Orden de arranque de los servicios:
pcs constraint order virtual_ip then webserver
Lo recursos deben estar en la maquina principal (Issabel1):
pcs constraint location virtual_ip prefers issabel1=50
pcs constraint location webserver prefers issabel1=50
El Resto Por Defaults (Issabel 1):
pcs resource defaults resource-stickiness=100
pcs resource defaults
Creamos el monitoreo de la data drbd:
pcs resource create webserver_data ocf:linbit:drbd drbd_resource=drbd0 op monitor
interval=10s

Creamos el marter / esclavo en los nodos

pcs resource master webserver_data_sync webserver_data master-max=1 master-node-


max=1 clone-max=2 clone-node-max=1 notify=true

Creamos el monitoreo donde se debe montar la data del drbd

pcs resource create webserver_fs Filesystem device="/dev/drbd0" directory="/datos"


fstype="xfs"

Vamos al diretorio en donde se comparte los datos y creamos una copia

cd /datos
amportal chown
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-lib64-asterisk.tgz /usr/lib64/asterisk/
tar -zxvf usr-lib64-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

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


8
Implementación EPA
Subdirección de Diseño instruccional

tar -zcvf var-www.tgz /var/www/


tar -zxvf var-www.tgz

cd /root/
Descargamos el agente drbdlink (en ambos servers):
git clone https://github.com/linsomniac/drbdlinks.git
Entramos al directorio drbdlinks y copiamos el agente (en ambos servers):
cd drbdlinks/
cp -vr drbdlinks /usr/lib/ocf/resource.d/heartbeat/
Revisamos que este el agente:
pcs resource agents ocf:heartbeat | grep drbdlinks
Damos permios (en ambos servers):
chmod +x /usr/lib/ocf/resource.d/heartbeat/drbdlinks
Editamos vim /etc/drbdlinks.conf y agregamos al final las siguientes líneas (en ambos servers):
mountpoint('/datos')
link('/etc/asterisk/')
link('/var/lib/asterisk')
link('/usr/lib64/asterisk/')
link('/var/spool/asterisk/')
link('/var/lib/mysql/')
link('/var/log/asterisk/')
link('/var/www/')
Bajamos el agente para Asterisk (ambos servers):
wget https://raw.githubusercontent.com/ClusterLabs/resource-
agents/master/heartbeat/asterisk -O /usr/lib/ocf/resource.d/heartbeat/asterisk
Le damos permisos (ambos servers):
chmod +x /usr/lib/ocf/resource.d/heartbeat/asterisk
Creamos el monitor de drbdlinks:
pcs resource create drbdlinks ocf:heartbeat:drbdlinks op monitor interval=20s
Creamos el monitor del maridb (primer server):
pcs resource create mysql ocf:heartbeat:mysql op monitor interval=10s

Creamos el monitor del asterisk (primer server):


pcs resource create asterisk ocf:heartbeat:asterisk params user="root" group="root"
op monitor timeout="30"
Orden de arranque de los servicios (en el servidor principal):
pcs constraint colocation add webserver webserver_fs INFINITY
pcs constraint colocation add webserver drbdlinks INFINITY
pcs constraint colocation add webserver asterisk INFINITY
pcs constraint colocation add webserver mysql INFINITY
pcs constraint colocation add webserver_fs webserver_data_sync INFINITY with-rsc-
role=Master
pcs constraint order promote webserver_data_sync then start webserver_fs
pcs constraint order webserver_fs then webserver
pcs constraint order webserver_fs then drbdlinks
pcs constraint order webserver_fs then mysql
pcs constraint order drbdlinks then asterisk

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


9
Implementación EPA
Subdirección de Diseño instruccional

Donde deben estar localizados los servicios (Servidor Principal):


pcs constraint location webserver_data_sync prefers issabel1=50
pcs constraint location webserver_fs prefers issabel1=50
pcs constraint location drbdlinks prefers issabel1=50
pcs constraint location mysql prefers issabel1=50
pcs constraint location asterisk prefers issabel1=50
setsebool daemons_enable_cluster_mode=1

Arranque de servicios y daemons junto con el arranque de la maquina (en ambos server):
systemctl enable corosync
systemctl enable pacemaker
systemctl enable pcsd

2.4 Prueba de funcionamiento:


 Reiniciamos ambos servidores (reboot)
 Chequeemos sincronismo de drbd:
# cat /proc/drbd esperemos que sincronicen (repetimos el comando para revisar)
 chequeemos la ip flotante
carpeta entre ambos server compartida # df -h
 reestablecemos Asterisk con # asterisk -r
1) Revisen el drbd en el segundo server si sale como secundario (# cat /proc/drbd)
Debe observar que todos los servicios están activos con el primer server (Issabel 1)

a) Por lo tanto, si ejecuta Asterisk en el server 2 (con asterisk -r) no debe conectar.
b) El directorio compartido tampoco debe estar allí (probemos con #df -h)

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


10
Implementación EPA
Subdirección de Diseño instruccional

c) La IP flotante tampoco está en este server (revisemos con # ifconfig)

2) Para saber si pasan los procesos, mandamos a Apagar Issabel1 (# halp -p)
volvemos a mirar el server secundario (# ifconfig), la ip flotante la pasó:

a) Los servicios pasan a Issabel2


b) Ejecutemos nuevamente Asterisk -r en el server 2 y veamos que Asterisk debe estar
arriba:

EVIDENCIAS 2: Issabel1 Arriba, Issabel 2 apagado


 Capture imágenes con evidencias de 2.4 1) letras a) y b)

EVIDENCIAS 2: Issabel2 Arriba, Issabel1 apagado


 Capture imágenes con evidencias de 2.4 2) letras a) y b)

Docente Diseñador Marco Antonio Lobos E. Revisor metodológico Carlos Carvacho G.


11

También podría gustarte