Precisa de sugestões de configuração do HAproxy + Varnish + nginx

5

Atualmente, tenho dois balanceadores de carga que executam o HAProxy, que encaminha solicitações para os back-ends, cada qual executando o cache de verniz na frente do nginx. Pensei que isso distribuiria a maior parte da largura de banda entre os servidores de back-end, mas meus balanceadores de carga parecem estar usando centenas de gigabytes de largura de banda por mês, o que é próximo do que os backends usam. Eu suponho que isso faz sentido porque o tráfego é todo roteado através dos balanceadores de carga?

Meus balanceadores de carga e back-ends estão localizados em diferentes partes dos EUA. Seria mais eficiente se eu apenas executasse o HAProxy e o Varnish nos frontends e apenas o nginx nos backends? Obrigado!

    
por Lin 08.08.2009 / 01:23

2 respostas

8

Para sua primeira pergunta: Sim, na configuração HAProxy normal, todo o tráfego flui pelo balanceador de carga quando chega aos seus servidores e quando sai novamente dos servidores para os clientes . Isso é mais ou menos sempre assim com todos os balanceadores de carga, já que eles geralmente são implementados como proxies HTTP ou caixas de roteamento de NAT / nível de IP. A exceção é quando "retorno direto do servidor" (DSR) é usado, veja esta explicação do inlab.com sobre qual DSR é .

My load balancers and backends are located in different parts of the US

Ehh, por quê? Se você estiver usando o roteamento de carga geográfica ou multicast, não esperaria que você fizesse essas perguntas. No caso de uso normal, você deve ter seus servidores no mesmo rack e em uma LAN de baixa latência, livre de colisões. Isso tornaria a vida mais fácil para o seu software de servidor e proporcionaria mais desempenho de seus servidores, além de características de desempenho mais consistentes e confiáveis ...

A configuração canônica do software que você está usando seria algo assim:

nginx (para compactação HTTP) - > Cache de verniz (para armazenamento em cache) - > Balanceador de carga de nível HTTP (HAProxy ou nginx ou o built-in do Varnish) - > servidores da Web.

Opcionalmente, se sua carga for alta, você poderá ter vários servidores nginx ou verniz na frente; mas isso é para sites com milhares de solicitações por segundo.

Para sua segunda pergunta Quando você pergunta "mais eficiente", estou em dúvida sobre o que você quer dizer. Mais eficiente como em menor tráfego entre os servidores? Marginalmente, como o cache de verniz impede que o tráfego avance mais. Mais eficiente em relação ao uso da CPU - você pode simplesmente embaralhar os serviços para servidores físicos menos carregados, contanto que você mantenha a estrutura lógica da mesma forma.

    
por 10.08.2009 / 22:54
12

Você recolheu ... Coloque o verniz na frente dos balanceadores de carga, para que eles possam responder o maior número possível de solicitações no início (se você tiver muito tráfego para um verniz, então carregue balancear aqueles com um balanceador de carga TCP de baixa sobrecarga como o ldirectord) então faça com que o Varnish passe de volta para as instâncias HAProxy e vá de lá. Ter o Varnish os HAProxies parece totalmente atrasado para mim - você quer lançar o máximo de tráfego o mais cedo que puder.

    
por 08.08.2009 / 08:31