2012-07-20 3 views
3

RFC 6265를 검색했지만 다음에 대한 답을 찾지 못했습니다.부하 분산 세션 쿠키 (끈적 세션이 아님)

나는 하나의 웹 애플리케이션을 위해 여러 서버의 앞에 순진 라운드 로빈로드 밸런서를 넣고 싶다. 로드 밸런서는 이 아니며은 고정 세션을 제공합니다. 따라서 클라이언트는 일반적으로 연속적인 요청시 한 어플리케이션 서버에서 다른 어플리케이션 서버로 바운스됩니다.

첫 번째 연결에

, 클라이언트는 더 SID가 없습니다 무작위
서버 A는 세션 쿠키, 난스로 응답 서버 A., 말, 라우팅됩니다.

다음 연결에서 클라이언트는 서버 A의 SID를 HTTP 헤더에 포함시킵니다. 이번에는 클라이언트가 임의로 서버 B로 무작위로 라우팅됩니다. 서버 B는 SID가 어떤 SID와도 일치하지 않는 것을 봅니다. 어떻게됩니까? 서버 B가 "나쁜"SID를 무시하거나 불평하거나 요청을 무시합니까?

아이디어는 세션 쿠키를 전혀 사용하고 싶지 않다는 것입니다. 나는 모든 끈적 거리기의 복잡성을 피하고 싶다. 그러나 나는 또한 내 서버가 아마도 세션 쿠키를 생성하고 어쩌면 더 많이 보게 될 것임을 알고 있습니다.

어떻게 서버가 세션 쿠키를 그냥 무시 (또는 더 나은 아직 설정되지 않음) 확인 할 수 있습니까?

+0

좋아, 답이 없습니다. 어쩌면 나의 질문은 벙어리이다. 그렇다면 경로로 다시 이동하십시오. 감사! – Carlos

답변

3

이 답변은 서버에서 실행중인 응용 프로그램에 따라 크게 달라질 것이라고 생각합니다. 소금에 합당한로드 밸런서는 고정 세션을 가지고 있지만 풀이없는 모든 서버는 중앙 데이터베이스를 통해 동일한 세션 상태에 액세스 할 수있는 한 수행 할 수 있습니다.

는 세션 ID에 대해 이야기하고 있기 때문에, 나는 응용 프로그램이 작동하기 위해서는 세션 상태에 의존 않습니다 같은데요. 이 경우 요청에 "잘못된"세션 ID가 포함 된 경우 세션 ID가 무시되고 사용자가 로그인하라는 메시지가 표시됩니다. 다시 정확한 동작은 앱에 따라 다릅니다. 세션 쿠키를 완전히 비활성화하는 경우 ID가 없어도 로그인 프롬프트가 표시되기 때문에 문제가 악화 될 수 있습니다. 당신이 정말로 부하 분산에 복잡성을 피하려면

, 당신은 모든 서버가 모든 세션 요청을 처리 할 수있는 몇 가지 메커니즘을 도입해야합니다. 일반적으로 이것은 중앙 집중식 데이터베이스 또는 다른 공유 저장 장치의 형태를 취합니다. 이렇게하면 특정 요청을 처리하는 서버에 관계없이 세션 상태를 유지할 수 있습니다.

세션 상태를 유지하는 점착 점이다로드 밸런싱 (웃기 의도) 단순히 무시하거나 세션 쿠키를 회피 솔루션이 아니다.