O Nginx deve estar na frente do HAProxy ou oposto?

10

Tenho pouca experiência em design de arquitetura de infra-estrutura de sites. Eu sei que pode ser uma situação específica. O site deve:

1) Precisa de suporte HTTPS para algumas páginas (por exemplo, página de login), enquanto outras são apenas páginas HTTP.

2) Precisa de vários servidores da web para que seja necessário um balanceamento de carga.

3) É necessário o armazenamento em cache e a compactação HTTP para melhorar o desempenho.

4) Algumas solicitações (por exemplo, upload de imagens) devem ser encaminhadas para servidores de back-end dedicados. Portanto, o balanceamento baseado em URL é necessário.

Eu sei que o NginX e o HAProxy são ambos bons Proxy Reverso de origem aberta e / ou Load Balancer. Como o HAProxy não suporta SSL, enquanto o balanceamento de carga Nginx não é tão bom quanto o HAProxy. Eu vou pegar os dois.

Então, devo colocar o Nginx (como proxy reverso) na frente do HAProxy (como balanceador de carga), ou oposto?

Obrigado

    
por Morgan Cheng 24.07.2011 / 09:32

3 respostas

6

Se você planeja ter cada servidor da Web disponível por HTTPS, será necessário instalar o Nginx na frente do HAProxy. Com essa configuração, o seu Nginx irá lidar com todo o trabalho SSL e enviará o tráfego HTTP descriptografado diretamente para o frontend HAProxy, que então fará o balanceamento de carga dos pedidos para os servidores da web com base nas regras especificadas.

A idéia de usar o LVS, como mencionado por womble , é que ele é um pouco menos intrusivo, já que não mantém uma conexão entre o seu servidor web e o cliente que acessa o site. Por outro lado, o LVS fornecerá apenas balanceamento de carga simples e não permitirá que você encaminhe solicitações com base na extensão do arquivo, na URL solicitada, nos cabeçalhos etc. É por isso que o HAProxy é usado em muitas situações.

Se você precisa apenas de SSL em um servidor (sem balanceamento de carga), então é seguro usar o HAProxy para tudo sem usar o Nginx. Por outro lado, você terá um problema ao não conseguir ver o endereço IP de origem do cliente nos logs HTTPS do servidor da Web (porque o HAProxy reescreve esse endereço). O IP estará nos logs HAProxy se você ativá-lo embora;)

    
por 24.07.2011 / 22:24
2

haproxy desde o v. 1.5, lançado em 2014 , suporta SSL como um encanto, incluindo o SNI.

Portanto, eu colocaria o haproxy na frente do nginx.

    
por 15.08.2016 / 14:22
1

Você deve apenas usar o nginx, ele faz tudo que você precisa como um servidor web frontend. Se você precisar de balanceamento de carga front-end, use um balanceador de carga L3, como Linux Virtual Server , porque ele não entra no como o HAproxy faz. Use o HAproxy, se necessário, para fazer o balanceamento de carga nos bastidores, como o balanceamento de solicitações para um pool de trabalhadores de back-end.

    
por 24.07.2011 / 09:58