O Haproxy pode trabalhar com SSL se eu usar apenas roundrobin?

2

Eu tenho lido sobre balanceamento de carga com o HaProxy e queria saber se você pode usar esse balanceador de carga se eu não fizer nenhum processamento de camada 7? Eu suponho que usando apenas roundrobin no balanceamento de carga de nível TCP poderia trabalhar com conexões SSL? Eu só aceito SSL (sem HTTP qualquer). Eu gostaria de não encerrar o SSL no balanceador de carga (é por isso que eu gostaria de evitar o STunnel).

Obrigado.

    
por code-gijoe 26.03.2011 / 13:22

2 respostas

2

Se você quiser encerrar o SSL no balanceador de carga, não terá escolha a não ser usar algo como Stunnel, Pound ou Nginx. O HA-Proxy não suporta o encerramento do próprio SSL.

Como alternativa, você pode encerrar o SSL em seus servidores da web. Nesse caso, basta configurar o HA-Proxy para passar as conexões TCP (HTTPS / 443) para os servidores da web. Embora lembre-se, neste modo, você não será capaz de fazer qualquer inspeção ou regras L7, o que torna o HA-Proxy tão poderoso.

    
por 26.03.2011 / 18:10
2

Você pode usar o haproxy para balancear a carga de conexões SSL com vários servidores de back-end, para que os servidores back-end encerrem o SSL em vez do haproxy. O único truque é habilitar o Proxy Protocol no haproxy e nos servidores de back-end, para que o endereço IP real do usuário seja preservado.

Por exemplo, se você tiver dois servidores de aplicativos nginx 10.0.0.11 e 10.0.0.12 e um balanceador de carga haproxy 10.0.0.10 . Edite /etc/haproxy/haproxy.cfg adicionando estas linhas:

frontend https-in
    bind *:443
    default_backend https-servers

backend https-servers
        mode tcp
        balance roundrobin
        server srv1 10.0.0.11:443 send-proxy
        server srv2 10.0.0.12:443 send-proxy

Com uma configuração do servidor nginx como:

server {
    server_name  example.com;
    root /opt/example/current/app;

    listen 443 ssl http2 proxy_protocol;

    set_real_ip_from 10.0.0.10/32;
    real_ip_header proxy_protocol;

    ssl_certificate /etc/ssl/example/ssl.crt;
    ssl_certificate_key /etc/ssl/example/ssl.key;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/tmp/app.sock;
    }
}

Isso diz ao haproxy para configurar um proxy da Camada 4 para encaminhar todas as conexões TCP não modificadas para os dois servidores nginx usando roundrobin para balancear as conexões. Os servidores de aplicativos nginx compartilharão a carga de negociação do SSL e analisarão as solicitações HTTP. O Proxy Protocol encaminha o endereço IP do cliente de origem de haproxy para nginx sem ter que modificar o HTTP solicitar cabeçalhos. Observe como informamos ao nginx para confiar no endereço IP do seu balanceador de carga haproxy 10.0.0.10 para nos fornecer o IP real do cliente. O SSL é distribuído entre seus dois servidores de aplicativos nginx e seus arquivos de log nginx mostram o endereço IP do cliente correto para cada solicitação.

Eu escrevi uma postagem no blog descrevendo isso:

link

    
por 13.06.2016 / 23:39