[09] Connection Load Balancing (CLB)과 Runtime Connection Load Balancing (RLB) 설명

똘똘님. 자동으로 로드를 분산시킨다는 개념은 위험성이 내포되어 있긴 하지만, 원리를 잘 이해하고 적용한다면 관리 측면에서는 상당히 매력적인 기능인 것 같습니다. 공부를 하다 보니 CLB, RLB, CLB_GOAL, RLB_GOAL 등의 용어가 등장합니다. CLB의 개념은 그다지 어렵지 않은데, RLB 개념이 명확하지 않습니다. CLB와 RLB의 개념을 정립해주실 수 있을까요?

네. 간단한 질문이지만 상당히 어려운 질문입니다. 설명드릴 것이 많지만, 한번에 너무 많은 지식은 소화하기 힘드니 이번 시간에는 CLB와 RLB의 차이를 명확히 아는 것만을 목표로 진행해 보겠습니다.

 

들어가기에 앞서


로드 밸런싱 관련 내용은 설명할 내용이 많은 관계로 다음과 같이 4개의 연재로 진행할 예정입니다.

1) [09] Connection Load Balancing (CLB)과 Runtime Connection Load Balancing (RLB) 설명

2) [10] CLB, RLB를 위한 서비스 매트릭스 정보의 흐름

3) [11] 톰캣 서버에 UCP (Universal Connection Pool) 구성 및 JSP 샘플 코드 작성

4) [12] Jmeter + 톰캣 + UCP를 이용한 RLB (Runtime Load Balancing) 동작 방식 검증

 9-1. 로드 밸런싱 개요


클러스터 환경에서 동시에 다수의 노드가 동일한 서비스를 수행하는 경우, 바꿔 말해 하나의 서비스가 여러 개의 노드에서 동시에 수행되는 환경이 있다고 가정해보겠습니다. 이때, 서비스 성능 수준을 높이기 위해서 로드 밸런싱은 반드시 필요한 요소입니다. 일반적으로 로드 밸런싱은 2가지로 구분할 수 있습니다.

  • 커넥션 로드 밸런싱
  • 런-타임 로드 밸런싱

Note
커넥션 로드 밸런싱은 “세션 수” 또는 “CPU 사용률(%)”을 기준으로 동작하고, 런-타임 로드 밸런싱은 “서비스 처리 시간”을 기준으로 동작합니다.

커넥션 로드 밸런싱의 한계점

  • 커넥션 시점에는 CPU 사용률(%)이 비슷했으나, 접속한 노드의 CPU(%)이 갑자기 높아지는 경우
  • 세션 수나 CPU 사용률(%)은 비슷하나, 노드 간의 서비스 처리 성능이 차이가 나는 경우
이러한 문제를 해결하기 위해 “런-타임 로드 밸런싱”이 필요하다고 할 수 있습니다.

9-2. 오라클의 로드 밸런싱 방법


오라클은 커넥션 로드 밸런싱과 런-타임 로드 밸런싱을 모두 제공합니다. (표-1 및 그림-1 참조)

  • 커넥션 로드 밸런싱: Connection Load Balancing (CLB)이라고 하며, CLB_GOAL로 설정
  • 런-타임 밸런싱: Runtime Load Balancing (RLB)이라고 하며, RLB_GOAL로 설정

그림-1. 로드 밸런싱 옵션

 09-1

Note
RLB_GOAL을 설정하기 위해서는 CLB_GOAL을 SHORT로 지정해야 합니다.

표-1. CLB, RLB 비교 설명

 구분  CLB (커넥션 로드 밸런싱)  RLB (런-타임 로드 밸런싱)
 설정 방법  서비스 생성 시, CLB_GOAL 설정  서비스 생성 시, RLB_GOAL 설정
 옵션  LONG
“세션 수”가 적은 노드로 접속
 SERVICE_TIME
UCP 사용 시, 서비스 처리 시간이 우수한 노드로 접속(OLTP 환경에 적합)
 SHORT
“CPU(%)”이 낮은 노드로 접속
 THROUPUT
UCP 사용 시, 서비스 처리 능력이 우수한 노드로 접속
(BATCH 환경에 적합)

Note
LONG 옵션에서 말하는 “세션 수”는 “해당 서비스로 접속한 세션 수“를 의미합니다. 전체 세션 수가 아닌 점을 주의해야 합니다.

 

9-3. RLB는 모든 환경에서 적용될까요?


“표-1″에서 언급한 것처럼 “RLB는 UCP (Unified Connection Pool) 환경에서만 동작“합니다. 간단하지만 가장 중요한 내용이라고 할 수 있겠습니다. DBCP, JDBC Connection Pool 및 SQL*Plus와 같은 클라이언트의 접속은 RLB가 적용되지 않습니다. 테스트 시, 모니터링을 해보면 DBCP나 SQL*Plus 접속에 대해서도 RBL가 적용되는 것 같은 착각을 할 수 있지만, 해당 접속들은 CLB로만 처리됩니다.

 

참고 문헌


http://oracleinaction.com/rac-load-balancing/

[10] CLB, RLB를 위한 서비스 매트릭스 정보의 흐름 바로가기

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s