Haproxy 1.5 : Usando ACL para vários dominios

No exemplo abaixo é apresentado o modelo para configuração de um ip público para diversos domínios em load balance no HAProxy.


haproxyfajlinux01

1) Configurando o Haproxy no Servidor :

http://fajlinux.com.br/linux/haproxy-load-balancer-com-o-apache/

2) Modelo de configuração :

Em nosso exemplo teremos os domínios prd1.example.com e prd2.example.com que terão clusters diferentes usando o mesmo ip público.

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 debug
        maxconn   45000 # Total Max Connections.
        daemon
        nbproc      1 # Number of processing cores.
defaults
        timeout server 86400000
        timeout connect 86400000
        timeout client 86400000
        timeout queue   1000s

log     global
        mode    http
        option  httplog
        option  dontlognull

# Dashboard Configuration
listen stats :4997
mode http
stats   enable
stats   hide-version
stats   refresh 30s
stats   show-node
stats realm Haproxy\ Statistics
stats auth admin:haproxy
stats uri       /haproxy

#Definicao do Frontend
frontend http-in
    bind 200.0.0.15:80

    # Default cls1_cluster
   default_backend template_http-lb

    # ACL para Aplicações 
    acl host_cls1 hdr(host) -i prd1.example.com
    acl host_cls2 hdr(host) -i prd2.example.com

    # ACL para Subdiretorios
    acl url_dir1 path_beg -i /dir1


    # Definindo os Backends
    use_backend cls1_cluster if host_cls1
    use_backend cls2_cluster if host_cls2
    use_backend dir if url_dir1

#Backend LB 1
backend cls1_cluster
        mode http
        balance roundrobin
        option forwardfor
        option  http-server-close
        option  http-pretend-keepalive
        server server1 10.0.0.13:80 check
        server server2 10.0.0.14:80 check
        server server3 10.0.0.15:80 check

#Backend LB 2
backend cls2_cluster
        mode http
        balance roundrobin
        option forwardfor
        option  http-server-close
        option  http-pretend-keepalive
        server server1 10.0.0.100:80 check
        server server1 10.0.0.101:80 check

#Backend LB 3
backend dir
        mode http
        balance roundrobin
        option forwardfor
        option  http-server-close
        option  http-pretend-keepalive
        server server1 10.0.0.90:80 check
        server server1 10.0.0.91:80 check

OBS : É necessário sempre definir a tag “default_backend” mesma que se tenha acl para que o HAPROXY tenha uma rota para poder tratar as requisições.

OBS 2: A opção path_beg só funciona em modo HTTP

Referência :

http://www.haproxy.com/doc/aloha/7.0/haproxy/acls.html