SlideShare una empresa de Scribd logo
1 de 18
Descargar para leer sin conexión
세션 클러스터링

주식회사 오픈소스컨설팅
목차
세션과 쿠키
클러스터 개요
클러스터를 위한 웹로직 및 JBoss 세션 복제 비교

웹로직 클러스터링 아키텍처
JBoss 클러스터링 아키텍처
세션 설정 주의사항

- Internal Use Only -
세션이란?
정의
 클라이언트의 상태를 저장하기 위한
일반적인 방법
 Stateless 성격의 HTTP 프로토콜의
한계를 극복하기 위한 기법

IS NOT
 중요한 데이터를 보관 X
 RDBMS 저장용 데이터에 대한 inmemory 용도 X

- Internal Use Only -
Session과 Cookie
Cookie
 사용자 브라우저에 저장되어 요청시 헤더에 포함
 클라이언트당 최대 20개 저장 가능
 사용자가 쿠키 허용 안 할 경우 사용할 수 없음
 하나의 쿠키에 최대 4K 이상 저장 불가능

Session
 사용자의 데이터를 서버의 메모리에 저장
 해시테이블에 저장: Name/Value 형태
 사용자 정보 등에 대한 안전한 저장

- Internal Use Only -
클러스터
목적
 고가용성(High availability)
 부하 분산(Load Balancing)
 확장(Scalability)

동일 업무를 처리하기 위해 서버들의 논리적인 그룹
같은 서버 또는 다른 서버에 위치 가능
클라이언트는 단일 서버로 인식할 수 있도록 함
주요 기술

Machine 1

Machine 2

 멀티캐스트
•

One-To-Many 통신

myPartition
Server11
Server12

- Internal Use Only -

Server21
Server22
클러스터 특징
상태복제 (State Replication)
 서비스 접근 시 응답속도의 일관성 유지
 클러스터 내의 모든 노드들이 동일 저장값 접근가능
 노드 장애 시 다른 노드에서 클라이언트와 통신하여 서비스 제공

부하분산 (Load Balancing)
 동시 접속자 증가에 따른 성능저하 방지
 요청을 서버들에 전달하여 고가용성

자동 장애복구 (Silent Failover)
 서비스 장애 시 정상적인 서비스 보장
 시스템 장애 시 클라이언트는 다른 노드로 리다이렉션

- Internal Use Only -
웹로직 – JBoss 세션의 복제
웹로직 기본 복제(replication) 방식
 Primary – Secondary 복제

JBoss의 기본 복제 방식
 All to all – 세션 생성시 클러스터 내의 전 노드에 복제
 웹로직의 Primary – Secondary 방식과 동일한 Buddy Replication 설정 가능

세션 복제 방식 차이 없음!

- Internal Use Only -
WLS vs JBoss 세션 복제의 차이

JBoss

WLS

- Internal Use Only -
클러스터를 위한 노드간 통신
Cluster 통신 방식
 Multicast (one-to-many UDP) 224.0.0.0 ~ 239.255.255.255
 Sockets (peer-to-peer TCP)

One-to-many 통신
 Cluster-wide JNID 업데이트
 Cluster “heartbeats”
 Cluster 내의 서버들은 동일한 subnet 상에 위치해야 한다.
 방화벽에 의해 통신이 막힐 수 있다.

Peer-to-peer 통신
 원격서버의 non-clustered 객체에 접근할 때
 원격서버의 clustered 객체에 접근할 때
 HTTP 세션 상태를 복사, stateful session EJB 상태복사

- Internal Use Only -
웹로직 클러스터링– 최초 연결
WLS Tracking Cookie Format: sessionid!primary_JVMID!secondary_JVMID
3
M1 인스턴스가 이 세션에
대한 primary로 지정.
복제관리자는 M2를
secondary로 지정하고 추
적 쿠키 정보를 갱신

M1
2

1

라운드 로빈 알고리즘
사용하여 live
인스턴스 찾음

클라이언트
요청 전송

A

M2
Client

A’

Proxy

M3

5
최종 추적 쿠키
Cookie(Primary=M1;Seco
ndary=M2)

M4

- Internal Use Only -

4
복제 관리자는 M2로 해당
세션을 복제
웹로직 클러스터링 – Failover
3
연결 문제 발생
(연결에러, 타임아웃)

7
복제 관리자는 M1에 있는
세션을 제거하도록 통지

M1
2

1
클라이언트 요청
추적 쿠키:
Cookie(Primary=M1;Sec
ondary=M2)

A

인스턴스 M1 정상,
요청을 전달함

M2
Client

8

M2가 이 세션에 대한
primary로 전환. 복제관리
자는 M3를 secondary로
지정하고 추적 쿠키 정보
를 갱신

A’

Proxy

M3

4
최종 추적 쿠키
Cookie(Primary=M2;Seco
ndary=M3)

5

6
A’

Proxy는 장애를 감지하고,
secondary 인스턴스 M2
로 접속을 시도

복제 관리자는 해당 세션
을 M3로 복제시킴

M4

- Internal Use Only -
JBoss Clustering Architecture
JBoss AS5, AS6, EAP5 (EAP)
 JGroups: 멀티캐스트 툴킷 오픈소스
 JBoss Cache: 클러스터링을 위한 자바 기반의 프레임워크

Jboss AS7, EAP6
 JGroups
 Infinispan: JBoss Cache를 데이터 그리드 로 업그레이드(오라클 Coherence와 거의 동일)
정상 서비스 수행(세션 복제)

장애 발생으로 인한 세션 Fail-Over 수행

Main HttpSession
Buddy HttpSession

Web
Server
Plug-in

WA
S
M1

클러스터링된 JBoss
Server간의 HttpSession
복제

WAS

Client

M2
(주요사항)
클러스터링이 되어있는 모든
JBoss Server는 Jgroups를 통해
실시간 정보를 주고 받음

JGroups

Buddy HttpSession

WAS
M1

Client

Main HttpSession

JGroups

클러스터A
Domain

- Internal Use Only -

Web
Server
Plug-in

장애 발생시 Buddy
그룹에 저장된
HttpSession을 이용

Failover
WA
S
M2
클러스터A
Domain
JBoss Clustering Architecture
JBoss AS5, AS6, EAP5 (EAP)
App

App

JBoss Cache

JGroups

JBoss Cache

App

JGroups

JBoss Cache

JBoss

JBoss

App

JBoss

App

Jboss AS7, EAP6
App

Embedded

Infinispan
JBoss

JGroups

Embedded
Infinispan
JBoss
- Internal Use Only -

JGroups

Embedded
Infinispan
JBoss
JBoss 클러스터링 – 최초 연결(All to All)
JBoss Tracking Cookie Format: jsessionid__JvmRoute1)
3
M1

M1 인스턴스가 이 세션을
저장

2

1

플러그인 알고리즘 사
용하여 live
인스턴스 찾음

클라이언트
요청 전송

A

M2
Client

웹 서버
플러그인

4
A’

Jgroups를 통해 세션이 모
든 서버에 복제

M3

5

A’

최종 추적 쿠키
Cookie(sessionid_M1)

M4

1) jvmRoute: 서버의 설정 값으로써 웹 서버 플러그인과 인스턴스를 맵핑시킴

A’

CAUTION: 서버당 100M 세션이 있을 경우 M1~M4서버 총 400M의 저장공간 필요!
- Internal Use Only -
JBoss 클러스터링 – Failover(All to All)
3
연결 문제 발생
(연결에러, 타임아웃)

M1
2

1
클라이언트
요청 전송
Cookie(sessionid_M1)

A

인스턴스 M1 에게
요청을 전달함

M2
웹 서버
플러그인

Client

5
A’

M3

5
최종 추적 쿠키
Cookie(sessionid_M2)

A’

4
플러그인는 장애를 감지
하고, 알고리즘에 의해
다른 서버 연결을 시도

M4
A’

- Internal Use Only -

M2의 jvmRoute값을 이용
하여 추적 쿠키의 값을
M2 인스턴스로 갱신
Session Management Best Practices
Session Management Best Practices

Session Size를 최대한 적은 크기가 되도록 한다
Session Attribute는 단순한 Object를 사용한다
큰 Attributes를 사용하지 말 것
 Hashtable이나 Collection Object들을 사용하지 말라

Session에 복잡한 Object Tree를 저장하지 말라

더 이상 사용되지 않는 Attribute는 반드시 Remove한다

- Internal Use Only -
클러스터 HTTP 세션 복제 실패의 주요 원인
증상
 애플리케이션이 자꾸 로그아웃 된다
 서버 로그에 에러 or 경고 메시지가 출력된다
 Fail-over가 동작하지 않는다

Multicast나 네트워크 문제
 Multicast 문제 원인을 찾아서 해결해야 함

Cluster 구성이나 Web Application 설정의 문제
 설정 파일을 검토

Session Data가 Serializable Interface를 구현하지 않았음
 세션 데이터가 Serializable 를 구현해야 함

애플리케이션의 세션 사용 프로그램의 문제

- Internal Use Only -
JBoss Buddy 복제
JBoss Cache Manager에 의한 복제에 대한 작업을 조정
관리자는 초기 설정만 가능
메모리, CPU, 네트워크 사용량 감소
<property name="buddyReplicationConfig">
<bean class="org.jboss.cache.config.BuddyReplicationConfig">
<property name="enabled">true</property>. . .
<property name="buddyPoolName">rack1</property>
<property name="numBuddies">1</property>
</bean>
</property>

- Internal Use Only -

Más contenido relacionado

La actualidad más candente

MariaDB Galera Cluster
MariaDB Galera ClusterMariaDB Galera Cluster
MariaDB Galera Cluster
Abdul Manaf
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
sprdd
 

La actualidad más candente (20)

USENIX Vault'19: Performance analysis in Linux storage stack with BPF
USENIX Vault'19: Performance analysis in Linux storage stack with BPFUSENIX Vault'19: Performance analysis in Linux storage stack with BPF
USENIX Vault'19: Performance analysis in Linux storage stack with BPF
 
Maxscale_메뉴얼
Maxscale_메뉴얼Maxscale_메뉴얼
Maxscale_메뉴얼
 
PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)PGConf.ASIA 2017 Logical Replication Internals (English)
PGConf.ASIA 2017 Logical Replication Internals (English)
 
MariaDB Galera Cluster
MariaDB Galera ClusterMariaDB Galera Cluster
MariaDB Galera Cluster
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
Spectrum Scale Best Practices by Olaf Weiser
Spectrum Scale Best Practices by Olaf WeiserSpectrum Scale Best Practices by Olaf Weiser
Spectrum Scale Best Practices by Olaf Weiser
 
MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바MySQL Administrator 2021 - 네오클로바
MySQL Administrator 2021 - 네오클로바
 
[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
 
IBM Integrated Analytics System ユーザー利用ガイド 20180213
IBM Integrated Analytics System ユーザー利用ガイド 20180213IBM Integrated Analytics System ユーザー利用ガイド 20180213
IBM Integrated Analytics System ユーザー利用ガイド 20180213
 
MongoDB Performance Tuning
MongoDB Performance TuningMongoDB Performance Tuning
MongoDB Performance Tuning
 
Linux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performanceLinux tuning to improve PostgreSQL performance
Linux tuning to improve PostgreSQL performance
 
[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료[오픈소스컨설팅]J boss6 7_교육자료
[오픈소스컨설팅]J boss6 7_교육자료
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera ) Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
Wars of MySQL Cluster ( InnoDB Cluster VS Galera )
 
Virtualization Technology Overview
Virtualization Technology OverviewVirtualization Technology Overview
Virtualization Technology Overview
 
Handling Schema Changes Using pt-online-schema change.
Handling Schema Changes Using pt-online-schema change.Handling Schema Changes Using pt-online-schema change.
Handling Schema Changes Using pt-online-schema change.
 
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
왜 쿠버네티스는 systemd로 cgroup을 관리하려고 할까요
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
 

Destacado

금융부문 컴퓨터포렌식
금융부문 컴퓨터포렌식금융부문 컴퓨터포렌식
금융부문 컴퓨터포렌식
용욱 정
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
Jaeseung Ha
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
ChangKyu Song
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
Esun Kim
 
Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
NAVER D2
 

Destacado (20)

[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
[오픈소스컨설팅] Configuring JBoss EWS(Tomcat) with IIS Web Server
 
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
[오픈소스컨설팅]이기종 WAS 클러스터링 솔루션- Athena Dolly
 
금융부문 컴퓨터포렌식
금융부문 컴퓨터포렌식금융부문 컴퓨터포렌식
금융부문 컴퓨터포렌식
 
Redis ndc2013
Redis ndc2013Redis ndc2013
Redis ndc2013
 
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
[NDC2015] 언제 어디서나 프로파일링 가능한 코드네임 JYP 작성기 - 라이브 게임 배포 후에도 프로파일링 하기
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
나와 “상관 있는” 범죄 이야기 @강은경 경찰청 과학수사센터 경감
나와 “상관 있는” 범죄 이야기 @강은경 경찰청 과학수사센터 경감나와 “상관 있는” 범죄 이야기 @강은경 경찰청 과학수사센터 경감
나와 “상관 있는” 범죄 이야기 @강은경 경찰청 과학수사센터 경감
 
데이터 사이언스 소개 - 정준호
데이터 사이언스 소개 -  정준호데이터 사이언스 소개 -  정준호
데이터 사이언스 소개 - 정준호
 
Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러Profiling - 실시간 대화식 프로파일러
Profiling - 실시간 대화식 프로파일러
 
Implementing High Availability Caching with Memcached
Implementing High Availability Caching with MemcachedImplementing High Availability Caching with Memcached
Implementing High Availability Caching with Memcached
 
[멘토링] 경찰행정학과 소개 PPT
[멘토링] 경찰행정학과 소개 PPT[멘토링] 경찰행정학과 소개 PPT
[멘토링] 경찰행정학과 소개 PPT
 
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
사례를 통해 살펴보는 프로파일링과 최적화 NDC2013
 
집단지성 프로그래밍 03-군집발견-03
집단지성 프로그래밍 03-군집발견-03집단지성 프로그래밍 03-군집발견-03
집단지성 프로그래밍 03-군집발견-03
 
톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동톰캣 #08-웹서버 연동
톰캣 #08-웹서버 연동
 
Micro Service Architecture의 이해
Micro Service Architecture의 이해Micro Service Architecture의 이해
Micro Service Architecture의 이해
 
왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지 왜 Spark 와 infinispan 왜 같이 쓰지
왜 Spark 와 infinispan 왜 같이 쓰지
 
Memcached의 확장성 개선
Memcached의 확장성 개선Memcached의 확장성 개선
Memcached의 확장성 개선
 
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
Apache Mahout 맛보기 - 30분만에 추천시스템 만들기 for 네이버 TV 서비스
 
20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현20141223 머하웃(mahout) 협업필터링_추천시스템구현
20141223 머하웃(mahout) 협업필터링_추천시스템구현
 
K-means Clustering with Scikit-Learn
K-means Clustering with Scikit-LearnK-means Clustering with Scikit-Learn
K-means Clustering with Scikit-Learn
 

Similar a [오픈소스컨설팅]Session Clustering

스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek
 
20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)
Amazon Web Services Korea
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
sprdd
 
Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0
sprdd
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
sprdd
 

Similar a [오픈소스컨설팅]Session Clustering (20)

1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
MySQL Deep dive with FusionIO
MySQL Deep dive with FusionIOMySQL Deep dive with FusionIO
MySQL Deep dive with FusionIO
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server개발자 지향 WAS : IBM WebSphere Liberty Server
개발자 지향 WAS : IBM WebSphere Liberty Server
 
[오픈소스컨설팅] About Storage Cloud
[오픈소스컨설팅] About Storage Cloud [오픈소스컨설팅] About Storage Cloud
[오픈소스컨설팅] About Storage Cloud
 
[2017 Windows on AWS] AWS 를 활용한 SQL Server 최적 활용 방안
[2017 Windows on AWS] AWS 를 활용한 SQL Server 최적 활용 방안[2017 Windows on AWS] AWS 를 활용한 SQL Server 최적 활용 방안
[2017 Windows on AWS] AWS 를 활용한 SQL Server 최적 활용 방안
 
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
게임 서비스를 위한 AWS상의 고성능 SQL 데이터베이스 구성 (이정훈 솔루션즈 아키텍트, AWS) :: Gaming on AWS 2018
 
20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)20150125 AWS BlackBelt - Amazon RDS (Korean)
20150125 AWS BlackBelt - Amazon RDS (Korean)
 
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
Cloud-Barista 제5차 오픈 컨퍼런스 : 멀티클라우드 인프라 서비스 통합 관리 (CB-Tumblebug)
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
[오픈소스컨설팅]JBoss AS7/EAP6 - JMS and JMX
 
모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작
 
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트::  AWS Summit Online Korea 2020
천만사용자를 위한 AWS 클라우드 아키텍처 진화하기 – 문종민, AWS솔루션즈 아키텍트:: AWS Summit Online Korea 2020
 
중급 종합병원 IT인프라 표준시스템 및 IBM 솔루션 소개
중급 종합병원 IT인프라 표준시스템 및 IBM 솔루션 소개중급 종합병원 IT인프라 표준시스템 및 IBM 솔루션 소개
중급 종합병원 IT인프라 표준시스템 및 IBM 솔루션 소개
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 

Más de Ji-Woong Choi

Más de Ji-Woong Choi (20)

[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020[오픈소스컨설팅] 스카우터 사용자 가이드 2020
[오픈소스컨설팅] 스카우터 사용자 가이드 2020
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
[오픈소스컨설팅] 프로메테우스 모니터링 살펴보고 구성하기
 
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
[오픈소스컨설팅] Ansible을 활용한 운영 자동화 교육
 
[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략[오픈소스컨설팅] 2019년 클라우드 생존전략
[오픈소스컨설팅] 2019년 클라우드 생존전략
 
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
[오픈소스컨설팅] AWS re:Invent 2018 기계학습(ML)부분 후기
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
[오픈소스컨설팅] 아파치톰캣 운영가이드 v1.3
 
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
[오픈소스컨설팅]ELK기반 장애예방시스템_구성_2016.12
 
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
[오픈소스컨설팅] Docker를 활용한 Gitlab CI/CD 구성 테스트
 
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
[오픈소스컨설팅]클라우드기반U2L마이그레이션 전략 및 고려사항
 
OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기OpenStack Summit 2017 참석후기
OpenStack Summit 2017 참석후기
 
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
[오픈소스컨설팅] Red Hat ReaR (relax and-recover) Quick Guide
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
[오픈소스컨설팅] Open Stack Ceph, Neutron, HA, Multi-Region
 
Docker Setting for Static IP allocation
Docker Setting for Static IP allocationDocker Setting for Static IP allocation
Docker Setting for Static IP allocation
 
Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드Scouter와 influx db – grafana 연동 가이드
Scouter와 influx db – grafana 연동 가이드
 
[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide[오픈소스컨설팅]Atlassian JIRA Quick Guide
[오픈소스컨설팅]Atlassian JIRA Quick Guide
 
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
[오픈소스컨설팅]레드햇계열리눅스7 운영자가이드 - 기초편
 

[오픈소스컨설팅]Session Clustering

  • 2. 목차 세션과 쿠키 클러스터 개요 클러스터를 위한 웹로직 및 JBoss 세션 복제 비교 웹로직 클러스터링 아키텍처 JBoss 클러스터링 아키텍처 세션 설정 주의사항 - Internal Use Only -
  • 3. 세션이란? 정의  클라이언트의 상태를 저장하기 위한 일반적인 방법  Stateless 성격의 HTTP 프로토콜의 한계를 극복하기 위한 기법 IS NOT  중요한 데이터를 보관 X  RDBMS 저장용 데이터에 대한 inmemory 용도 X - Internal Use Only -
  • 4. Session과 Cookie Cookie  사용자 브라우저에 저장되어 요청시 헤더에 포함  클라이언트당 최대 20개 저장 가능  사용자가 쿠키 허용 안 할 경우 사용할 수 없음  하나의 쿠키에 최대 4K 이상 저장 불가능 Session  사용자의 데이터를 서버의 메모리에 저장  해시테이블에 저장: Name/Value 형태  사용자 정보 등에 대한 안전한 저장 - Internal Use Only -
  • 5. 클러스터 목적  고가용성(High availability)  부하 분산(Load Balancing)  확장(Scalability) 동일 업무를 처리하기 위해 서버들의 논리적인 그룹 같은 서버 또는 다른 서버에 위치 가능 클라이언트는 단일 서버로 인식할 수 있도록 함 주요 기술 Machine 1 Machine 2  멀티캐스트 • One-To-Many 통신 myPartition Server11 Server12 - Internal Use Only - Server21 Server22
  • 6. 클러스터 특징 상태복제 (State Replication)  서비스 접근 시 응답속도의 일관성 유지  클러스터 내의 모든 노드들이 동일 저장값 접근가능  노드 장애 시 다른 노드에서 클라이언트와 통신하여 서비스 제공 부하분산 (Load Balancing)  동시 접속자 증가에 따른 성능저하 방지  요청을 서버들에 전달하여 고가용성 자동 장애복구 (Silent Failover)  서비스 장애 시 정상적인 서비스 보장  시스템 장애 시 클라이언트는 다른 노드로 리다이렉션 - Internal Use Only -
  • 7. 웹로직 – JBoss 세션의 복제 웹로직 기본 복제(replication) 방식  Primary – Secondary 복제 JBoss의 기본 복제 방식  All to all – 세션 생성시 클러스터 내의 전 노드에 복제  웹로직의 Primary – Secondary 방식과 동일한 Buddy Replication 설정 가능 세션 복제 방식 차이 없음! - Internal Use Only -
  • 8. WLS vs JBoss 세션 복제의 차이 JBoss WLS - Internal Use Only -
  • 9. 클러스터를 위한 노드간 통신 Cluster 통신 방식  Multicast (one-to-many UDP) 224.0.0.0 ~ 239.255.255.255  Sockets (peer-to-peer TCP) One-to-many 통신  Cluster-wide JNID 업데이트  Cluster “heartbeats”  Cluster 내의 서버들은 동일한 subnet 상에 위치해야 한다.  방화벽에 의해 통신이 막힐 수 있다. Peer-to-peer 통신  원격서버의 non-clustered 객체에 접근할 때  원격서버의 clustered 객체에 접근할 때  HTTP 세션 상태를 복사, stateful session EJB 상태복사 - Internal Use Only -
  • 10. 웹로직 클러스터링– 최초 연결 WLS Tracking Cookie Format: sessionid!primary_JVMID!secondary_JVMID 3 M1 인스턴스가 이 세션에 대한 primary로 지정. 복제관리자는 M2를 secondary로 지정하고 추 적 쿠키 정보를 갱신 M1 2 1 라운드 로빈 알고리즘 사용하여 live 인스턴스 찾음 클라이언트 요청 전송 A M2 Client A’ Proxy M3 5 최종 추적 쿠키 Cookie(Primary=M1;Seco ndary=M2) M4 - Internal Use Only - 4 복제 관리자는 M2로 해당 세션을 복제
  • 11. 웹로직 클러스터링 – Failover 3 연결 문제 발생 (연결에러, 타임아웃) 7 복제 관리자는 M1에 있는 세션을 제거하도록 통지 M1 2 1 클라이언트 요청 추적 쿠키: Cookie(Primary=M1;Sec ondary=M2) A 인스턴스 M1 정상, 요청을 전달함 M2 Client 8 M2가 이 세션에 대한 primary로 전환. 복제관리 자는 M3를 secondary로 지정하고 추적 쿠키 정보 를 갱신 A’ Proxy M3 4 최종 추적 쿠키 Cookie(Primary=M2;Seco ndary=M3) 5 6 A’ Proxy는 장애를 감지하고, secondary 인스턴스 M2 로 접속을 시도 복제 관리자는 해당 세션 을 M3로 복제시킴 M4 - Internal Use Only -
  • 12. JBoss Clustering Architecture JBoss AS5, AS6, EAP5 (EAP)  JGroups: 멀티캐스트 툴킷 오픈소스  JBoss Cache: 클러스터링을 위한 자바 기반의 프레임워크 Jboss AS7, EAP6  JGroups  Infinispan: JBoss Cache를 데이터 그리드 로 업그레이드(오라클 Coherence와 거의 동일) 정상 서비스 수행(세션 복제) 장애 발생으로 인한 세션 Fail-Over 수행 Main HttpSession Buddy HttpSession Web Server Plug-in WA S M1 클러스터링된 JBoss Server간의 HttpSession 복제 WAS Client M2 (주요사항) 클러스터링이 되어있는 모든 JBoss Server는 Jgroups를 통해 실시간 정보를 주고 받음 JGroups Buddy HttpSession WAS M1 Client Main HttpSession JGroups 클러스터A Domain - Internal Use Only - Web Server Plug-in 장애 발생시 Buddy 그룹에 저장된 HttpSession을 이용 Failover WA S M2 클러스터A Domain
  • 13. JBoss Clustering Architecture JBoss AS5, AS6, EAP5 (EAP) App App JBoss Cache JGroups JBoss Cache App JGroups JBoss Cache JBoss JBoss App JBoss App Jboss AS7, EAP6 App Embedded Infinispan JBoss JGroups Embedded Infinispan JBoss - Internal Use Only - JGroups Embedded Infinispan JBoss
  • 14. JBoss 클러스터링 – 최초 연결(All to All) JBoss Tracking Cookie Format: jsessionid__JvmRoute1) 3 M1 M1 인스턴스가 이 세션을 저장 2 1 플러그인 알고리즘 사 용하여 live 인스턴스 찾음 클라이언트 요청 전송 A M2 Client 웹 서버 플러그인 4 A’ Jgroups를 통해 세션이 모 든 서버에 복제 M3 5 A’ 최종 추적 쿠키 Cookie(sessionid_M1) M4 1) jvmRoute: 서버의 설정 값으로써 웹 서버 플러그인과 인스턴스를 맵핑시킴 A’ CAUTION: 서버당 100M 세션이 있을 경우 M1~M4서버 총 400M의 저장공간 필요! - Internal Use Only -
  • 15. JBoss 클러스터링 – Failover(All to All) 3 연결 문제 발생 (연결에러, 타임아웃) M1 2 1 클라이언트 요청 전송 Cookie(sessionid_M1) A 인스턴스 M1 에게 요청을 전달함 M2 웹 서버 플러그인 Client 5 A’ M3 5 최종 추적 쿠키 Cookie(sessionid_M2) A’ 4 플러그인는 장애를 감지 하고, 알고리즘에 의해 다른 서버 연결을 시도 M4 A’ - Internal Use Only - M2의 jvmRoute값을 이용 하여 추적 쿠키의 값을 M2 인스턴스로 갱신
  • 16. Session Management Best Practices Session Management Best Practices Session Size를 최대한 적은 크기가 되도록 한다 Session Attribute는 단순한 Object를 사용한다 큰 Attributes를 사용하지 말 것  Hashtable이나 Collection Object들을 사용하지 말라 Session에 복잡한 Object Tree를 저장하지 말라 더 이상 사용되지 않는 Attribute는 반드시 Remove한다 - Internal Use Only -
  • 17. 클러스터 HTTP 세션 복제 실패의 주요 원인 증상  애플리케이션이 자꾸 로그아웃 된다  서버 로그에 에러 or 경고 메시지가 출력된다  Fail-over가 동작하지 않는다 Multicast나 네트워크 문제  Multicast 문제 원인을 찾아서 해결해야 함 Cluster 구성이나 Web Application 설정의 문제  설정 파일을 검토 Session Data가 Serializable Interface를 구현하지 않았음  세션 데이터가 Serializable 를 구현해야 함 애플리케이션의 세션 사용 프로그램의 문제 - Internal Use Only -
  • 18. JBoss Buddy 복제 JBoss Cache Manager에 의한 복제에 대한 작업을 조정 관리자는 초기 설정만 가능 메모리, CPU, 네트워크 사용량 감소 <property name="buddyReplicationConfig"> <bean class="org.jboss.cache.config.BuddyReplicationConfig"> <property name="enabled">true</property>. . . <property name="buddyPoolName">rack1</property> <property name="numBuddies">1</property> </bean> </property> - Internal Use Only -