Aumentando a capacidade de carga para o site em crescimento

2

Meu site atualmente é executado em um servidor web dedicado (com LiteSpeed) e servidor de banco de dados MySQL dedicado. É um site baseado em downloads 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 da web não pode mais lidar com a quantidade de tráfego, por isso 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 da Web e distribuir a carga entre eles usando o DNS Made Easy ou ter meu próprio balanceador de carga (usando o ldirector) na frente dos dois servidores da 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 gostaria de receber ajuda.

    
por markxi 18.11.2011 / 17:56

2 respostas

2

Primeiramente, você deve entender onde o gargalo está localizado antes de poder fazer algum progresso.

Os hosts são rápidos em recomendar novos hardwares, 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. Ir de um servidor para dois pode dobrar seus recursos, mas você precisa ir de 2 a 4, 4 a 8 para obter o mesmo impacto.

Monitorizar e medir

Se você não estiver monitorando as métricas do sistema, os tempos de carregamento e outros dados, esse será o primeiro lugar para começar. Ferramentas gratuitas como Munin e systat são ótimas em soluções de servidor. Ferramentas como o link e o link podem fornecer métricas com foco no usuário.

Tráfego de segmentos

Normalmente, uma porta direta de um site de mídia complexo para outro servidor não é muito eficaz. Com frequência, você obtém resultados superiores para seu investimento segmentando o tráfego.

Por exemplo, temos um cliente com um site de jogos flash muito ocupado (milhões de acessos / dia). Descarregamos os jogos em flash para um pool de servidores baratos que executam o Nginx. Esses sistemas empurram TBs de tráfego / mês. Estas são caixas de nível de entrada e tudo o que elas servem é o conteúdo estático.

Agora, do lado do custo, essas duas caixas de entrada combinadas eram 20% mais baratas que o servidor principal. Nós ganhamos mais do que uma melhoria de capacidade de 4x. Se tivéssemos acabado de clonar o servidor primário e carregar balanceado, suspeito que, na melhor das hipóteses, a melhoria teria sido 1.5-1.8x.

Em suma, colocar um pouco de esforço em compreender as intenções do problema de desempenho pode economizar muito dinheiro posteriormente.

DNS facilitado

Esta é uma solução de DNS e não aborda realmente o balanceamento de carga. Eles podem estar falando sobre o DNS round-robin. Não tenho certeza porque isso foi trazido para a equação nesta fase.

Ldirector

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

    
por 18.11.2011 / 18:15
0

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, essa forma de balanceamento de carga não reconhece a falha do servidor. Assim, você perderá parte do tráfego se um dos servidores falhar inesperadamente.
  3. O armazenamento em cache do
  4. DNS torna isso ainda pior.

Eu prefiro usar uma técnica de balanceamento de carga mais inteligente como ldirector ou haproxy . Esse tipo de balanceamento de carga permite que você distribua o tráfego de acordo com as especificações do servidor e use vários fatores (carga, número de conexões, etc.).

Há mais uma coisa importante a notar. Você disse que tem um banco de dados mysql e conteúdo do usuário no servidor. Se você estiver distribuindo 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.

    
por 18.11.2011 / 19:30