2016-12-09 12 views
4

로드 밸런싱을 위해 두 개의 서버가 있습니다. 때로는 응용 프로그램에 성공적으로 로그인 한 후 잘못된 세션이 발생하고 세션 시간 초과가 30 분으로 설정되어 있어도 사용자 세션이 만료되는 경우가 있습니다. 서버 중 하나에서 인증이 발생하고 있으며 후속 요청이 다른 서버로 이동하는지 여부는 확실하지 않습니다. 이것은 임의적 인 것으로 보이며 모든 사용자에게 발생하는 것은 아닙니다.로드 밸런서의 HTTP 세션

선택한 네트워크에서만 잘못된 세션이 발생하는 것으로 나타났습니다. 우리의 응용 프로그램은 인도 전역의 21 개 상점에서 이용할 수 있습니다. 이 중 7 개 매장에서 Airtel 네트워크를 사용하는 모든 매장에서이 문제가 발생합니다. 내 사무실 네트워크 및 airtel 데이터 카드에서 잘 작동하는 응용 프로그램입니다. 하지만 내 노트북에서 Jio 네트워크를 사용하여 연결하는 것에 이상한 문제가 발생했습니다. 혼자 Jio 네트워크에서 어떻게 이런 일이 일어 났습니까?

Language: Java 

Framework: Spring

Server: Jboss 7.1.1 

답변

6

당신은 세션이 한 서버에서 생성되기 때문에 문제가 대부분이지만, 후속 요청 중 일부는 올바른을 가지고 있지 않는 다른 서버로 가고있다, 말했듯 세션의 특성이므로 사용자가 로그인하지 않았다고 생각합니다.

특정 세션에 대한 모든 요청이 항상 세션이있는 두 서버 중 하나로 리디렉션되도록 부하 분산 장치에서 고정 세션을 구성해야합니다 존재합니다 (그리고 그것에 붙어 있습니다). 즉, user1의 세션이 serverA에서 생성되면 모든 후속 요청이 해당 세션에 대해 계속됩니다. 마찬가지로 user2의 세션은 동일한 서버 또는 serverB에서 끝날 수도 있고 끝나지 않을 수도 있습니다. 고정 세션 (또는 세션 선호도)은 구성 만 변경하고 코드를 변경하지 않고도 얻을 수 있습니다.

또는 세션을 외부 데이터 소스에 유지하고 고정 세션 없이도 두 서버간에 공유 할 수 있습니다. Spring Session 프레임 워크는 많은 외부 데이터 소스를 사용하여 세션 지속성을 유지하는 매우 편리한 방법을 제공합니다. Session persistent는 코드 (잘, Spring config)가 변경되어야하므로 sticky 세션을 사용하는 것보다 약간 방해가되지만로드 밸런싱, 확장 성 및 서비스 가용성을 위해 더 잘 작동합니다.

다음은 결정 또는 적어도 자세한 내용은 도움이 될 몇 가지 참조입니다 :

http://blog.haproxy.com/2012/03/29/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/

https://touk.pl/blog/2016/03/22/haproxy-sticky-sessions-for-soap-payloads/

http://docs.spring.io/spring-session/docs/current/reference/html5/

+0

드러내 유효하지 않은 세션이 선택한 네트워크에서만 일어나고. 우리의 응용 프로그램은 인도 전역의 21 개 상점에서 이용할 수 있습니다. 이 중 7 개 매장에서 Airtel 네트워크를 사용하는 모든 매장에서이 문제가 발생합니다. 내 사무실 네트워크 및 airtel 데이터 카드에서 잘 작동하는 응용 프로그램입니다. 하지만 랩톱에서 Jio 네트워크를 사용하여 연결하는 것에 이상한 문제가 발생했습니다 –

+0

어떤 부하 분산 장치를 사용하고 있습니까? 일부로드 밸런서 (NGINX와 같은)는 클라이언트 IP 주소로 세션 선호도를 지원합니다 (기본값으로 설정). 이 경우 사무실 네트워크에서 연결할 때 서버가 읽는 클라이언트 IP는 대부분의 사무실 네트워크가 아웃 바운드 트래픽을 위해 프록시를 사용하므로 연결하는 워크 스테이션에 관계없이 동일합니다. 따라서 서버는 프록시 IP를 클라이언트 IP로만 볼 수 있습니다. 다른 공급자를 사용하자마자 변경됩니다. 추측하지만 셀룰러 데이터와 사무실 LAN/WAN을 연결하는 경우 비슷한 문제가 발생했습니다. – Bloodysock

+0

"F5"로드 밸런서를 사용합니다. 때때로 Jio 네트워크에서 인증 후 세션이 유효하지 않게되지만 Airtel 네트워크에서 제대로 작동하는 이유는 무엇입니까? 이 문제를 해결하는 방법을 알려주세요. –