miércoles, 4 de mayo de 2011

LABORATORIO DE ALTA DISPONIBILIDAD Y BALANCEO DE CARGA PARA SERVIDORES WEB

En la actualidad las empresas y organizaciones requieren contar con sistemas de información basada en web para obtener mayor grado de movilidad, aunado a esto existen retos de disponibilidad de información en estas plataformas, por lo que se vuelve necesario contar con estrategias tecnológicas que ayuden a incrementar el factor de disponibilidad de los sistemas de información.

Una plataforma confiable para desarrollar este tipo de estrategias es con el sistema operativo Linux con toda su gama de software libre que ronda alrededor de el.

Para llevar a cabo este laboratorio utilizamos las siguientes piezas de software para la conformación del grupo de servidores:
  1. Sistema Operativo: Linux Centos 5.5 i386
  2. Servidor Web: Apache 2.2.3-43
  3. Cluster: Piranha 0.8.4-16
Con base en lo anterior exponemos el diseño conceptual para el cluster.




En este diseño se muestra que contaremos con 4 equipos que prestaran servicios al cluster como a continuación se detalla:

  • wldb1.cimatzac.local  (Servidor que cumple el rol de load balancer principal)
  • wldb2.cimatzac.local  (Servidor que cumple el rol de load balancer secundario)
  • node1.cimatzac.local  (Servidor que cumple el rol de servidor web 1)
  • node2.cimatzac.local  (Servidor que cumple el rol de servidor web 2)
  • El servidor virtual como su nombre lo índica solo es virtual, no existe, el conjunto de servidores generan esta configuración para que todas las peticiones de los usuarios clientes vallan a un solo lugar y ocultar la funcionalidad de balanceo a nivel usuario.
Configurando el Cluster:

Para Configurar dicho cluster, debemos recordar que para tal escenario contamos con 4 servidores, de los cuales 2 son balanceadores de carga y 2 servidores www.

Lo primero que tenemos que hacer es preparar los servidores www con el servicio de apache, para lo cual ejecutamos lo siguiente:

Servidor WWW1
  • Accedemos al primer servidor web (www1)
    • Shell> ssh root@10.13.0.217
  • Ejecutamos la instalación del servidor
    • Shell> yum –y install httpd
  • Generamos una pagina de prueba
    • Shell> echo test > /var/www/html/test.html
  • Generamos una pagina índice
    • Shell> echo ‘Este es www1’ > /var/www/html/index.html
  • Ejecutamos el servicio
    • Shell> service httpd start
  • Marcamos al servicio para que se ejecute al reiniciar el equipo
    • Shell> chkconfig httpd on
  • Continuando con el servidor www1 ahora hay que configurar parametros arp
    • Agregar las siguientes líneas al archivo /etc/sysctl.conf
    • net.ipv4.conf.lo.arp_ignore=1
    • net.ipv4.conf.lo.arp_announce=2
  • Configurar una interfaz virtual dependiendo de loopback
  • Crear el archivo en /etc/sysconfig/network-scripts/ifcfg-lo:0
    • Agregar el siguiente contenido
    • DEVICE=lo:0
    • IPADDR=10.13.0.219
    • NETMASK=255.255.255.255
    • NETWORK=10.13.0.0
    • # If you're having problems with gated making 127.0.0.0/8 a martian,
    • # you can change this to something else (255.255.255.255, for example)
    • BROADCAST=10.13.0.255
    • ONBOOT=yes
    • NAME=loopback
Servidor WWW2

  • Accedemos al segundo servidor web (www2)
    • Shell> ssh root@10.13.0.218
  • Ejecutamos la instalación del servidor
    • Shell> yum –y install httpd
  • Generamos una pagina de prueba
    • Shell> echo test > /var/www/html/test.html
  • Generamos una pagina índice
    • Shell> echo ‘Este es www2’ > /var/www/html/index.html
  • Ejecutamos el servicio
    • Shell> service httpd start
  • Marcamos al servicio para que se ejecute al reiniciar el equipo
    • Shell> chkconfig httpd on
  • Continuando con el servidor www2 ahora hay que configurar parametros arp
  • Agregar las siguientes líneas al archivo /etc/sysctl.conf
    • net.ipv4.conf.lo.arp_ignore=1
    • net.ipv4.conf.lo.arp_announce=2
  • Configurar una interfaz virtual dependiendo de loopback
  • Crear el archivo en /etc/sysconfig/network-scripts/ifcfg-lo:0
    • Agregar el siguiente contenido
    • DEVICE=lo:0
    • IPADDR=10.13.0.219
    • NETMASK=255.255.255.255
    • NETWORK=10.13.0.0
    • # If you're having problems with gated making 127.0.0.0/8 a martian,
    • # you can change this to something else (255.255.255.255, for example)
    • BROADCAST=10.13.0.255
    • ONBOOT=yes
    • NAME=loopback
El siguiente paso es configurar los servidores que cuentan con el rol de load balancer.

Servidor WLDB1.

  • Accedemos al primer servidor load balancer(wldb1)
    • Shell> ssh root@10.13.0.215
  • Ejecutamos la instalación del administrador del cluster
    • Shell> yum install piranha ipvsadm –y
  • Comenzamos a crear la configuración para el cluster
  • Creamos un archivo para ipvsadm
    • Shell> touch /etc/sysconfig/ipvsadm
  • Habilitamos ipforward en el sistema operativo
    • Shell> sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
  • Leemos nuevamente el archivo sysctl.conf
    • Shell> sysctl –p
  • Asignamos una contraseña al administrador web del cluster
    • Shell> piranha-passwd
  • Iniciamos el administrador piranha-gui 
    • Shell> service piranha-gui start
  • Configuramos el servicio de piranha-gui para que inicie automáticamente cuando reiniciemos el sistema operativo
    • Shell> chkconfig piranha-gui on
Servidor WLDB2.

  • Accedemos al segundo servidor load balancer(wldb2)
    • Shell> ssh root@10.13.0.216
  • Ejecutamos la instalación del administrador del cluster
    • Shell> yum install piranha ipvsadm –y
  • Comenzamos a crear la configuración para el cluster
  • Habilitamos ipforward en el sistema operativo
    • Shell> sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
  • Leemos nuevamente el archivo sysctl.conf
    • Shell> sysctl –p
El cluster piranha provee una interfaz gráfica de administración por medio de web por lo que procedemos a configurarla a través de esta interfaz.

Acceder a la pagina 
http://10.13.0.215:3636 con el usuario piranha y contraseña la que se configuro en el paso anterior.

  • Configuramos los parámetros globales.

  • Configurar la redundancia del load balancer
  • Configurar el Virtual Server, el cual es el que publicara los servicios balanceados como único frente para brindar el servicio de http en este caso.

  • Configurar los servidores reales que estarán prestando el servicio de http.

  • Configurar los servidores reales que estarán prestando el servicio de http.



  • Ahora copiamos el archivo de configuración del cluster del servidor wldb1 al servidor wldb2
    • Shell> scp /etc/sysconfig/ha/lvs.cf root@10.13.0.216:/etc/sysconfif/ha/lvs.cf
  • Arrancar el servicio pulse en ambos servidores load balancers
    • Shell> service pulse start
    • Shell> chkconfig pulse on

Hasta ahora hemos terminado la configuración para el cluster, lo que resta es probarlo.

  • Desde varios equipos de computo por medio de un explorador web acceder a la dirección:
    • http://10.13.0.219
  • Verificar que para algunos clientes aparecerá la siguiente leyenda:
    •  “Este es www1”
  • Y para otros clientes aparecerá la siguiente leyenda:
    • “Este es www2”

No hay comentarios:

Publicar un comentario