Está en la página 1de 14

Manual: Alta

Disponibilidad Issabel
DIRECCIONES IPS UTILIZADAS

IP Issabel 1: 192.168.100.172
IP Issabel 2: 192.168.100.173
IP Virtual/Flotante: 192.168.100.174

REQUISITOS

DD SATA: 8GB
Adaptador: Adaptador Puente

PREPARACIÓN

Añadir un disco duro de 8gb, luego cambiar el adaptador de red a adaptador


puente y en el modo promiscuo seleccionar “permitir todo”. Hecho todo esto
clonamos la máquina Issabel1 y renombramos a la maquina resultante de la
clonación como “Issabel2” y renovamos la MAC.

CONFIGURACION DE DRBD

Instalar el editor de texto nano con el comando yum -y install nano.

Ir a la dirección nano /etc/hosts y agregar el siguiente texto (AMBAS


MÁQUINAS)

192.168.100.172 issabel1 issabel1.local


192.168.100.173 issabel2 issabel2.local

Ir a la dirección nano /etc/hostname y escribir en cada máquina lo siguiente.


(AMBAS MAQUINAS)

En Issabel1 En Issabel2

issabel1.local issabel2.local
Actualización del Kernel (AMBAS MÁQUINAS)

Debido a la incompatibilidad de DRBD con el Kernel, hay que actualizarlo.


(Issabel posee Kernel 3)

nano /etc/yum.repos.d/CentOS-Base.repo

enabled=1

yum clean all && yum update


yum -y install kernel-devel kernel

yum -y install yum-plugin-fastestmirror


rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum clean all && yum update

yum --enablerepo=elrepo-kernel install kernel-ml

sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

sudo grub2-set-default 0

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Actualizamos el sistema con el comando yum -y update y al finalizar hacemos


un reboot.

Vamos a la dirección nano /etc/yum.repos.d/drbdlink.repo y anotamos lo


siguiente: (AMBAS MÁQUINAS)

[drbdlink]
name=Drbdlinks
baseurl=http://dl.fedoraproject.org/pub/epel/7/x86_64/
enable=1
gpgcheck=0
Luego anotamos el comando siguiente: yum repolist all

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 drbd90-utils kmod-


drbd90 drbdlinks git

Nos dirigimos a la dirección


nano /etc/httpd/conf.d/serverstatus.conf y anotamos lo que sigue. (AMBAS
MÁQUINAS)

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>

Comentar el puerto 80 en la dirección /etc/httpd/conf/httpd.conf


(AMBAS MÁQUINAS)

sed -i "s/Listen/#Listen/" /etc/httpd/conf/httpd.conf

Comentar la línea RewriteRule (AMBAS MÁQUINAS)

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

Agregar la ip virtual(flotante) y puerto (AMBAS MÁQUINAS)

echo "Listen 192.168.100.174:80"|tee --append /etc/httpd/conf/httpd.conf

Crear la partición en el segundo disco (8gb) (AMBAS MÁQUINAS)

fdisk /dev/sdb
Opción N
Opción P
Enter 3 veces
W
mkfs.xfs /dev/sdb1
dd if=/dev/zero bs=1M count=1 of=/dev/sdb1; sync

Agregamos el siguiente texto en la sección net del archivo


nano/etc/drbd.d/global_common.conf (AMBAS MÁQUINAS)

protocol C;
after-sb-0pri discard-younger-primary;
after-sb-1pri discard-secondary;
after-sb-2pri call-pri-lost-after-sb;

Anotamos lo siguiente en la dirección nano/etc/drbd.d/drbd0.res (cuidar la


Indexación) (AMBAS MÁQUINAS)

resource drbd0 {
disk /dev/sdb1;
device /dev/drbd0;
meta-disk internal;
on issabel1.local {
address 192.168.100.172:7789;
}
on issabel2.local {
address 192.168.100.173:7789;
}
}

Hacemos un reboot

Creamos los recuros DRBD0 (AMBAS MÁQUINAS)


drbdadm create-md drbd0

Iniciamos el servicio

drbdadm up drbd0 (AMBAS MÁQUINAS)

drbdadm primary --force drbd0 (SOLO ISSABEL1)

Formateamos el recurso compartido (SOLO ISSABEL1)

mkfs.xfs /dev/drbd0

Creamos la carpeta “datos” donde los se montará la partición compartida

mkdir /datos (AMBAS MAQUINAS)

Detenemos los siguientes servicios (AMBAS MÁQUINAS)

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

Creamos la password para el usuario hacluster (AMBAS MÁQUINAS)


echo P@ssw0rd1 | passwd --stdin hacluster

Iniciamos el servicio (AMBAS MÁQUINAS)

systemctl start pcsd

Autenticamos (AMBAS MÁQUINAS)

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

Creamos un cluster llamado asterisk_drbd (SOLO ISSABEL1)

pcs cluster setup --name asterisk_drbd issabel1 issabel2

Iniciamos el cluster (SOLO ISSABEL1)

pcs cluster start –all


corosync-cfgtool -s

Revisamos que ambos servidores estén conectados

pcs status corosync

Para que no compartan ip virtual al mismo tiempo deshabilitamos la


propiedad STONITH (SOLO ISSABEL1)

pcs property set stonith-enabled=false

Ignoramos el umbral de nodos (SOLO ISSABEL1)

pcs property set no-quorum-policy=ignore

Creamos la virtual (SOLO ISSABEL1)

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.100.174


cidr_netmask=24 nic=eth0:1 op monitor interval=10s
Creamos el monitoreo del servidor http (SOLO ISSABEL1)

pcs resource create webserver ocf:heartbeat:apache


configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-
status" op monitor interval=20s

Asignamos la ip virtual y el servicio http al nodo activo (SOLO ISSABEL1)

pcs constraint colocation add webserver virtual_ip INFINITY

Orden de como arrancarán los servicios (SOLO ISSABEL1)

pcs constraint order virtual_ip then webserver

Recursos de Issabel1

pcs constraint location virtual_ip prefers issabel1=50


pcs constraint location webserver prefers issabel1=50

El resto por defaults (SOLO ISSABEL1)

pcs resource defaults resource-stickiness=100


pcs resource defaults

Creamos un monitoreo de la data de DRBD (SOLO ISSABEL1)

pcs resource create webserver_data ocf:linbit:drbd drbd_resource=drbd0


op monitor interval=10s

Creamos el activo/pasivo en el master (SOLO ISSABEL1)

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 (SOLO
ISSABEL1)

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


directory="/datos" fstype="xfs"

Creamos una copia del directorio donde se comparten los datos


(SOLO ISSABEL1)

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
tar -zcvf var-www.tgz /var/www/
tar -zxvf var-www.tgz
cd /root/

Descargamos drbdlink (AMBAS MÁQUINAS)

git clone https://github.com/linsomniac/drbdlinks.git

Ingresamos a drbdlinks y copiamos el agente (AMBAS MÁQUINAS)

cd drbdlinks

cp -vr drbdlinks /usr/lib/ocf/resource.d/heartbeat/


Revisamos que el agente esté (AMBAS MÁQUINAS)

pcs resource agents ocf:heartbeat | grep drbdlinks

Damos los permisos (AMBAS MÁQUINAS)

chmod +x /usr/lib/ocf/resource.d/heartbeat/drbdlinks

Al final de nano /etc/drbdlinks.conf agregamos el siguiente texto (AMBAS


MÁQUINAS)

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/')

Descargamos el agente para Asterisk (AMBAS MÁQUINAS)

wget
https://raw.githubusercontent.com/ClusterLabs/resource-agents/master/
heartbeat/asterisk -O /usr/lib/ocf/resource.d/heartbeat/asterisk

Otorgamos los permisos (AMBAS MÁQUINAS)

chmod +x /usr/lib/ocf/resource.d/heartbeat/asterisk

Creamos el servicio de monitoreo drbdlinks (SOLO ISSABEL1)

pcs resource create drbdlinks ocf:heartbeat:drbdlinks op monitor


interval=20s

Creamos el servicio de monitoreo mariadb (SOLO ISSABEL1)


pcs resource create mysql ocf:heartbeat:mysql op monitor interval=10s

Creamos el servicio de monitoreo asterisk (SOLO ISSABEL1)

pcs resource create asterisk ocf:heartbeat:asterisk user="root"


group="root" op monitor timeout="30"

Orden de arranque de los servicios

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 mysql pcs constraint order
drbdlinks then asterisk

Donde deben estar localizados los servicios (SOLO ISSABEL1)

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 junto con los servidores (AMBAS MÁQUINAS)

systemctl enable corosync


systemctl enable pacemaker
systemctl enable pcsd

Reboot

También podría gustarte