Eu tenho 20 servidores em um local e gostaria de fazer o balanceamento de carga. Isso pode ir até 100 em qualquer caso. Existe algum método conhecido para fazer isso? Eu gostaria também de ter algum tipo de mecanismo que, quando as consultas dos clientes, por exemplo, service.example.com, ele continuará usando o mesmo servidor até que a máquina seja retirada do cluster devido à falha. O cliente faz uma consulta DNS a cada minuto e vamos supor que o TTL de registro DNS de cima para baixo seja de 30 a 60 segundos, enquanto outros podem estar bem 24h, então cada sessão pode ser válida por até 24h após a consulta inicial e ser mudado para outro servidor.
Acho que os balanceadores de carga L4-L7 são inúteis, pois acho que eu poderia usar apenas o DNS.
Os protocolos são apenas conexões TCP baseadas em binários, bem como HTTP.
Eu estava pensando que para conexão binária (como sem nenhum protocolo), eu poderia usar o round-robin no DNS, então toda vez que eu consultava o DNS, obtinha uma resposta diferente.
Para HTTP, isso é algo que eu não sei. Eu poderia colocar talvez HAProxy e é isso, mas para o DNS não tenho certeza.
Eu estava pensando uma vez sobre o método a seguir. Envie o cliente para algum "master.example.com", que é o servidor HTTP fazendo apenas redirecionamentos, o que gerará o FQDN com uniqueid, o que significa que é como um id de sessão. Desta forma, este FQDN irá sempre resolver para o mesmo número ip e pode ser usado apenas para o ip que o solicitou, pelas próximas 24h ou para sempre, até que o servidor seja desligado.
Então, parece o seguinte:
http://redirect.example.com/resource => http://67hkkdbvh.example.com/resource
Agora a sessão é assim:
1st minute: http://67hkkdbvh.example.com/resource/1 TTL 60s
2nd minute: http://67hkkdbvh.example.com/resource/2 TTL 60s
Se o 67hkkdbvh morrer, o cliente solicita redirecionamento novamente.
Agora não sei como usar o HAProxy para ajudar com isso