Funilizando o tráfego http

1

Eu tenho uma situação em que um grande lote de servidores (X), sob demanda, precisa solicitar dados de um conjunto menor de servidores Web (Y).

O pior cenário é se todos os servidores no X decidirem buscar solicitações diferentes para um servidor em Y. Isso seria uma quantidade X de conexões, o que poderia ser uma grande explosão de tráfego. O melhor cenário é se 1 servidor no X atingir 1 servidor em Y em conjunto. A vida não funciona assim.

Uma idéia para entreter é colocar um proxy, semelhante ao squid entre X e Y. Todos os servidores X podem se conectar a esse proxy, mas resultariam em algumas conexões persistentes (keepalive) para Y. Se os poucos dissessem , 3 ou 4, então afunilaria. Se pudéssemos, então, limitar o limite dessas conexões e o tráfego decidir elevar-se excepcionalmente alto, não machucaria ninguém além de nós mesmos.

Pensamentos?

    
por spencer p 14.06.2010 / 22:15

2 respostas

1

Já considerou o balanceamento de carga? Existe uma variedade de tecnologias que fazem isso. Minha preferência é LVS , mas outras soluções aplicáveis ao balanceamento de carga do servidor Web incluem:

O LVS tem diferentes agendadores , que especificam exatamente como as conexões são manuseado. Também é muito leve, eu o uso em pequenos hardwares de commodities que lidam com o tráfego de um site de alto volume.

    
por 14.06.2010 / 22:22
1

Dê uma olhada no nginx em uma configuração de proxy / armazenamento em cache reverso ou se você estiver mais confortável com o Apache, o Apache2 + mod_proxy , mod_proxy_balancer e mod_cache .

    
por 14.06.2010 / 22:24