HAPROXY VIP CONFIGURATION
Os explico la situación. Un entorno web creado en alta disponibilidad, y que dispone de un balanceador de carga HAPROXY con dos nodos en clúster que realiza la distribución de las conexiones entrantes.
Aunque ahora mismo hay balanceo, debemos configurar el HA en los HAPROXY con una IP-VIP, ya que ahora mismo si se que cae un nodo, el otro “literalmente no se entera”. Os mostramos un esquema ejemplo, aunque no es exactamente el de la plataforma se acerca mucho:
Vamos a utilizar keepalived para este trabajo. Instalamos el paquete keepalived en cada nodo LB01 y LB02:
1 |
root@lb01:~# apt-get install keepalived |
Creamos el fichero en cada nodo con configuraciones diferentes:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
root@lb01:~# nano /etc/keepalived/keepalived.conf global_defs { router_id lb01 } vrrp_script haproxy { script "killall -0 haproxy" interval 2 weight 2 } vrrp_instance 50 { virtual_router_id 50 advert_int 1 priority 101 state MASTER interface eth0 virtual_ipaddress { 192.168.100.30 dev eth0 } track_script { haproxy } } |
Reiniciamos el servicio haproxy:
1 2 3 4 |
root@lb01:~# service haproxy restart [....] Restarting haproxy: haproxy[WARNING] 364/093820 (3506) : config : 'stats' statement ignored for proxy 'mysql-cluster' as it requires HTTP mode. [WARNING] 364/093820 (3507) : config : 'stats' statement ignored for proxy 'mysql-cluster' as it requires HTTP mode. . ok |
Reiniciamos también keepalived:
1 2 |
root@lb01:~# service keepalived restart [ ok ] Restarting keepalived keepalived.... |
Vemos si contesta:
1 2 3 4 5 6 |
root@lb01:~# ping 192.168.100.30 PING 192.168.100.30 (192.168.100.30) 56(84) bytes of data. 64 bytes from 192.168.100.30: icmp_req=1 ttl=64 time=0.042 ms 64 bytes from 192.168.100.30: icmp_req=2 ttl=64 time=0.017 ms ^C --- 192.168.100.30 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.017/0.029/0.042/0.013 ms |
Ahora copiamos el fichero al nodo 2:
1 2 |
root@lb01:~# scp /etc/keepalived/keepalived.conf root@lb02:/etc/keepalived/ keepalived.conf 100% 304 0.3KB/s 00:00 |
Modificamos el fichero en el nodo LB02:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
root@lb01:~# nano /etc/keepalived/keepalived.conf global_defs { router_id lb02 } vrrp_script haproxy { script "killall -0 haproxy" interval 2 weight 2 } vrrp_instance 50 { virtual_router_id 50 advert_int 1 priority 101 state SLAVE interface eth0 virtual_ipaddress { 192.168.100.30 dev eth0 } track_script { haproxy } } |
Si disponemos de un firewall, definiremos el objeto en el firewall y crearemos una regla NAT para él a HTTP.
Hacemos una PRUEBA DE CAIDA, tiramos el interfaz del MASTER e intentamos navegar nuevamente:
1 |
root@lb01:~# ifconfig eth0 down |
Deberemos reiniciar para restablecer el clúster los servicios: networking, haproxy y keepalived (o reiniciar la máquina)
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?