세션 클러스터링 이란?
두 대 이상의 WAS를 이용하는 경우 로드 밸런싱(대용량 트래픽 처리시 분산시키는 것),
또는 failover(장애 발생시 예비시스템으로 자동전환, 서버 이중화),
auto scaling(AWS에서 EC2 인스턴스를 자동으로 생성하고 삭제해주는 서비스) 등의
대체된 WAS에게도 세션이 공유하게 하는 기술 입니다.

고려해야할점: 
세션 정보 저장 영역을 늘리기 위해서는 JVM 의 Heap 사이즈를 늘릴 수 있지만 너무
늘리면 ”Full GC” 처리 시간 때문에 장애요인 발생

클러스터 특징
1) 노드 장애 시 다른 노드에서 클라이언트와 통신 하여 서비스 제공 ex) Multicast통신 
2) 부하 분산(LB)를 통해 성능 저하 방지, 다수의 서버에서 처리가능 (고가용성)
3) 자동 장애 복구( 정상적인 서비스 보장 ) ex) 서버 이중화
4) 단점으로는 관리의 어려움과 프로그램 병렬화의 어려움이 있다.

  • 클러스터 종류
    • 계산용 클러스터(HPC)
    • 부하분산 클러스터(LVS)
    • 고가용성 클러스터(HA)

세션 클러스터링 구성 방식


세션 클러트서링 구성 방식
1) WAS 간 구성
세션 데이터별 Primary/BackUp 인스턴스를 지정하여 공유합니다.
장점: 별도의 서버 인프라 없이 가능합니다.
단점: 세션데이터의 백업 및 동기화 이슈, 장애 발생시 세션 복제의 이슈가 발생

2) 세션 서버 구성
별도의 세션 서버 운영합니다.
장점: 인스턴스간 세션 공유 설정이 용이합니다. 
단점: 단일 장애 지점으로 장애시 복제를 구성해야 합니다. 성능이 좋지 못합니다.

3) 세션 데이터그리드 구성
데이터그리드(JVM 프로세스 수를 늘리는것)에서 세션 정보를 저장하여 운영합니다.
장점: 인스턴스와 애플리케이션 간 세션 공유가 용이합니다. Elastic 확장성과 안장성을 보장합니다. 메모리 기반 고성능.
단점: 별도의 서버 구성으로 인한 비용 발생합니다, 관리포인트가 증가합니다. 
예시: Tomcat , JBoss , WebLogic 

Data Grid 방식의 이점

Tomcat 이중화 세션 클러스트링
멀티캐스트(One-To-Many 통신) 와 Session Replication 구조입니다. 
Tomcat의 기능중 에는 세션 복제(세션 클러스터) 기능을 켜두면 이중화된 톰캣 간에 
multicast 방식으로 공유하고 싶은 정보의 전파합니다.

Tomcat 이중화 세션 클러스트링 구조도

 

서버 Level 에서 본다면, Apache 서버를 두고 Tomcat 서버를 연동시켜서 사용하는 방법 2가지입니다.

① Horizontal Clustering 

  • 장점: 이론적으로는 제한없이 확장할 수 있습니다. 애플리케이션이 확장 가능하게 디자인된 경우, 더 많은 노드를 추가하여 제한없이 증가할 수 있습니다. 클라우드 환경의 도구를 사용하면 노드를 손쉽게 추가 또는 제거할 수 있으므로 용량을 쉽게 조정할 수 있고, 사용한 리소스에 대해서만 비용을 지불하게 됩니다.
  • 단점: 애플리케이션을 확장 가능하게 디자인해야 합니다. 애플리케이션 데이터베이스 및 지속성도 확장하려면 추가적인 아키텍처 작업이 필요할 수 있습니다. 그렇지만 Service Fabric 상태 저장 서비스의 신뢰할 수 있는 컬렉션을 사용하면 애플리케이션 데이터를 훨씬 더 쉽게 확장할 수 있습니다.

    *
    Service Fabric은 컨테이너에서 실행되는 엔터프라이즈급 계층 1 클라우드 규모의 애플리케이션을 빌드 및 관리하기 위한 차세대 플랫폼

② Vertical Clustering 

  • 이점: 소프트웨어 및 애플리케이션 아키텍처가 동일하게 유지됩니다. 그에따라 프로그램 구조 난이도가 스케일아웃에 비해 상대적으로 단순합니다.
  • 단점: 개별 노드에서 늘릴 수 있는 리소스 양이 제한되어 있으므로 확장 한계가 있습니다. 리소스를 추가하거나 제거하기 위해 물리적 컴퓨터 또는 가상 머신을 오프라인으로 전환해야 하므로 가동 중지 시간이 발생합니다.

참고

+ Recent posts