Это довольно специфический вопрос, но я не смог найти ответ на него. Я использую набор служб в контейнере LXC в Ubuntu 16.04 LTS, в частности игровые серверы. Однако известно, что этот сервис не работает, как и его оболочка. Поэтому, чтобы поддерживать время безотказной работы и баланс нагрузки, когда сервисы зависают или не отвечают, мне нужно иметь возможность перенаправлять трафик UDP и TCP в зависимости от того, реагирует сервис или сервисы или нет.
Чтобы лучше объяснить сценарий, у меня есть контейнер LXC, открытый общедоступному IP, с другим контейнером LXC, вложенным с iptables, перенаправляющим трафик через порт 21025 во вложенный контейнер. Внутри этого контейнера, если сервисы, принимающие трафик (называемые ServiceWrapper
и ServiceMain
), не отвечают, трафик должен идти к другому сервису через другой порт, который мы назовем ServiceFallback
. В противном случае трафик передается в соответствии с ожиданиями ServiceWrapper, который затем отправляет трафик в ServiceMain
.
Моя текущая попытка реализовать такую маршрутизацию была в том, чтобы использовать HAProxy для балансировки нагрузки между ServiceWrapper
и ServiceFallback
, однако на первый взгляд кажется, что HAProxy не обнаруживает и не разрешает перенаправление дополнительных портов в зависимости от того, как происходит балансировка нагрузки ServiceWrapper
и ServiceFallback
. Видите ли, ServiceMain
принимает трафик UDP через другой порт, чтобы упростить запросы сервера, такие как версия, имя хоста и т.д. И т.д. Насколько я могу судить, HAProxy не будет маршрутизировать или обнаруживать трафик UDP.
Я в отчаянии, чтобы заставить это работать. Я знаю, что это возможно, потому что точная настройка, которую я пытаюсь выполнить, сработала для одного из моих прямых конкурентов, однако они, похоже, неохотно делятся со мной даже пакетами, которые они использовали для этого (разумно, но да).