O Nginx deve estar na frente do HAProxy ou oposto?


11

Tenho pouca experiência em design de arquitetura de infra-estrutura de sites. Eu sei que pode ser 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 web para que seja necessário algum balanceamento de carga.

3) Precisa de cache e compactação HTTP para aumentar o desempenho.

4) Alguns pedidos (por exemplo, upload de imagens) devem ser roteados para servidores de back-end dedicados. Portanto, o balanceamento baseado em URL é necessário.

Eu sei que o NginX e o HAProxy são ótimos Proxy Reverso de código aberto e / ou Load Balancer. Como o HAProxy não suporta SSL, enquanto o balanceamento de carga do 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 o oposto?

obrigado

Respostas:


7

Se você planeja disponibilizar todos os servidores Web por HTTPS, precisará instalar o Nginx na frente do HAProxy. Com essa configuração, seu Nginx manipulará todo o trabalho SSL e enviará o tráfego HTTP descriptografado diretamente para o front end HAProxy, que fará o balanceamento de carga das solicitações para seus servidores da Web com base nas regras que você especificar.

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

Se você precisar apenas de SSL em um servidor (sem balanceamento de carga), poderá 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 Web (porque o HAProxy reescreve esse endereço). O IP estará nos logs HAProxy, se você ativá-lo;)


Obrigado. uma vez que "Algumas solicitações (por exemplo, upload de imagens) devem ser roteadas para servidores de back-end dedicados. Portanto, o balanceamento baseado em URL é necessário". (conforme atualizei a pergunta). O LVS pode não atender aos meus requisitos.
Morgan Cheng

BTW, a ocultação de endereço IP por HAProxy é apenas para HTTPS, ou para HTTP também?
Morgan Cheng

@ Morgan, Ocultar o ip é apenas para HTTPS.

É apenas para back-end no modo TCP, portanto, qualquer coisa que não seja HTTP não verá o endereço IP, pois é enviado como um cabeçalho HTTP (X-Forwarded-For).

Não exatamente. O Haproxy pode se conectar ao servidor usando o endereço IP do cliente, mas isso requer cooperação do kernel (por exemplo: recurso TPROXY). Isso deve ser evitado sempre que possível.
Willy Tarreau


1

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


2
Dizem que o balanceamento de carga do NginX é simples, apenas uma abordagem de rodízio. Essa é a razão pela qual estou levando o HAProxy em consideração.
Morgan Cheng

1
É dito corretamente; Eu já disse isso. É por isso que eu não recomendo usar o nginx como um balanceador de carga, e você não encontrará nenhuma menção ao uso do nginx como um balanceador de carga nesta (ou em qualquer outra) resposta minha.
womble

Isso é apenas se você tiver medo de usar sua própria compilação a partir da fonte (ou portas no FreeBSD). Existem vários módulos de terceiros que aprimoram o balanceamento de carga: wiki.nginx.org/3rdPartyModules
Martin Fjordvald

2
Melhore, sim. Faça adequado, não. Meus pensamentos sobre isso podem ser encontrados em hezmatt.org/~mpalmer/blog/2011/07/24/… (procure por "não é bonito").
womble
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.