No exemplo abaixo é apresentado o modelo para configuração de um ip público para diversos domínios em load balance no HAProxy.
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