
이것은 다소 구체적인 질문이지만 답변을 찾을 수 없는 질문입니다. 저는 Ubuntu 16.04 LTS의 LXC 컨테이너, 특히 게임 서버에서 일련의 서비스를 실행하고 있습니다. 그러나 이 서비스는 실패하는 것으로 알려져 있으며 래퍼도 마찬가지입니다. 따라서 서비스가 중단되거나 응답하지 않는 경우 가동 시간과 로드 균형을 유지하려면 서비스의 응답 여부에 따라 UDP 및 TCP 트래픽을 모두 리디렉션할 수 있어야 합니다.
시나리오를 더 잘 설명하기 위해 공용 IP에 노출된 LXC 컨테이너가 있고, 포트 21025의 트래픽을 중첩된 컨테이너로 리디렉션하는 iptables와 중첩된 다른 LXC 컨테이너가 있습니다. 해당 컨테이너 내에서 트래픽을 허용하는 서비스( ServiceWrapper
및 호출 ServiceMain
)가 응답하지 않으면 트래픽은 호출할 다른 포트의 다른 서비스로 이동해야 합니다 ServiceFallback
. 그렇지 않으면 트래픽이 예상대로 ServiceWrapper로 이동한 다음 트래픽을 ServiceMain
.
이러한 종류의 라우팅을 구현하려는 현재 시도는 HAProxy를 사용하여 및 사이의 로드 밸런싱을 수행하는 것이었지만 언뜻 ServiceWrapper
보면 ServiceFallback
HAProxy는 로드 밸런싱 방식에 따라 추가 포트의 리디렉션을 감지하거나 허용하지 않는 것으로 보입니다 . 버전, 호스트 이름 등과 같은 서버 쿼리를 용이하게 하기 위해 다른 포트에서 UDP 트래픽을 허용합니다. 그리고 제가 알 수 있는 한 HAProxy는 UDP 트래픽을 라우팅하거나 감지하지 않습니다 .ServiceWrapper
ServiceFallback
ServiceMain
나는 이것을 작동시키기 위해 필사적입니다. 내가 수행하려는 정확한 설정이 내 직접적인 경쟁자 중 한 명에게 효과적이었기 때문에 이것이 가능하다는 것을 알고 있습니다. 그러나 그들은 그것을 수행했던 패키지조차도 나와 공유하기를 꺼려하는 것 같습니다(합리적이지만, 어).
답변1
NGINX는 필요한 모든 작업을 수행해야 합니다. UDP 라우팅을 지원하고 수동 및 활성 상태 확인이 모두 있으므로 기본 서비스가 실행 중인지 확인하는 방법을 구성할 수 있습니다. 상태 확인이 실패한 경우에만 백업 서비스로 폴백하도록 구성할 수 있습니다.