Conociendo Linux Virtual Server Boris Quiroz Q. borisq22@gmail.com http://g00fy.homelinux.org
Qué es LVS? Servidor escalable y de alta disponibilidad, con un balanceador de carga. Servidor Cluster transparente al usuario final. Permite distribuir y programar el trabajo entre una serie de servidores reales. Se conoce como Linux Director al equipo que corre el LVS.
Porqué usar LVS? Economía: permite rescatar equipos dados de baja. Escalable: permite agregar o quitar nodos en forma transparente. Seguro: esconde nuestros servidores reales. Aliviana el trabajo de nuestros servidores.
Tres tipos de LVS LVS vía IPTunnel LVS vía Direct Routing LVS vía NAT
LVS vía IP Tunnel Solo programa las peticiones hacia los servidores reales. Los servidores reales envían los resultados directamente al usuario. Es capáz de manejar 100+ servidores reales.
LVS vía IP Tunnel
LVS vía IP Tunnel El balanceador de carga examina la dirección y puerto de destino del paquete. Si existe un match se envía el paquete al servidor real y se agrega la entrada en una tabla hash. Se encapsula el paquete antes de enviarlo. El servidor real recibe el paquete y lo desencapsula, y procesa la información El servidor real envía la respuesta directamente al cliente.
LVS vía Direct Routing El Linux Director solo procesa la mitad de la conexión. Las respuestas pueden seguir rutas separadas hacia los clientes, aumentado la escalabilidad. El balanceador examina el paquete entrante y lo envía al servidor real, creando una entrada en la tabla hash. Si un paquete pertenenciente a esta conexión vuelve a aparecer en la tabla hash, es reenviado directamente al servidor real.
LVS vía NAT Manipulación de dirección y/o puerto de origen y/o destino. Enmascaramiento IP. Los servidores reales pueden correr cualquier OS. Se puede usar más de un balanceador de carga.
LVS vía NAT Paquete de entrada para servicios Web: Origen 200.103.190.45:3456 Destino 200.103.106.105:80 LinuxDirector elejirá un servidor Web (172.16.0.2:80): Origen 200.103.190.45:3456 Destino 172.16.0.3:80 Respuesta que tendrá el LinuxDirector: Origen 172.16.0.3:80 Destino 200.103.190.45:3456 Se reescribe el paquete y se devuelve al cliente: Origen 200.103.106.5:80 Destino 200.103.190.45:3456
Algoritmos de Planificación Round-Robin. Weighted Round-Robin. Least-Conection. Weighted Least-Conection.
Configuración de LVS vía NAT (000) Implementar algo que distribuya el trabajo en los diferentes servidores sin que el cliente se de cuenta de que es otro servidor...
Configuración de LVS vía NAT (001) Habilitar forwarding de paquetes en /etc/sysctl.conf: net.ipv4.ip_forward = 1 Instalar ldirectord: apt-get install ldirectord Editar el archivo /etc/ha.d/ldirectord.cf que se encarga de definir los servidores virtuales
Configuración de LVS vía NAT (010)
Configuración de LVS vía NAT (011) Configuramos ldirectord y eliminamos heartbeat: update-rc.d heartbeat start 75 2 3 4 5. stop 05 0 1 6. Detenemos heartbeat y lanzamos ldirectord: /etc/init.d/heartbeat stop /etc/init.d/ledirectord start Verificamos que el NAT esté funcionando:
Configuración de LVS vía NAT (100)
Configuración de LVS vía NAT (101) Reiniciamos los servicios de red y verificamos el funcionamiento de las reglas:
En resumen... Para terminar podemos decir que LVS nos sirve para: Ahorrar dinero reutilizando equipos antiguos. Dar estabilidad a nuestra red de servidores. Aumentar la disponibilidad de nuestros servidores. Aumentar la seguridad.
Preguntas? Gracias!! Boris Quiroz Q. borisq22@gmail.com http://g00fy.homelinux.org