Sticky Session 관련 로드밸런서 스위칭 문제
Nginx + tomcat 을 하나의 서버에서 통으로 사용하며 각각 총 2개의 서버로 나누어져있고 그 위에 L7 으로 세팅되어있을때 배포를 할 때마다 다운타임이 일어나는 현상이 있다.
먼저 L7은 스위치로 들어온 패킷을 감지하여 가장 적절한 목적지로 전송해주며 불필요한 패킷을 제외시켜주는 역할을 한다.
여기에서 Sticky Session 이라는 것을 사용하게 되는데 Sticky Session 이란 L4 스위치를 통해 분배된 서비스 세션은 하나의 연결 요청에 1 ~ n 중에 한 대의 서버에 분배하게 된다. 그러나 처음에 접속했던 서버와 같은 서버에 계속 연결시킬 수 있다.
(일반)
유저A => L4 => 1번 Server
유저B => L4 => 2번 Server
(Sticky)
유저A => L4 => 1번 Server
유저B => L4 => 1번 Server
현재 구조상 리버스 프록시를 통하여 web server에서 was로 접근하는 형태이며 그럴 경우에는 애플리케이션이 외부로 나가는 경우 각 PC의 IP가 아니라 프록시 서버의 IP를 달고 나간다. 그러므로 여러 사람이 timeout 시간 내에 접속하는 경우 계속해서 한 서버에만 로드가 집중되어서 다운타임 현상이 생기게 된다. (동일한 사람으로 판단되므로)