Estou tentando decidir entre usar uma solução de balanceamento de carga da camada 4 para meu datacenter ou uma solução da camada 7. Infelizmente (para minha sanidade mental), meu caso de uso é simples o suficiente para que ambas as soluções funcionem bem, evitando a maioria dos pontos fracos e sem realmente utilizar os pontos fortes do outro. Qualquer que seja a solução que acabemos usando, ela deve ter alta disponibilidade e alto rendimento. Mas estamos planejando usá-lo apenas para equilibrar a carga em um cluster de servidores Web, nenhum dos quais tem requisitos para gerenciamento de sessões "persistente" (cookie ou IP), regras complexas de reescrita - ou, nesse caso, regras de reescrita em todos.
Os balanceadores de carga serão conectados a dois comutadores, ambos com uma conexão independente até a camada de agregação do datacenter e mesclados usando o Rapid Spanning Tree e qualquer protocolo proprietário que os comutadores usem para virtualização. Os balanceadores de carga também serão reticulados entre si através de um cabo cruzado. Todos os servidores no cluster estão conectados aos dois comutadores. Tudo o que os balanceadores de carga precisam fazer é apontar o tráfego sobre eles.
Como é apenas HTTP, posso usar uma solução de balanceamento de carga da camada 7, como HAProxy ou nginx. Mas eu também poderia usar o projeto LVS com ldirectord ou keepalived ou qualquer outra coisa.
Eu tentei dividir os prós e os contras como os vejo, mas isso acaba acabando. O que você recomendaria e por quê? Estou esquecendo de algo?
Dada a falta de vantagem para você ao fazer o balanceamento L7, eu preferiria o balanceamento L4. Sou um grande fã de mantê-lo o mais simples possível, sem sacrificar muito.
O L7 exige que os balanceadores inspecionem os cabeçalhos http nos pacotes que estão passando por eles para o roteamento apropriado, adicionando sobrecarga adicional e um aumento marginal na latência para o usuário final. Parece-me uma despesa inútil se você não ganhar nada com isso.
fonte
Alguns provedores de DNS têm uma funcionalidade simples de failover. Você mencionou quais são seus requisitos e não o que são, mas se tudo o que você precisa é rodízio com failover se algo estiver inativo, então você pode usar, por exemplo, o Failover de zoneedit.com . Dependendo das suas necessidades de alta disponibilidade, isso pode ser bom o suficiente e você pode pular uma camada inteira em sua arquitetura.
fonte