-
클러스터링이란?
클러스터링은 여러 개념에서 의미를 다르게 두지만 여기서 설명할 클러스터링이란 것은 여러대의 서버가 동시에 한가지 업무를 수행하도록 만드는 것입니다. 이를테면 DB가 한대 있는데 이 한대가 뻗으면 시스템 장애가 납니다 (SPOF - Single Point Of Failure). 만약 2대를 클러스터링 해 놓고 각각의 역할을 수행하다가 한놈이 뻗으면 나머지 한놈이 그 역할을 대신 수행하도록 하면 위와 같은 문제를 해결하면서 지속적인 서비스를 제공해줄 수 있게 됩니다.
세션 클러스터링이란?
세션 클러스터링은 WAS가 2대 이상 설치되어 있을 경우 동일한 세션으로 세션관리 하는 것을 의미합니다. 예를 들면 L4 스위치를 통해 2대 이상의 WAS가 연결되어 있을 경우, 일반적으로는 사용자는 접속했던 WAS로 L4 스위치가 접속을 유도해주지만 하나의 WAS에서 허용된 동접수를 초과한 접속이 발생할 경우 다른쪽으로의 접속을 유도해주게 됩니다. 그럴 경우, 기존 WAS의 세션이 아닌 새로이 접속된 WAS로 세션이 이루어지고 그럴 경우 세션에 대한 처리 불일치가 발생합니다. 그래서 각 WAS에 대한 세션을 하나의 세션으로 관리하게 함으로써 설사 사용자가 기존에 접속했던 WAS가 아닌 새로운 WAS로 접속하더라도 세션은 하나로 관리되기 때문에 세션에 대한 불일치가 발생하질 않습니다. 보통 세션 클러스터링은 WAS 설정으로 세팅할 수 있습니다. Tomcat에서 조차도 세션 클러스터링을 설정하는 방법이 있습니다. 사용하는 WAS마다 설정하는 방법이 다르니 관련 내용을 확인해야 합니다.
기타
Redis, infinispan 같은 별도의 세션서버를 두는 방법도 있습니다. Redis는 replication을 이용하면 클러스터링 기능도 가능하리라 봅니다.
세션 클러스터링을 사용하면 성능이 감소하긴하지만, 무시하고 사용할 정도로 떨어지진 않습니다.
로드밸런싱과 세션 클러스터링 차이점
로드 밸런싱은 클러스터링된 WAS의 한쪽에 부담이 가지 않게 하기 위해서 분산시켜주는 역할을 말합니다. 로드밸런싱이 보통 스위치 단에서 이루어지죠.
세션 클러스터링은 한쪽 부담이 가지않게 분산을 한다기 보단 하나의 서버의 장애를 방지하기 위해 임시방편 역할을 한다고 생각하면 됩니다.