Configuração de haproxy com configuração de subdomínio

7

Esperando que alguém possa ajudar a confirmar se isso significa trabalhar? Estou tentando encaminhar 3 tráfego de subdomínio para o mesmo host haproxy;

Aqui está 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.mydomain.com, sub2.mydomain.com e sub3.mydomain.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, por exemplo;

sub1.mydomain.com para 8081 sub2.mydomain.com para 8082 e sub3.mydomain.com para 8083

A aplicação requer passagem SSL para apenas o tráfego da porta 8081, então acredito ter que usar o modo tcp para isso, o outro tráfego para 8082 e 8083 também é SSL, mas pode ser terminado na Haproxy, mas para os testes eu fui com todo o modo TCP.

A minha secção de configuração para o conseguir 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 por meio do HAproxy, por exemplo, para o tráfego 8082, isso gera 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.

P.S. Não consigo incorporar nenhuma imagem para clareza aqui, já que é minha primeira postagem: - (

    
por Global Learning 20.03.2015 / 18:05

1 resposta

8

Com o modo TCP, o HAProxy não decodificará a solicitação HTTP, portanto, o acl lines não fará nada e o frontend nunca poderá corresponder a um back-end, conforme mostrado pelos logs que você digitou: mytraffic/<NOSRV> significa que não foi possível escolher um back-end ou servidor.

Você teria que dividir os três subdomínios em dois frontends diferentes, cada um com seus próprios IPs, já que todos eles estão se conectando na porta 443. Um para passagem, outro para terminação SSL e troca de conteúdo usando mode http . A ressalva aqui é que, se você adicionar um quarto subdomínio (sub4.mydomain.com) que também requer passagem, você precisará de um terceiro frontend e IP.

Você também precisa criar registros CNAME ou A diferentes no DNS para que os subdomínios certos apontem para os IPs corretos.

Dada esta configuração de DNS:

10.10.10.100        A         haproxy01-cs.mydomain.com
10.10.10.101        A         haproxy01-pt1.mydomain.com
10.10.10.102        A         haproxy01-pt2.mydomain.com
sub1.mydomain.com   CNAME     haproxy01-pt1.mydomain.com
sub2.mydomain.com   CNAME     haproxy01-cs.mydomain.com
sub3.mydomain.com   CNAME     haproxy01-cs.mydomain.com
sub4.mydomain.com   CNAME     haproxy01-pt2.mydomain.com

A configuração do HAproxy seria algo como isto:

#Application Setup 
frontend ContentSwitching

  bind 10.10.10.100:443
  mode  http
  option httplog
  acl host_sub2 hdr(host) -i sub2.mydomain.com
  acl host_sub3 hdr(host) -i sub3.mydomain.com
  use_backend sub2_nodes if host_sub2
  use_backend sub3_nodes if host_sub3

frontend PassThrough1
  bind 10.10.10.101:443
  mode  tcp
  option tcplog
  use_backend sub1_nodes     

frontend PassThrough2
  bind 10.10.10.102:443
  mode  tcp
  option tcplog
  use_backend sub4_nodes

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 http
  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 http
  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

backend sub4_nodes
  mode tcp
  balance roundrobin
  stick-table type ip size 200k expire 30m
  stick on src
  server node1 10.10.10.101:8084 check
  server node2 10.10.10.102:8084 check
    
por 20.03.2015 / 19:12