세션을 통한 Nginx 로드 밸런싱

세션을 통한 Nginx 로드 밸런싱

nginx로 로드 밸런싱을 설정하는 것이꽤 쉬움그리고 나는 그것을 시도하고 싶습니다. 내 유일한 관심사는 세션에 관한 것입니다. 세션 고정성을 달성하기 위해 nginx를 활용하여 클라이언트의 모든 후속 호출을 동일한 서버로 라우팅하려면 어떻게 해야 합니까?

감사해요

답변1

ip_hash 지시어를 사용하세요

답변2

대안으로 다음을 볼 수 있습니다.Nginx 고정 모듈

여러 백엔드 서버를 처리할 때 하나의 클라이언트(브라우저)가 항상 동일한 백엔드 서버에서 제공되는 것이 유용한 경우가 있습니다(예: 세션 지속성).

ip_hash 업스트림 모듈을 사용하여 IP에 의한 지속성을 사용하는 것은 좋은 생각이 아닐 수 있습니다. 여러 브라우저가 동일한 IP 주소(프록시 뒤)를 사용하고 로드 밸런싱 시스템이 공평하지 않은 상황이 있을 수 있기 때문입니다. .

쿠키를 사용하여 업스트림 서버를 추적하면 각 브라우저가 고유해집니다.

고정 모듈을 적용할 수 없으면 클래식 라운드 로빈 업스트림으로 다시 전환하거나 "잘못된 게이트웨이"를 반환합니다(no_fallback 플래그에 따라 다름).

브라우저에서 쿠키를 지원하지 않으면 고정 모듈을 적용할 수 없습니다.

답변3

ip_hash는 세션에 대한 nginx의 로드 밸런싱 규칙입니다. 그러나 nginx 서버는 실제 IP를 얻어야 합니다. squid를 프런트 서버로 사용하면 nginx 서버가 squid의 IP를 가져옵니다. 다음으로 nginx는 실제 서버를 지시해야 합니다. nginx 서버 뒤에 다른 로드밸런싱 서버가 있는 경우 동일한 실제 서버에서 세션이 전송되지 않습니다.

관련 정보