원래 포트를 수신하는 서비스가 응답하지 않는 경우 트래픽을 다른 포트로 리디렉션하는 방법이 있습니까?

원래 포트를 수신하는 서비스가 응답하지 않는 경우 트래픽을 다른 포트로 리디렉션하는 방법이 있습니까?

이것은 다소 구체적인 질문이지만 답변을 찾을 수 없는 질문입니다. 저는 Ubuntu 16.04 LTS의 LXC 컨테이너, 특히 게임 서버에서 일련의 서비스를 실행하고 있습니다. 그러나 이 서비스는 실패하는 것으로 알려져 있으며 래퍼도 마찬가지입니다. 따라서 서비스가 중단되거나 응답하지 않는 경우 가동 시간과 로드 균형을 유지하려면 서비스의 응답 여부에 따라 UDP 및 TCP 트래픽을 모두 리디렉션할 수 있어야 합니다.

시나리오를 더 잘 설명하기 위해 공용 IP에 노출된 LXC 컨테이너가 있고, 포트 21025의 트래픽을 중첩된 컨테이너로 리디렉션하는 iptables와 중첩된 다른 LXC 컨테이너가 있습니다. 해당 컨테이너 내에서 트래픽을 허용하는 서비스( ServiceWrapper및 호출 ServiceMain)가 응답하지 않으면 트래픽은 호출할 다른 포트의 다른 서비스로 이동해야 합니다 ServiceFallback. 그렇지 않으면 트래픽이 예상대로 ServiceWrapper로 이동한 다음 트래픽을 ServiceMain.

이러한 종류의 라우팅을 구현하려는 현재 시도는 HAProxy를 사용하여 및 사이의 로드 밸런싱을 수행하는 것이었지만 언뜻 ServiceWrapper보면 ServiceFallbackHAProxy는 로드 밸런싱 방식에 따라 추가 포트의 리디렉션을 감지하거나 허용하지 않는 것으로 보입니다 . 버전, 호스트 이름 등과 같은 서버 쿼리를 용이하게 하기 위해 다른 포트에서 UDP 트래픽을 허용합니다. 그리고 제가 알 수 있는 한 HAProxy는 UDP 트래픽을 라우팅하거나 감지하지 않습니다 .ServiceWrapperServiceFallbackServiceMain

나는 이것을 작동시키기 위해 필사적입니다. 내가 수행하려는 정확한 설정이 내 직접적인 경쟁자 중 한 명에게 효과적이었기 때문에 이것이 가능하다는 것을 알고 있습니다. 그러나 그들은 그것을 수행했던 패키지조차도 나와 공유하기를 꺼려하는 것 같습니다(합리적이지만, 어).

답변1

NGINX는 필요한 모든 작업을 수행해야 합니다. UDP 라우팅을 지원하고 수동 및 활성 상태 확인이 모두 있으므로 기본 서비스가 실행 중인지 확인하는 방법을 구성할 수 있습니다. 상태 확인이 실패한 경우에만 백업 서비스로 폴백하도록 구성할 수 있습니다.

관련 정보