Есть ли способ перенаправить трафик на другой порт в случае, если служба, прослушивающая исходный порт, не отвечает?

Это довольно специфический вопрос, но я не смог найти ответ на него. В Ubuntu 16.04 LTS я запускаю набор сервисов на контейнере LXC, в частности игровые серверы. Однако известно, что этот сервис не работает, как и его оболочка. Поэтому, чтобы поддерживать время безотказной работы и баланс нагрузки, когда сервисы зависают или не отвечают, мне нужно иметь возможность перенаправлять трафик UDP и TCP в зависимости от того, реагирует сервис или сервисы или нет.

Чтобы лучше объяснить сценарий, у меня есть контейнер LXC, открытый общедоступному IP-адресу, а другой контейнер LXC, вложенный в iptables, перенаправляет трафик через порт 21025 во вложенный контейнер. Внутри этого контейнера, если службы, принимающие трафик (называется ServiceWrapper а также ServiceMain) не отвечают, трафик должен идти к другому сервису на другом порту, который мы будем называть ServiceFallback, В противном случае трафик идет, как и ожидалось, в ServiceWrapper, который затем отправляет трафик ServiceMain,

Моя текущая попытка реализовать такую ​​маршрутизацию была с использованием HAProxy для балансировки нагрузки между ServiceWrapper а также ServiceFallbackОднако на первый взгляд кажется, что HAProxy не обнаруживает и не разрешает перенаправление дополнительных портов в зависимости от распределения нагрузки. ServiceWrapper а также ServiceFallback, Ты видишь, ServiceMain принимает трафик UDP через другой порт, чтобы упростить запросы сервера, такие как версия, имя хоста и т. д. и т. д. Насколько я могу судить, HAProxy не будет маршрутизировать или обнаруживать трафик UDP.

Я в отчаянии, чтобы заставить это работать. Я знаю, что это возможно, потому что точная настройка, которую я пытаюсь выполнить, сработала для одного из моих прямых конкурентов, однако они, похоже, неохотно делятся со мной даже пакетами, которые они использовали для этого (разумно, но да).

1 ответ

NGINX должен делать все, что вам нужно. Он поддерживает маршрутизацию UDP и имеет как пассивную, так и активную проверку работоспособности, поэтому вы можете настроить способ определения, работает ли основная служба или нет. Его можно настроить так, чтобы он возвращался к службе резервного копирования только в случае сбоя проверки работоспособности.

Другие вопросы по тегам