Existe uma maneira de redirecionar o tráfego para outra porta caso o serviço que escuta a porta original não responda?

Existe uma maneira de redirecionar o tráfego para outra porta caso o serviço que escuta a porta original não responda?

Esta é uma pergunta bastante específica, mas para a qual não consegui encontrar uma resposta. Estou executando um conjunto de serviços em um contêiner LXC no Ubuntu 16.04 LTS, especificamente servidores de jogos. No entanto, sabe-se que esse serviço falha, assim como seu wrapper. Portanto, para manter o tempo de atividade e o equilíbrio de carga onde os serviços estão suspensos ou sem resposta, preciso ser capaz de redirecionar o tráfego UDP e TCP com base no fato de um serviço ou serviços responderem ou não.

Para explicar melhor o cenário, tenho um contêiner LXC exposto a um IP público, com outro contêiner LXC aninhado com iptables redirecionando o tráfego na porta 21025 para o contêiner aninhado. Dentro desse contêiner, se os serviços que aceitam o tráfego (chamados ServiceWrappere ServiceMain) não responderem, o tráfego deverá ir para outro serviço em outra porta que chamaremos de ServiceFallback. Caso contrário, o tráfego seguirá conforme o esperado para o ServiceWrapper, que o enviará para ServiceMain.

Minha tentativa atual de implementar esse tipo de roteamento tem sido usar o HAProxy para balancear a carga entre ServiceWrappere ServiceFallback, no entanto, à primeira vista, parece que o HAProxy não detecta ou permite o redirecionamento de portas adicionais com base em como está balanceando a carga ServiceWrappere ServiceFallback. Veja bem, ServiceMainaceita tráfego UDP em outra porta para facilitar consultas do servidor, como versão, nome do host, etc. E até onde eu sei, o HAProxy não roteará ou detectará tráfego UDP.

Estou semi-desesperado para fazer isso funcionar. Eu sei que é possível porque a configuração exata que estou tentando realizar funcionou para um dos meus concorrentes diretos, porém eles parecem relutantes em compartilhar comigo até mesmo os pacotes que usaram para fazer isso (razoável, mas eh).

Responder1

O NGINX deve fazer tudo que você precisa. Ele suporta roteamento UDP e possui verificações de integridade passivas e ativas, para que você possa configurar como ele determina se o serviço principal está em execução ou não. Ele pode ser configurado para retornar ao serviço de backup somente se as verificações de integridade falharem.

informação relacionada