TCP/UDP 통신에 대한 세션 지속성을 수행할 때 NGINX Plus는 서버 오류를 어떻게 처리합니까?

TCP/UDP 통신에 대한 세션 지속성을 수행할 때 NGINX Plus는 서버 오류를 어떻게 처리합니까?

NGINX Plus 문서를 통해 제가 이해한 바에 따르면 로드 밸런싱은 다운되거나 붐비는 서버 주위로 라우팅되며 세션 지속성은 특정 세션에 대해 동일한 서버를 유지하려고 시도한다는 것입니다. 서버가 세션 중에 다운되면 두 가지가 상호 배타적이 될 수 있는 것처럼 느껴집니다. 다른 서버(세션 중 변경 사항이 없을 수 있음)로 전환하여 일부 데이터 손실이 있을 수 있음을 알 수 있도록 서버 오류 표시가 있습니까? 아니면 조용히 전환됩니까?

이는 특히 HTTP가 아닌 TCP/UDP 통신용입니다.

답변1

둘이 서로 배타적이 될 것 같은 느낌

예. 이는 nginx에만 국한된 문제가 아닙니다. 지금까지 가장 좋은 솔루션은 세션 데이터를 복제하고 가용성을 높이는 것입니다. 그러나 잘 계획되지 않은 기존 서비스에 연결하는 것은 쉽지 않습니다.

세션을 구현하는 서버가 실패할 때 nginx가 무엇을 하길 원하시나요? 다른 서버로 장애 조치하시겠습니까? 특정 서버로 장애 조치하시겠습니까? 서버가 쌍으로 되어 있습니까? 다른 것? 세션을 중지합니다. 불확정 상태이므로...옵션이 너무 많습니다.

실패보고에 관해서. 여기에는 2개의 부분이 있습니다. 하나는 모니터링입니다. 누군가에게 문제가 발생했거나 고쳐야 한다고 알려야 합니다. 이것은 Nginx의 일이 아닙니다. 이는 모니터링 스택이 처리해야 할 사항입니다. 두 번째 부분은 클라이언트에게 뭔가가 작동하지 않았음을 알리는 것입니다. Nginx는 재고를 다시 선반에 올려야 하는지/DNS 변경 사항을 다시 적용해야 하는지 모릅니다. 이것이 바로 실행 중인 프로토콜과 애플리케이션의 작업입니다. 타이밍 문제가 있지만 대부분의 네트워크 프로토콜은 짧은 요청/응답 메시지 교환을 사용하여 클라이언트에서 서버 상태에 대한 가시성을 제공합니다. (대부분의) 데이터베이스의 경우 이는 클라이언트의 명시적인 "COMMIT" 메시지로 매우 잘 정의되어 있습니다. 하지만 클라이언트가 "COMMIT"이라고 말하고 응답을 받지 못한다면 어떻게 될까요?

이는 특히 HTTP가 아닌 TCP/UDP 통신용입니다.

@PersionGulf와 마찬가지로 비HTTP 로드 밸런싱/nginx를 통한 TCP HA에 HAProxy를 사용하는 것이 좋습니다. 마지막으로 확인했을 때 UDP를 수행할 수 없습니다.

실패 시 어떻게 작동하는지 나타내지 않습니다.

테스트하는 것은 어렵지 않습니다.

관련 정보