Apr 21, 2009

Balanceo de carga con LVS (III)

Para finalizar la parte del balanceo de carga con LVS, correspondiente al conjunto de artículos que venimos desarrollando sobre la implementación de un Sistema de Alta Disponibilidad y Balanceo de Carga, vamos a exponer los comandos que nos permitirán monitorizar el estado de las conexiones del cluster.

En primer lugar vamos a listar la lista de servicios configurados y los servidores reales y virtuales que atenderán dichas peticiones. Para ello emplearemos la orden ipvsadm con las opciones -l (listar los servicios) y -n (no resolver los nombres de dominio).
root@ha1:~# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.20:21 lc persistent 600
-> 10.0.0.13:21 Masq 1 0 0
-> 10.0.0.12:21 Masq 1 0 0
TCP 192.168.1.20:80 lc
-> 10.0.0.12:80 Masq 1 0 0
-> 10.0.0.13:80 Masq 1 0 0
TCP 192.168.1.20:3306 lc
-> 10.0.0.13:3306 Masq 1 0 0
-> 10.0.0.12:3306 Masq 1 0 0
En el ejemplo anterior puede observarse que se han definido tres servicios, FTP, HTTP y MySQL, los cuales serán balanceados hacia los nodos traseros (10.0.0.12 y 10.0.0.13) a través de un algoritmo lc (Least Connection).

Vamos a hacer la prueba de abrir tres sesiones HTTP desde un PC cliente con dirección IP 192.168.1.150. Si en ese momento volvemos a ejecutar el mismo comando, podremos ver el estado de dichas conexiones.
root@ha1:~# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.20:21 lc persistent 600
-> 10.0.0.13:21 Masq 1 0 0
-> 10.0.0.12:21 Masq 1 0 0
TCP 192.168.1.20:80 lc
-> 10.0.0.12:80 Masq 1 2 0
-> 10.0.0.13:80 Masq 1 1 0
TCP 192.168.1.20:3306 lc
-> 10.0.0.13:3306 Masq 1 0 0
-> 10.0.0.12:3306 Masq 1 0 0
Como puede observarse en la salida anterior, se han balanceado un par de conexiones HTTP hacia el nodo 10.0.0.12 y otra hacia el nodo 10.0.0.13.

Otra forma de obtener más información acerca del estado de las conexiones que atraviesan el cluster es a través de la opción -c. Cada una de las conexiones balanceadas por el LVS será reflejada a través de una entrada en la tabla de sesiones hash.
root@ha1:~# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 14:46 ESTABLISHED 192.168.1.150:4330 192.168.1.20:80 10.0.0.13:80
TCP 14:36 ESTABLISHED 192.168.1.150:4329 192.168.1.20:80 10.0.0.12:80
TCP 14:56 ESTABLISHED 192.168.1.150:4331 192.168.1.20:80 10.0.0.12:80
El primer campo indica el protocolo del servicio. El segundo el tiempo que la regla permanecerá en la tabla. El tercer campo el estado de la conexión (establecida, finalizada, en espera, ...). Y los últimos tres campos, la dirección IP origen (cliente), la dirección IP del servidor virtual que atenderá la conexión y la dirección IP del servidor real al que será balanceada la conexión.

Debido a que se inició el demonio de sincronización en ambos nodos frontales (ver el artículo anterior), ambas máquinas tendrán replicada la misma tabla de conexiones. Por lo tanto si ejecutamos el mismo comando en el nodo HA2, obtendremos el siguiente resultado:
root@ha2:~# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP 13:14 ESTABLISHED 192.168.1.150:4330 192.168.1.20:80 10.0.0.13:80
TCP 13:24 ESTABLISHED 192.168.1.150:4331 192.168.1.20:80 10.0.0.12:80
TCP 13:04 ESTABLISHED 192.168.1.150:4329 192.168.1.20:80 10.0.0.12:80
Visualizando el contenido de los ficheros /proc/net/ip_vs* podremos obtener información adicional sobre el sistema de balanceo, como por ejemplo datos estadísticos sobre las conexiones balanceadas.

No comments:

Post a Comment