Balanceador de carga sem ponte entre cliente e servidor

1

Eu fiz esta pergunta aqui primeiro. Eventualmente, fui aconselhado a perguntar aqui.

Estou desenvolvendo um software do lado do servidor que usa ASIO para comunicação de soquete TCP entre cliente e servidor. Tudo é feito em C ++ porque o software é usado para transferências de dados de baixa latência extremamente rápidas.Eu preciso de uma capacidade de distribuir conexões de entrada do cliente entre diferentes instâncias (processos) do meu servidor. Então aprendi um novo termo - load balancer . Agora, como eu uso C ++ e ASIO, comecei a procurar por bibliotecas de código aberto disponíveis. Eu encontrei este . O que eu entendi foi que este é um servidor proxy que media a conexão entre cliente e servidor. Isto é, mantém uma ponte entre os dois.

Eu tenho as seguintes perguntas:

Todos os servidores proxy funcionam assim?

É possível criar um servidor proxy (ou balanceador de carga) que apenas redirecione uma conexão de entrada para uma instância do servidor sem servir como um mediador do tráfego de soquete aberto durante a conexão ativa?

Mais uma vez, o que eu finalmente quero é que meu balanceador de carga receba a solicitação de conexão de entrada de um cliente, "informe" ao meu servidor para obter essas informações de conexão (como endereço IP, por exemplo) e prossiga com a conexão direta entre o servidor e o cliente.

    
por Michael IV 27.10.2017 / 21:09

1 resposta

3

Um loadbalancer / ADC "normal" (F5 BIG-IP, Citrix Netscaler, etc.) fará conexões proxy.

O que você deseja são as técnicas de balanceamento de carga com base em DNS do GSLB (ou semelhantes) (não o round-robin do DNS). Eu sei que tanto o F5 quanto o A10 também possuem implementações GSLB, tenho certeza que existem muitos outros.

Como isso funciona basicamente é que você terá uma caixa de trabalho que é, é monitorar os servidores e responder a consultas DNS de clientes com o IP do servidor que o cliente deve ir. Você terá seu dns interno (ou externo) normal, mas então você tem alguns desses escopos DNS deletados para a caixa do GSLB.

Funcionalmente, seu cliente tentará se conectar pelo nome, ele consultará seu servidor dns, que enviará o cliente para a caixa GSLB para obter a resposta. A caixa do GSLB responderá à consulta de DNS com o servidor que ele julgar mais adequado (ou o próximo na linha, ou como você o tenha configurado). O cliente continuará a acertar o mesmo IP para o TTL desse registro, quando será consultado novamente a caixa do GSLB.

Nesse sentido, o balanceamento de carga nunca está entre o cliente e o servidor, apenas informa ao cliente para onde ir. E nem o cliente nem o servidor precisam de nenhum conhecimento sobre isso. No que diz respeito ao cliente, é apenas uma consulta de DNS, não é necessário saber se é condicional.

    
por 27.10.2017 / 21:49