1.1 Load Balancer 서비스 소개

1.1.1 목적/용도

Load Balancer(로드밸런서)는 클라이언트의 요청 처리를 단일 서버에서 처리하지 않게 함으로써, 가용성과 응답시간을 최적화 할 수 있습니다. 로드밸런서는 KT Cloud Server의 부가 서비스로 제공되며, 고객이 사용 중인 서버를 Back-end로 지정할 수 있습니다.

□ KT KT Cloud 로드밸런서 특징

구분

내용

지원 메소드
(부하분산 알고리즘)

Round Robin, Hashing (Source IP/Source IP+Port), Least Connection, Least Response

모니터링

Throughput, Server Connections, TTFB, Request Connections, 상태(UP/DOWN)

서비스 타입

HTTP / TCP / HTTPS(Bridge) / HTTPS / FTP

대역폭

On-Demand

가격

LB 사용 시간: 20원/시간

데이터 처리량: 6원/GB

데이터 처리량(SSL): 9원/GB

안정성

이중화 구성(Active/Standby)

 

1.1.2 구조/원리

□ 로드밸런싱의 개념

KT KT Cloud의 로드밸런싱(부하분산)은 리소스의 활용을 최적화 하기 위해 클라이언트의 요청을 여러 가상 서버(VM)에 분산시켜 주기 위한 기능입니다. 한 가지 종류의 서비스를 한 대의 서버에서 지원할 경우 많은 수의 클라이언트 요청에 대하여 과부하가 발생하고 서버 성능이 저하될 수 있습니다. 로드밸런서가 클라이언트의 요청을 수신하면 고객 서비스 영역 안에 있는 여러 가상 서버로 분산하여 정보를 처리할 수 있도록 합니다. 이때 고객은 필요에 따라 특정한 메소드(알고리즘)를 선택하여 부하를 분산 시키는 방법을 다르게 적용시킬 수 있습니다. 로드밸런싱의 처리 과정 대하여 간단한 도식을 해보면 다음과 같습니다.

 

위 그림에서와 같이 클라이언트는 실제 back-end에 위치한 서버의 주소가 아닌, 가상 IP주소(Virtual IP;VIP)로 접근합니다. VIP로 들어온 클라이언트 요청은 로드밸런서에 설정한 로드밸런서 옵션에 따라 back-end 서버들 중 적합한 대상 IP/Port를 설정합니다. 설정 된 대상 IP/Port 주소를 기반으로 클라이언트 요청은 포트포워딩 NAT기능을 하는 가상 라우터(Virtual Router; VR)를 통해 각 서비스에 도달하게 됩니다. KT Cloud 에서 로드밸런싱 서비스를 사용하는 절차는 다음과 같습니다.

  1. 로드밸런서 서비스를 신청하고 로드밸런서에 접근하기 위한 공인 IP(Public IP)를 할당합니다. 이 때 할당 방법은 미리 생성해 둔 가상 IP를 사용하거나 자동으로 신규 IP를 발급받도록 설정할 수 있습니다.
  2. 로드밸런서에 등록 할 back-end 서버를 지정한 뒤, 최종 생성 신청을 완료 합니다.
  3. 로드밸런서 생성 완료 직후 연결 상태는 'DOWN'로 나타나며 이는 네트워크 연결 과정이 진행 중인 상태로 back-end 서버가 정상적으로 동작하고 있다면 일정 시간 후 'UP'으로 변경 됩니다.

 

□ 로드밸런싱의 핵심 특징 

항목

특징

보안성

SynAttack 방어에 뛰어난 성능을 지님

수용성

로드밸런서는 고성능을 요구하는 중/대형 고객에 적합

서비스

HTTP/HTTPS(Bridge)/TCP/FTP 로드밸런싱 제공

성능

TCP Offload 를 이용한 웹서버 부하 경감 구현(HTTP 방식 사용시)

기타

http header(X-Forwarded-For)를 이용한 Client IP 제공(HTTP 방식 사용시)

 

□ 로드밸런싱 메소드

KT KT Cloud server의 로드밸런싱 메소드(이하 옵션)는 총 5가지 옵션을 지원하고 있습니다.

 

○ Round Robin

Round Robin 방식은 클라이언트의 요청을 단순하게 들어온 순서대로 순환을 하여 로드밸런싱을 처리하는 방법입니다.

위 그림과 같이 back-end에 3개의 서버가 존재하는 경우 '서버 1' 부터 '서버 3' 까지 새로운 연결이 생길 떄 마다, 1-2-3-1-2...과 같이 순환을 하는 방식입니다. 응답 시간이 빠르고 구성이 단순하다는 점이 장점입니다. 단, back-end 서버에 균등한 부하 분산이 이루어지지 않으며 무조건 순차적으로 포워딩 하므로 결제 시스템과 같이 연결 유지에 높은 신뢰가 요구되는 서비스인 경우 추천하지 않습니다.

○ Hasing(Source IP, Source IP+Port)

Hash 방식은 client 의 Source IP 정보 또는 Source IP + Port 정보를 바탕으로 hash 한 결과 값을 토대로 로드밸런싱을 수행합니다. 특정한 노드는 항상 동일한 Hash 값을 가지기 때문에, 동일한 클라이언트의 요청은 동일한 back-end 서버에서 응답을 받도록 하고자 할 때 주로 사용합니다.

- Source IP 방식

출발지(Source IP)주소를 기반으로 hash 값을 생성하여 hash 값을 기준으로 로드밸런싱을 수행합니다. 출발지가 동일한 주소는 항상 동일한 back-end 서버를 리턴 받기 떄문에 결재 등을 지원하는 웹 서버의 경우 세션의 유지가 이루어 질 수 있으므로 추천하는 방식입니다. 하지만, 출발지 IP 주소가 NAT 환경과 같이 수 백대의 서버가 하나의 NAT Gateway를 이용하는 경우, 로드밸런서는 여러 대의 서버가 요청을 보내왔더라도, 동일한 hash값을 얻기 때문에 부하 분산 효과를 보기 어렵다는 단점이 존재 합니다.

- Source IP+Port 방식

출발지(Source IP)주소와 Port 값을 기반으로 hash 값을 생성하여 hash 값을 기준으로 로드밸런싱을 수행합니다. 이 경우 특정 커넥션의 모든 패킷이 동일한 물리적 서버 내 서비스로 흐르도록 할 수 있습니다. Source IP 방식의 한계점인 NAT 환경에서의 단점을 극복할 수 있으나, 세션의 연속성은 끊어질 가능성이 있기 때문에 Source IP 방식과 달리 결제와 같은 시스템에는 적합하지 않습니다.

○ Least Response

Least Response 방식은 가장 빠른 Response Time(TTFB)을 제공하는 웹 서버로 로드밸런싱을 수행합니다. 로드밸런서는 back-end에 있는 가상 서버로부터 http(s) '200' 응답을 기준으로 TTFB 값을 계산 합니다. 따라서 고객이 제공하는 서비스가 웹 서버인 경우에만 본 알고리즘의 정상 동작을 보장할 수 있습니다. Least Response 방식은 back-end에 존재한 웹 서버들이 사용하는 가상 서버 자원양이 다른 경우, 서버까지 연결을 형성하는데 소요되는 시간, 각 서버가 처리하는 데이터 양이 서로 상이한 서비스 환경에서 유리하게 작용합니다.

○ Least Connection

Least Connection 방식은 새로운 클라이언트의 요청이 들어오는 경우, 로드밸런서에 연결 된 back-end 서버 중 활성(Active)화 되어 있는 연결의 수를 계산하여 가장 적은 커넥션 수를 보유한 서버로 로드밸런싱을 수행합니다.

로드밸런서에 연결 된 back-end 서버의 활성화 된 연결 수가 위 그림과 같을 경우, 새로운 연결 요청이 들어왔을 때 로드밸런서는 세 번째 서버로 연결을 설정하게 됩니다. 반복하여 연결이 수행 되는 동안 현재 활성화 된 연결 수를 점검한 뒤 적절한 back-end 서버로 연결을 넘겨주게 됩니다. 일반적인 웹 서비스 제공 환경에서는 Least Connection 알고리즘이 최적의 성능을 제공할 수 있습니다.

 

1.1.3 유의사항/제약사항

□ Port Forwarding과 보안

로드밸런서를 생성한 뒤, 외부 공인 인터넷망에서 접근이 가능하게 하려면 [ KT Cloud server - 네트워크]에서 포트포워딩 구성을 진행하게 됩니다. 이 때, 포트포워딩 추가 시 지정한 IP/Public Port로의 방화벽이 모든 Source IP에 대해 오픈 됩니다. 보안 강화를 위해 back-end 서버에 대한 방화벽 설정을 로드밸런서의 네트워크 대역에 해당하는 아래 CIDR만 접근 허용하는 정책 적용을 권고하고 있습니다.

Central A/B : 14.63.233.24/29

KOR-HA : 14.63.176.112/28

Seoul M : 211.253.15.48/29

Seoul M2 : 211.252.80.40/29

□ 로드밸런서와 서버 응답 성능

로드밸런서는 사용자가 지정한 기준(옵션)에 따라 온전하게 네트워크 관점에서 분석하여 로드밸런싱을 수행합니다. 따라서, 각각의 back-end 서버의 성능 또는 파라미터 설정에 따라 실제 서버에 로드되는 부하량은 언제나 균등하지 않을 수 있습니다. 수 차례의 테스트와 성능 검증을 진행 하시어 운영하고자 하는 서비스에 최적화 된 옵션을 설정 하시는 것을 권고하고 있습니다.

□ 로드밸런서 세션 수 제한

KT KT Cloud 로드밸런서는 타 고객/영역 서비스 보호를 위하여 LB당 최대 세션 수를 40만으로 제한하고 있습니다.