본문 바로가기

학습

Session Clustering ?

반응형

Redis 연동 하기 앞서 Tomcat9와 apache 연동후 session clustering 먼저 학습 해보려고 한다. 

session clustering 은 엔지니어라면 기본적으로 알고 있어야할 소양이지만,

이해를 확실하게 하기 위해 구체적으로 파고들어보려고 한다.

 

 


기본적으로 IT하는 사람이라면 세션 클러스터링에 대해 알고 있다고 생각이 듭니다. 

쉽게 이야기해 WAS가 2대 이상 설치가 되었을 경우 세션을 공유해 대체된 WAS에도 동일한 세션을 관리하는 것을 의미합니다. 

 

그렇다면 정확하게 세션 클러스터링이 무엇인가에 대한 질문을 다시 던져 보겠습니다 .

Session Clustering ?

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

 

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

 

 

Cluster 특징

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

 

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

Session Clustering 구성 방식

  1. WAS간 구성
    • 세션 데이터별 Primary/BackUp 인스터스를 지정하여 공유
    • 장점 : 별도의 서버 인프라 없이 가능 
    • 단점 : 세션데이터의 백업 및 동기화 이슈, 장애 발생시 세션 복제의 이슈가 발생
  2. 세션 서버 구성 
    • 별로듸 세션 서버 운영
    • 장점 : 인스턴스간 세션 공유 설정이 용이 
    • 단점 : 단일 장애 지점으로 장애시 복제를 구성해. 성능이 좋지는 못함
  3. 세션 데이터그리드 구성 
    • 데이터 그리드(JVM 프로세스 수를 늘리는 것)에서 세션 정보를 저장하여 운영.
    • 장점 : 인스턴스와 애플리케이션 간 세션 공유가 용이합니다. Elastic확장성과 안정성을 보장, 메모리 기반 고성능 
    • 단점 : 별도의 서버 구성으로 인한 비용 발행. 관리 포인트 증가 . 
    • ex) Tomcat, JBoss, WebLogic 

 

Data Grid 방식의 이점 

  • WAS 장애 발생시 세션 데이터 보호 
  • 세션 정보를 분산하여 세션 저장영역에 대한 스케일 아웃
  • 대용량으로 Http Session 데이터를 사용하는 웹 애플리케이션 
  • High Volume 웹 애플리케이션 혹은 부적절하게 설계된 Http Session을 사용하는 웹 애플리케이션 적용
  • Heap 사이즈를 크게 하는 것이 아니라 JVM의 프로세스 수를 늘리는 것으로 Full GC의 악영향을 회피하면서 시스템을 확장 
    • 유후 H/W 메모리 활용
    • 이 기종의 AP서버 간의 세션 정보 공유 
    • 웹 애플리케이션간 세션 정보 공유 

 

Tomcat 이중화 세션 클러스터링 

Tomcat은 멀티캐스트(One-To-Many 통신 1:N )와 Session Replication 구조입니다. 

Tomcat의 기능중 에는 세션 복제(세션 클러스터) 기능을 켜두면 이중화된 톰켓 간에 multicast 방식으로 공유하고 싶은 정보를 전파 합니다. 

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

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

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

2. Vertical Clustering

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

'학습' 카테고리의 다른 글

Chapter06 운영체제와 기본 소프트웨어  (0) 2024.02.03
Centos7 Redis Install 학습  (0) 2023.05.15
Redis 란?  (0) 2023.05.12
Spring SOAP API  (0) 2023.05.10
XML API ??  (0) 2023.04.28