Aumentando a capacidade de carga para sites em crescimento

Aumentando a capacidade de carga para sites em crescimento

Meu site atualmente roda em um servidor web dedicado (com LiteSpeed) e um servidor de banco de dados MySQL dedicado. É um site baseado em download com muito conteúdo gerado pelo usuário, que pode ser transmitido e baixado, além de milhares de miniaturas e conteúdo estático.

Estou no estágio em que o servidor web não consegue mais lidar com a quantidade de tráfego, então estou procurando a melhor forma de aumentar a capacidade considerando a grande quantidade de conteúdo para download.

Meu host sugere espelhar tudo em um segundo servidor web e distribuir a carga entre eles usando DNS Made Easy ou ter meu próprio balanceador de carga (usando ldirector) na frente dos dois servidores web.

Alguém poderia aconselhar se o método acima seria a melhor opção? Alguém tem alguma experiência com DNS Made Easy e/ou ldirector?

Eu apreciaria qualquer ajuda.

Responder1

Em primeiro lugar, você deve entender onde está localizado o gargalo antes de poder fazer qualquer progresso.

Os hosts são rápidos em recomendar novo hardware, mas em muitos casos, a menos que esteja claro que você tem limitações de hardware, o novo hardware pode não produzir melhorias significativas.

Adicionar hardware tem retornos decrescentes se não for feito de maneira inteligente. Passar de um servidor para dois pode dobrar seus recursos, mas você precisará ir de 2-> 4, 4-> 8 para obter o mesmo aumento.

Monitore e meça

Se você não estiver monitorando métricas do sistema, tempos de carregamento e outros dados, esse é o primeiro lugar para começar. Ferramentas gratuitas como Munin e systat são ótimas em soluções de servidor. Ferramentas comohttp://Browsermob.comehttp://webpagetest.orgpode fornecer métricas focadas no usuário.

Segmentar tráfego

Normalmente, uma portagem direta de um site de mídia complexo para outro servidor não é muito eficaz. Freqüentemente, você obterá resultados superiores para seu investimento segmentando o tráfego.

Por exemplo, temos um cliente com um site de jogos em flash muito movimentado (milhões de acessos/dia). Transferimos os jogos em flash para um conjunto de servidores baratos executando Nginx. Esses sistemas eliminam TB de tráfego/mês. Estas são caixas de nível básico e tudo o que elas oferecem é conteúdo estático.

Agora, do lado dos custos, essas duas caixas de entrada combinadas eram 20% mais baratas que o servidor primário. Ganhamos mais de 4x de melhoria de capacidade. Se tivéssemos apenas clonado o servidor primário e balanceado a carga, suspeito que, na melhor das hipóteses, a melhoria teria sido de 1,5 a 1,8x.

Resumindo, fazer algum esforço para entender a essência do problema de desempenho pode economizar muito dinheiro no futuro.

DNS facilitado

Esta é uma solução DNS e não aborda realmente o balanceamento de carga. Eles podem estar falando sobre DNS round-robin. Não tenho certeza por que isso foi incluído na equação neste estágio.

Diretor

Esta é uma ferramenta para gerenciar nós em um cluster LVS. Mais uma vez, não tenho certeza de por que este item específico foi sugerido. Normalmente, usamos apenas um balanceador de carga (hardware ou algo como Nginx/HA-Proxy) e roteamos o tráfego para os servidores back-end apropriados.

Responder2

O balanceamento de carga baseado em DNS não é bom por vários motivos:

  1. Você pode controlar como seus servidores serão acessados ​​e não pode atribuir o tráfego de maneira diferente ou uniforme entre os dois servidores.
  2. Mais importante ainda, esta forma de balanceamento de carga não reconhece falhas no servidor. Assim, você perderá parte do tráfego se um dos servidores falhar inesperadamente.
  3. O cache DNS torna tudo ainda pior.

Prefiro usar uma técnica de balanceamento de carga mais inteligente, como ldirectorou haproxy. Este tipo de balanceamento de carga permite distribuir o tráfego de acordo com as especificações dos servidores e utilizando diversos fatores (carga, número de conexões, etc.).

Há mais uma coisa importante a ser observada. Você disse que tem um banco de dados mysql e conteúdo de usuário no servidor. Se você distribuir o tráfego entre os dois servidores, precisará ter um mecanismo de sincronização entre os dois servidores. Caso contrário, os usuários nem sempre verão os mesmos dados quando acessarem um servidor diferente a cada vez.

informação relacionada