You are on page 1of 7

Procedimiento de configuración Servicio de Alta Disponibilidad

Diagrama del problema:

cliente

cliente

cliente

cliente

INTERNET
VIP 222.22.2.100 VIP 222.22.2.100

IP 222.22.2.10

IP 222.22.2.11

VRRP LVS1
IP 192.168.0.10

LVS2
IP 192.168.0.11

sw

IP 192.168.0.120:80

IP 192.168.0.130:80

WS1

WS2

Aunque es posible incorporar más servidores web como otros tipos de servidores.0.168.0 .0.0.255. es que será necesario modificar los archivos log de estos servidores web. etc.168. en definitiva.255 network 192.0 En WS2: #WS2 iface eth0 inet static address 192.0.120 netmask 255. etc. Aquí podría tratarse de servidores con cualquier sistema operativo.1 broadcast 192.168. los servidores requieren una configuración estática de red.255 network 192.168.1 broadcast 192. shell remota. como diversos sistemas de archivos.255.0 gateway 192. La siguiente será la configuración para los servidores web. Para esto se abre el archivo /etc/apache2/apache2.168.255.Para el diagrama anterior.168.255. Como es recomendable. Las pruebas que se llevan a cabo para demostrar este esquema sólo fueron basadas en servicios web apache. si no que serán ocultados por una dirección IP virtual y dispuestos en lo que se denomina una “granja” de servidores. medios de almacenamiento pre configurados. Es posible aplicar el mismo diagrama a servicios de correo.168.168. es el verdadero solicitante del servicio.0.0 gateway 192. si no que se registre el cliente que desde internet pasa por el balanceador y. sólo se muestra servidores web en el esquema de alta disponibilidad.0.conf y modificamos el segundo LogFormat por: LogFormat “%{X-Forwarded-For}i %1 %u %t \”%r\” %> %0 \”%{Referer}i” \ \”%{User-Agent}i\”” combined #Todo en una misma linea De esta manera se ordena a apache a registrar en el log los datos pertenecientes al cliente remoto y no a alguna de las máquinas pertenecientes a la solución de alta disponibilidad. Otros servicios podrían necesitar algunas características extras.0. Dado que apache registra en el log cada cliente que solicita el servicio.0. Esta configuración se debe realizar en todas las máquinas que serán parte de la granja de servidores. Pero para el caso particular de esta prueba los servidores web estarán implementados sobre Debian 6: #WS1 iface eth0 inet static address 192. se debe modificar el log para que lo que se registre no sea la conexión del balanceador de carga que llama al servicio. 1) Preparación de los servicios: Debido a que los servidores web no estará expuestos directamente a los clientes.130 netmask 255.

111” NETMASK=”255.110” NETMASK=”255.10” NETMASK=”255.255.0” NM_CONTROLLED=”yes” ONBOOT=”yes” type=”Ethernet” UUID=”CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC” #LVS2 #/etc/sysconfig/network-script/ifcfg-eth1 DEVICE=”eth1” BOOTPROTO=”static” HWADDR=”JJ:JJ:JJ:JJ:JJ:JJ” IPADDR=”192.255. LVS1: #LVS1 #/etc/sysconfig/network-script/ifcfg-eth0 DEVICE=”eth0” BOOTPROTO=”static” HWADDR=”XX:XX:XX:XX:XX:XX” IPADDR=”222.255.0” NM_CONTROLLED=”yes” ONBOOT=”yes” type=”Ethernet” UUID=”AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA” #LVS1 #/etc/sysconfig/network-script/ifcfg-eth1 DEVICE=”eth1” BOOTPROTO=”static” HWADDR=”II:II:II:II:II:II” IPADDR=”192.168.255.2) Preparación de los componentes de Alta Disponibilidad: a) Configuración de red con direcciones estáticas en todas las máquinas.255.22.0” NM_CONTROLLED=”yes” ONBOOT=”yes” type=”Ethernet” UUID=”BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB” LVS2: #LVS2 #/etc/sysconfig/network-scrip/ifcfg-eth0 DEVICE=”eth0” BOOTPROTO=”static” HWADDR=”YY:YY:YY:YY:YY:YY” IPADDR=”222.2.22.2.11” NETMASK=”255.168.255.255.255.0” NM_CONTROLLED=”yes” ONBOOT=”yes” type=”Ethernet” UUID=”DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD” .0.0.

6.org/pub/linux/v2. pero si llega a haber algún fallo. el servidor Backup tomará el rol de Master.39.6.tar. de los cuales uno será un servidor primario o MASTER y otro.vera@gmail. hasta que este vuelva a funcionar. # yum -y install make gcc perl ncurses-devel # tar zxvf linux-2. configure y revise lo necesario.39.4.39.gz]# make modules_install linux-2.39.4. # wget http://www.6.tar.4.gz # cd linux linux-2.com smtp_server 127.kernel.39.vera@gmail.gz linux-2. b) Descarga de kernel de linux 2. un secundario o BACKUP.com } notification_email_from armin.6.4.0.tar.tar.1 smtp_connect_timeout 30 router_id LVS_1 } vrrp_sync_group VG1 { group { VI_1 VI_2 } } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 .6. de esta manera el servidor Master entregará el servicio a los clientes y balanceará la carga dentro de la granja de servidores.tar.4. Para configurar Keepalived se debe acceder a su archivo de configuración en /etc/keepalived/keepalived.0. e) Descarga de servicio Keepalived en los servidores Linux Virtual Server # yum -y install keepalived 3) Configuración de Keepalived: Este servicio se configurá de forma muy similar en dos servidores.6/linux-2.4 con soporte lvs en LVS1 y LVS2.Se asume que ambos nodos pueden resolver nombre o tienen acceso a Internet para descargar el software necesario.39. Si esto no es así.gz c) Configuración e instalación del kernel descargado.gz]# make menuconfig linux-2.conf tanto en el servidor que hará de Master como en el que hará de Backup y se establecerá la siguiente configuración: global_defs { notification_email { armin.6.4.gz]# make install d) Arranque con el nuevo kernel.6.tar.39.

priority 100 advert_int 1 lvs_sync_daemon_interface eth0 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 222.0.0.0. el valor menor en priority marca la diferencia entre un servidor primario y uno secundario. pero en la práctica.2.168.100 80 { delay_loop 6 lb_algo rr lb_kind NAT protocol TCP real_server 192.22.120 80 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 80 } } real_server 192.22. 4) Configuración Firewall Iptables: Dada la capa de seguridad de Linux. es necesario configurar Iptables para permitir el tráfico desde internet hacia el balanceo de carga y la comunicación de keepalived.168. El archivo /etc/sysconfig/iptables/ debe quedar de la .130 80 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 80 } } } Esta configuración debe ser aplicada en ambos servidores LVS.2.100 } } vrrp_instance VI_2 { state MASTER interface eth1 virtual_router_id 51 priority 100 advert_int 1 lvs_sync_daemon_interface eth1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168. La documentación también plantea que el atributo STATE debería de BACKUP en el servidor de respaldo. salvo que en servidor Backup debe variar en los valores de router_id y priority.1 } } virtual_server 222.

Dentro del mismo archivo ubicar el siguiente atributo y establecerlo en 1: net. También se permite la comunicación entre el servidor Master y el Backup mediante el protocolo VRRP. es necesario poner un flag en el archivo /etc/sysconf. Mediante el comando ip se puede comprobar el funcionamiento de los servidores.ipv4. Iniciamos Keepalived en el servidor Master y luego en el servidor Backup. Además es necesario decirle al kernel que reenvie paquetes entre las interfaces físicas. En el servidor Master escribimos ip addr list y nos mostrará la lista de direcciones y las interfaces a las cuales se encuentran asociadas: .0/8 -j ACCEPT -A INPUT -m state --state ESTABLISHED. en ambos servidores: *nat :PREROUTING ACCEPT [22:3266] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [30:1800] :POSTROUTING ACCEPT [12:720] -A POSTROUTING -o eth0 -j MASQUERADE COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [54:4300] -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p vrrp -j ACCEPT -A INPUT -d 224.siguiente manera.0. así el cliente siempre verá una comunicación entre la IP o URL que escribió en el navegador y nunca sabrá que está siendo atendido por un cluster de servidores web. se permite el tráfico de paquetes multicast usados por Keepalived para conocer la salud de los nodos involucrados.ctl net. 5) Configuraciones finales: Dado que se establece una dirección ip virtual que será expuesta a los clientes.RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A FORWARD -i eth1 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT De esta manera se logra enmascarar el trafico que viene desde la LAN.0. Obviamente se necesita mantener la escucha del puerto 80 para recibir requerimientos web y por último el reenvío de paquetes que entran en los LVS desde la interfaz eth1 expuesta la granja de servidores hacia la interfaz eth0 que será expuesta a Internet. en este caso perteneciente a la granja de servidores web.ip_nonlocal_bind = 1 Así.ip_forward = 1 Aplicamos sysctl -p para parsear este archivo sin la necesidad de reiniciar el sistema. permitiremos que se comparta una dirección de red sin que esté asociada a un dispositivo físico.ipv4.

22.22.2.MULTICAST. Esta última dirección es la puerta de enlace a la que deben apuntar las máquinas dentro de la granja de servidores.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST.2.110/24 brd 222. Si se detiene Keepalived en el nodo Master.2.LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:84:a4:c2 brd ff:ff:ff:ff:ff:ff inet 222.0.22.100/32 scope global eth0 inet6 fe80::a00:27ff:fe84:a4c2/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST.110 definida en la configuración de la red y la dirección virtual 222.UP.10 igualmente definida en la configuración de red y la dirección 192.255 scope global eth0 inet 222. proveyendo de alta disponibilidad al conjunto. la interfaz eth1 mantiene su dirección real 192. .1/32 scope global eth1 inet6 fe80::a00:27ff:fe4d:ef1c/64 scope link valid_lft forever preferred_lft forever Las direcciones IP destacadas están asociadas a interfaces físicas. el comando ip del nodo Backup debe arrojar la misma salida.0. Luego.2. el servidor Backup asume el control. pasando a ser Master y su configuración pasa a ser la misma que el servidor caído.0. si todo ha sido bien configurado.22.1 definida por Keepalived.22.LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:4d:ef:1c brd ff:ff:ff:ff:ff:ff inet 192. De esta manera.168.168.100 establecida en keepalived.168.UP.1: lo: <LOOPBACK. o simplemente el servidor primario o Master deja de funcionar.conf expuesta a internet.10/24 brd 192. siendo el caso de la interfaz eth0 quien posee su dirección real 222. se tiene un servicio básico de Alta Disponibilidad.0.168.2.LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.MULTICAST.0.168.255 scope global eth1 inet 192.0.UP. Cuando el servido keepalived es detenido por alguna razón.