[CentOS-es] HAproxy Keepalived

Mauricio Cesar Ramirez Torres mauricio.ramirez en axtop.com
Jue Nov 19 19:08:15 UTC 2009


Buen día, estoy intentando hacer un sitio web de alta disponibilidad,
para eso leí un poco y opte por haproxy y keepalived, trate de seguir
varios manuales, pero no obtuve buen resultado, así que los mezcle un
poco, pero solo con algunas mejorías, la idea general es algo así:

2 balanceadores lb1 y lb2
2 servidores web serv1 y serv2

una ip que comparten los 2 balanceadores (1.98)

si hago ip addr sh eth0 en ambos balanceadores me muestra la ip que
tienen y también la 1.98.

ya probé incluso cambiando de distribución (ubuntu, Debian y CentOS)
pero el resultado es el mismo y ese es mi problema, cuando "enciendo" el
servicio lo puedo ver y me alterna las peticiones a cada servidor web,
si apago un servidor web dirige toda la carga al que queda encendido, de
igual forma si apago un balanceador, pero mi problema es que solo "veo"
el servicio desde los balanceadores, si trato de acceder desde otro
equipo no puedo, tarda un buen tiempo tratando de conectarse y se corta
por tiempo excedido.

abajo están mis configuraciones, agradezco sus comentarios.

haproxy.cfg

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen webfarm 192.168.1.98:80
       mode http
       stats enable
       balance roundrobin
       option httpclose
       option forwardfor
       server webA 192.168.1.86:80 cookie A check
       server webB 192.168.1.85:80 cookie B check

# en la linea server webA ...... también intente cambiar la etiqueta
webA por el nombre completo del server pero no hubo ningún cambio,
supongo que es solo una etiqueta cierto????

------------------------------------------------------------------

keepalived.conf

global_defs {
# quite premeditadamente la sección de notificación por correo
      smtp_connect_timeout 30
      lvs_id LVS_MAIN
}
virtual_server 192.168.1.98 80 {
            delay_loop 30
            lb_algo wrr
            lb_kind NAT
            persistence_timeout 50
            protocol TCP
            real_server 192.168.1.86 80 {
               weight 1
	       TCP_CHECK {
        	  connect_port 80
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 2
	      }
	   }
            real_server 192.168.1.85 80 {
               weight 2
               TCP_CHECK {
               connect_port 80
               connect_timeout 3
               nb_get_retry 3
               delay_before_retry 2
            }
	}
}
vrrp_script chk_haproxy {
   script "killall -0 haproxy"
   interval 2
   weight 2
}
vrrp_instance VI_1 { --- VI_2 en el secundario
    state MASTER  ------ este es substituido en el secundario por BACKUP
    interface eth0
    virtual_router_id 51
    priority 101 ---- prioridad mas baja en el secundario
    advert_int 1
    virtual_ipaddress {
        192.168.1.98
    }
	track_script {
		chk_haproxy
	}
}


Más información sobre la lista de distribución CentOS-es