haproxy com vários IP em um servidor

2

Eu uso o haproxy para carregar várias máquinas virtuais do balanceador de carga (serviços da web). Cada máquina virtual tem vários endereços IP.

Qual é a melhor prática para configurar isso no haproxy? Agora mesmo minha configuração é cada IP da máquina virtual tem uma entrada "listen" no haproxy com dois servidores reais correspondentes.

Posso perguntar se pode ser revisado como vários "listen" e apenas dois servidores de back-end. Porque todos os "listen IP" são encaminhados apenas para a mesma máquina virtual.

global
    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    stats socket /var/run/haproxy.stat mode 666
    maxconn 4096
    user haproxy
    group haproxy
    daemon

defaults
    mode http
    log global

    log 127.0.0.1 local0 notice
    option dontlognull
    option redispatch
    timeout connect 10000 # default 10 second time out if a backend is not foun
    timeout client 300000
    timeout server 300000
    maxconn 60000
    retries 3

listen stats

    bind xx.xxx.xxx.xxx:8888
    stats uri /
    stats realm Haproxy\ Statistics
    stats auth user:pass
    stats refresh 20

    listen server 66.xxx.xxx.36:80
    mode http
    balance roundrobin
    cookie SERVERID insert nocache indirect
    option http-server-close
    option forwardfor
    option httplog
    server server1 66.xxx.xxx.66:80 cookie sv1 check inter 5s rise 2 fall 5
    server server2 66.xxx.xxx.68:80 cookie sv2 check inter 5s rise 2 fall 5

    listen app 66.xxx.xxx.36:80
    mode http
    balance roundrobin
    cookie SERVERID insert nocache indirect
    option http-server-close
    option forwardfor
    option httplog
    server app1 66.xxx.xxx.66:80 cookie ap1 check inter 5s rise 2 fall 5
    server app2 66.xxx.xxx.68:80 cookie ap2 check inter 5s rise 2 fall 5
    
por den 12.09.2011 / 16:32

1 resposta

5

existem duas coisas que você pode fazer. Primeiro, você pode ter quantas linhas "bind" quiser em uma seção "listen" ou "frontend". Então, se a única coisa que muda é o IP, então é a melhor coisa a fazer. Em segundo lugar, se você tiver algum motivo para aplicar um processamento diferente a cada IP (por exemplo, ACLs diferentes ou regras de reconfiguração), use "frontend" + "backend" em vez de "listen". Uma seção "listen" é exatamente um frontend mais um backend, ambos na mesma seção. Ao ter vários frontends, você pode definir o tipo de processamento desejado em cada endereço IP e fazer com que todos utilizem o mesmo backend (usando a regra "default_backend"). E todos os seus servidores só serão colocados neste único backend, com o mesmo nome de cookie, mesmo algoritmo LB, mesmo verificações de saúde, etc ...

Esperando que isso ajude, Willy

    
por 18.09.2011 / 12:40

Tags