Esperando que alguém possa ajudar a confirmar se isso deve funcionar? Estou tentando rotear 3 tráfego de subdomínio para o mesmo host haproxy;
Aqui está a minha configuração
haproxy com uma interface ip 10.10.10.100 e nome do DNS haproxy01.mydomain.com
3 registros CNAME associados a ele; sub1.meudominio.com, sub2.meudominio.com e sub3.meudominio.com
todo o tráfego de entrada é para a porta 443.
Existem dois servidores de aplicativos back-end que aceitam tráfego em três portas 8081, 8082, 8083, digamos;
sub1.meudominio.com para 8081 sub2.meudominio.com para 8082 e sub3.meudominio.com para 8083
O aplicativo requer passagem SSL apenas para o tráfego da porta 8081, por isso acredito que devo usar o modo tcp para ele, o outro tráfego para 8082 e 8083 também é SSL, mas pode ser finalizado no Haproxy, mas, para os testes, fui com todo o TCP modo.
Minha seção de configuração para conseguir isso está abaixo;
#Application Setup
frontend mytraffic
bind *:443
mode tcp
acl host_sub1 hdr(host) -i sub1.mydomain.com
acl host_sub2 hdr(host) -i sub2.mydomain.com
acl host_sub3 hdr(host) -i sub3.mydomain.com
use_backend sub1_nodes if host_sub1
use_backend sub2_nodes if host_sub2
use_backend sub3_nodes if host_sub3
option tcplog backend sub1_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8081 check
server node2 10.10.10.102:8081 check
backend sub2_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8082 check
server node2 10.10.10.102:8082 check
backend sub3_nodes
mode tcp
balance roundrobin
stick-table type ip size 200k expire 30m
stick on src
server node1 10.10.10.101:8083 check
server node2 10.10.10.102:8083 check
# APPLICATION SETUP END
Quando tento acessar os servidores de aplicativos via HAproxy, por exemplo, para o tráfego 8082, ele lança os logs;
localhost haproxy [6097]: xxxx: 51241 [20 / Mar / 2015: 12: 19: 38.720] mytraffic mytraffic / -1 / -1 / 0 0 SC 0/0/0/0/0 0/0
aprecie algumas orientações sobre essa configuração.
PS Não consigo incorporar nenhuma imagem para fins de clareza aqui, pois é meu primeiro post :-(
Respostas:
Com o modo TCP, o HAProxy não decodifica a solicitação HTTP, portanto suas
acl
linhas não fazem nada e o front-end nunca poderá corresponder a um back-end, como mostra os logs inseridos:mytraffic/<NOSRV>
significa que não foi possível escolher um back-end ou servidor.Você precisaria dividir os 3 subdomínios em 2 frontends diferentes, cada um com seus próprios IPs, pois todos estão conectados na porta 443. Um para passagem, o outro para a terminação SSL e a alternância de conteúdo usando
mode http
. A ressalva aqui é que, se você adicionasse um quarto subdomínio (sub4.meudominio.com) que também exigia passagem, você precisaria de um terceiro frontend e IP.Você também precisará criar registros CNAME ou A diferentes no DNS, para que os subdomínios certos apontem para os IPs certos.
Dada esta configuração de DNS:
A configuração do HAproxy ficaria assim:
fonte
ca-file
everify optional
opções para abind
declaração. Se você fizer isso, poderá ter um único frontend vinculado a um IP e, em seguida, o conteúdo alternará para os back-end apropriados, conforme exigido pelo cabeçalho do host . Para confirmar que a autenticação mútua trabalhou você pode criar uma acl comoacl ClientSSLValid ssl_c_verify 0
, em seguida, adicioná-lo como uma outra condição para ause_backend
declaração comouse_backend sub1_nodes if host_sub1 ClientSSLValid