Load Balancer

페이지 이동경로

Load Balancer

Load Balancer는 시스템으로 유입되는 대량의 트래픽을 다수의 서버로 분산시켜 안정적인 서비스 운영을 지원합니다.
카카오 i 클라우드의 로드밸런서는 하드웨어 기반으로 초당 100만 이상의 커넥션에도 대응할 수 있도록 구성되어 있습니다. 사용자는 로드밸런서의 성능에 대한 고려 없이 사용자의 서비스에만 집중할 수 있습니다.

주요 개념

스케일 아웃

로드밸런서는 스케일 아웃(Scale-out, 수평 확장)을 통해 대규모 트래픽에 대응하고, 헬스 체크를 기반으로 정상적인 서버에만 트래픽을 분배해 시스템의 가용성을 향상시킵니다. 사용자는 트래픽이 증가할 때 인스턴스 타입을 더 높은 사양으로 변경해 대응하는 스케일 업(Scale-up, 수직 확장) 전략을 선택할 수 있습니다.

하지만 스케일 업 전략은 인스턴스의 최대 사양이 정해져 있어 보다 더 높은 사양으로 변경하는데 한계가 있습니다. 또한, 사양 변경 시점에 일시적으로 인스턴스가 정지된다는 단점이 있습니다. 반면, 스케일 아웃(Scale-out, 수평 확장) 전략은 인스턴스의 사양이 아닌 수를 늘리는 전략으로 인스턴스의 최대 사양과 관계 없이 증가하는 트래픽에 효율적으로 대응할 수 있습니다. 이러한 스케일 아웃 전략은 로드밸런서를 통해 구현할 수 있습니다.

로드밸런서는 다수의 인스턴스의 상단에 위치해 각 인스턴스로 트래픽이 분산되도록 구성됩니다. 카카오 i 클라우드 콘솔에서는 로드밸런서를 생성하고 연결된 타겟 그룹에 인스턴스를 추가하는 것만으로 간편하게 스케일 아웃을 구현할 수 있습니다.
스케일 아웃 구현에 대한 자세한 설명은 로드밸런서 만들기와 타겟 그룹 관리하기연결 자원 설정하기를 참고하시기 바랍니다.

안내
오토스케일링은 메트릭 및 스케줄을 기반으로 사용자의 개입 없이 자동으로 스케일 아웃을 구현할 수 있는 기능입니다.
오토스케일링은 추후 지원 예정입니다.

네트워크와 공인 IP

로드밸런서를 VPC 기반 사용자 네트워크에 배포하고, 공인 IP를 연결해 외부에 공개할 수 있습니다.
로드밸런서는 로드밸런서가 배포된 서브넷의 대역에서 하나의 사설 IP를 할당 받습니다. 네트워크 내부의 다른 자원은 로드밸런서에 할당된 사설 IP를 통해 로드밸런서에 접근할 수 있습니다.
사용자가 공인 IP를 로드밸런서에 연결하면 인터넷에 공개할 수 있으며, 공인 IP 주소를 통해 외부에서 접근할 수 있습니다. 공인 IP 연결 해제 시, 인터넷 접근은 차단되며 로드밸런서가 배포된 네트워크 내부에서만 사설 IP를 통해 접근할 수 있습니다.

리스너와 타겟 그룹

리스너는 외부로부터 트래픽이 유입되는 로드밸런서의 포트를 의미하고, 타겟 그룹은 로드밸런서에 유입된 트래픽이 분산될 자원의 집합입니다. 로드밸런서에서는 트래픽이 유입되는 포트인 리스너를 정의하고, 유입된 트래픽을 사용자 환경에 적합하게 타겟 그룹으로 분산시킬 수 있습니다.

리스너 프로토콜과 포트 번호

리스너의 프로토콜은 로드밸런서와 클라이언트가 통신하는 규칙 체계를 의미합니다. 사용자는 HTTPHTTPSTCPUDP 중 하나의 프로토콜을 선택할 수 있습니다. 또한 리스너의 포트 번호는 1 이상 65535 이하의 정수로 설정할 수 있습니다.
리스너로 유입된 트래픽은 기본 타겟 그룹으로 분산됩니다. 기본 타겟 그룹으로 설정 가능한 타겟 그룹은 리스너의 프로토콜에 의해 제한됩니다. 리스너와 타겟 그룹의 프로토콜은 아래의 형태로만 조합할 수 있습니다.

리스너의 프로토콜 설정 가능한 타겟 그룹의 프로토콜
HTTP HTTP
HTTPS HTTP, TCP
TCP HTTP, HTTPS, TCP, PROXY
UDP UDP

리스너 HTTP 헤더 정책 설정

X-Forwarded 헤더 설정은 HTTP, HTTPS 로드밸런서에서 사용할 수 있으며 타겟 그룹에 연결된 자원에 클라이언트의 IP, Port 등의 정보를 제공할 수 있습니다.

정책 이름 설명
X-Forwarded-For 클라이언트가 로드밸런서와의 연결에 사용한 IP 확인
X-Forwarded-Port 클라이언트가 로드밸런서와의 연결에 사용한 포트 확인

타겟 그룹 설정

타겟 그룹은 로드밸런서에 유입된 트래픽이 분산될 자원의 집합입니다. 타겟 그룹을 생성하고 다양한 설정을 적용할 수 있습니다. 타겟 그룹 설정값은 다음과 같습니다.

구분 설명
연결 자원 설정 타겟 그룹의 연결 자원
- Virtual Machine 인스턴스
- Bare Metal Server 인스턴스의 특정 인터페이스
알고리즘 설정 타겟 그룹에 연결된 자원에 어떠한 방식으로 트래픽을 분산시킬지 알고리즘 설정
- Round Robin: 클라이언트의 요청을 각 연결 자원에 순차적으로 트래픽 분산
- Least Connection: 커넥션이 가장 적은 연결 자원에 우선적으로 트래픽 분산
- Source IP Port: 클라이언트의 IP와 포트를 기준으로, 동일한 클라이언트의 요청에 대해서는 동일한 연결 자원으로 분산
헬스 체크 설정 타겟 그룹에 연결된 자원의 상태를 확인하고, 장애가 발생한 자원을 트래픽 분배 대상에서 제외
세션 유지 정책 설정 동일한 클라이언트의 요청은 동일한 자원과 연결되도록 설정
- App Cookie: 사용자가 구체적으로 명시한 쿠키 이름을 사용해 연결
- HTTP Cookie: 로드밸런서가 임의로 생성한 쿠키를 사용해 연결
- Source IP: 클라이언트의 IP를 기준으로 연결
트래픽 가중치 설정 타겟 그룹에 연결된 자원에 대해 각각 다른 비중으로 트래픽을 분산
- 트래픽 가중치는 각 자원에 대해 1 이상 256 이하의 정수로 입력 가능
- 자원별 트래픽 분산 비율 = (해당 자원의 가중치 / 모든 연결 자원의 가중치 합) * 100

안내
로드밸런서의 연결 자원은 로드밸런서와 동일한 네트워크에 배포된 자원으로 제한됩니다.

헬스 체크

타겟 그룹에 헬스 체크 설정을 적용해 타겟 그룹에 연결된 자원의 상태를 확인하고 장애가 발생한 서버를 트래픽 분배 대상에서 제외할 수 있습니다.

헬스 체크 타입과 타겟 그룹 프로토콜

헬스 체크의 타입은 로드밸런서와 연결 자원이 통신하는 프로토콜을 기준으로 HTTPHTTPSPINGTCPTCP-HELLOUDP-CONNECT 중에서 선택할 수 있습니다. 설정 가능한 헬스 체크 타입은 타겟 그룹의 프로토콜 의해 제한됩니다. 헬스 체크 타입과 타겟 그룹 프로토콜은 아래의 형태로만 조합될 수 있습니다.

타겟 그룹의 프로토콜 설정 가능한 헬스 체크 타입
HTTP HTTP, PING
HTTPS HTTPS, PING
TCP PING, TCP, TLS-HELLO
UDP UDP-CONNECT
PROXY PING, TCP, TLS-HELLO

헬스 체크 설정

헬스 체크 기능 사용 시 다음의 항목들을 설정할 수 있습니다.

구분 설명
체크 주기 로드밸런서가 연결 자원을 체크하는 주기(단위: 초)
타임 아웃 설정 응답이 지연되는 연결 자원을 기다리는 최대 시간 설정(단위: 초)
- 지정된 시간을 초과하는 경우, 연결 자원과의 통신이 실패한 것으로 간주
상태 전환 헬스 체크 성공 및 실패 여부에 따라 연결 자원의 상태 변환
- 정상 자원 판단 기준: 사용자가 상태 전환 기준(성공)으로 입력한 횟수만큼 헬스 체크가 연속적으로 성공한 경우
- 비정상 자원 판단 기준: 사용자가 상태 전환 기준(실패)으로 입력한 횟수만큼 헬스 체크가 연속적으로 실패한 경우
- 상태가 비정상적이라고 판단된 연결 자원은 트래픽 분산 대상에서 제외

안내
타임 아웃 설정은 체크 주기보다 작은 값으로 설정되어야 합니다.

HTTP, HTTPS 타입 추가 속성

헬스 체크 타입 HTTPHTTPS인 경우, 아래 속성에 대해 추가로 설정할 수 있습니다.

구분 설명
HTTP 메서드 {GET, HEAD, OPTIONS, POST, PUT, TRACE, PATCH, DELETE, CONNECT} 중 선택
HTTP 버전 {1.0 , 1.1} 중 선택
HTTP 상태 코드 연결 자원이 로드밸런서로 응답할 것으로 예상되는 상태 코드 설정
- 사용자가 설정한 HTTP 상태 코드대로 연결 자원이 응답한 경우 헬스 체크에 성공한 것으로 처리
- 단일 상태 코드 입력 예시 : 200, 201
- 다수의 상태 코드 입력 예시 : 201, 202, 401, 402
- 범위 지정 예시 : 200-500
체크 경로 로드밸런서가 헬스 체크를 수행할 경로를 URL Path를 기준으로 입력

접근 권한

프로젝트에 등록된 멤버는 프로젝트 내 생성된 모든 로드밸런서에 대한 접근 권한을 갖습니다. 프로젝트의 멤버를 추가하거나 제외해 생성된 로드밸런서에 대한 접근 권한을 관리할 수 있습니다.

안내
프로젝트 멤버 관리에 대한 자세한 설명은 프로젝트 역할 관리하기 문서를 참고하시기 바랍니다.

SSL 정책

HTTPS 리스너를 사용하는 경우, 로드밸런서에 최소한 한개 이상의 SSL 인증서를 등록해야 합니다. 로드밸런서는 등록된 인증서를 기반으로 SSL Handshake와 암/복호화 처리를 수행합니다.

SSL 인증서

구분 설명
SSL 기본 인증서 HTTPS 리스너 생성 시 처음 지정한 인증서로, 사용자가 SNI 프로토콜을 사용하지 않고 호스트 이름을 지정하여 연결한 경우 기본적으로 사용되는 인증서
- 기본 인증서는 리스너에서 해제 불가하며, 설정한 기본 인증서를 해제하려면 다른 인증서를 등록하여 교체
SSL 추가 인증서 기본 인증서 제외한 추가 인증서를 리스너 생성 후 SSL 설정하기를 통해 등록
- 추가 인증서는 리스너 당 5개까지 등록 가능
SSL 인증서 등록 및 보관 로드밸런서 만들기 또는 리스너 만들기의 HTTPS 리스너 생성 과정에서 인증서를 등록하거나, HTTPS 인증서 생성 후 SSL 설정하기를 통해 인증서 등록 가능
- PEM 형식의 인증서 프라이빗 키, 인증서 본문, 인증서 체인을 입력하면, 해당 정보들은 PKCS12 포맷으로 변환하여 별도의 암호화 스토리지에 보관됨
SSL 인증서 해제 SSL 설정하기를 통해 리스너에 설정된 인증서를 해제
- 기본 인증서는 해제할 수 없으며 HTTPS 리스너는 최소 1개 이상의 인증서 지정 필요
SSL 인증서 삭제 로드밸런서 만들기, 리스너 만들기의 HTTPS 리스너 생성 화면에서 SSL인증서 삭제 링크를 통해 삭제할 수 있으며, SSL 설정 하기 화면에서 삭제 링크를 통해 인증서 삭제 가능

TLS 프로토콜/Cipher Suite 지원 정책
SSL 인증서 설정과 더불어 최소 지원 TLS 버전을 설정할 수 있습니다. 다음 표에서는 최소 TLS 버전 별로 지원하는 TLS 프로토콜 및 Cipher Suite 목록에 대해 설명합니다.
지원하는 TLS 프토토콜 버전 및 Cipher Suite 목록은 달라질 수 있습니다.

최소 TLS 버전 TLSv1.0 TLSv1.1 TLSv1.2
TLS 프로토콜      
TLSv1.0 V    
TLSv1.1 V V  
TLSv1.2 V V V
Cipher Suite      
ECDHE-RSA-AES128-GCM-SHA256 V V V
ECDHE-RSA-AES128-SHA V V V
ECDHE-RSA-AES128-SHA256 V V V
ECDHE-RSA-AES256-GCM-SHA384 V V V
ECDHE-RSA-AES256-SHA V V V
ECDHE-RSA-AES256-SHA384 V V V
AES128-GCM-SHA256 V V V
AES128-SHA V V V
AES128-SHA256 V V V
AES256-GCM-SHA384 V V V
AES256-SHA V V V
AES256-SHA256 V V V
CAMELLIA128-SHA V V V
CAMELLIA256-SHA V V V
DHE-RSA-AES128-GCM-SHA256 V V V
DHE-RSA-AES128-SHA V V V
DHE-RSA-AES128-SHA256 V V V
DHE-RSA-AES256-GCM-SHA384 V V V
DHE-RSA-AES256-SHA V V V
DHE-RSA-AES256-SHA256 V V V
DHE-RSA-CAMELLIA128-SHA V V V
DHE-RSA-CAMELLIA256-SHA V V V

사용 가이드

안내
카카오 i 클라우드의 Load Balander 서비스에 대한 자세한 사용 가이드는 Load Balancer > How-to Guides 문서를 참고하시기 바랍니다.

Load Balancer 사용 가이드

문서 설명
로드밸런서 만들기 로드밸런서를 생성하는 방법을 설명합니다.
로드밸런서 관리하기 로드밸런서를 조회하거나 설정을 변경해 사용자 환경에 적합하게 구성하는 방법을 설명합니다.
리스너 만들기 로드밸런서에 트래픽이 유입되는 포트인 리스너 생성 방법을 설명합니다.
리스너 관리하기 리스너를 조회하거나 설정을 변경해 사용자 환경에 적합하게 구성하는 방법을 설명합니다.
타겟 그룹 만들기 로드밸런서로 유입된 트래픽이 분배되는 대상인 타겟 그룹 생성 방법을 설명합니다.
타겟 그룹 관리하기 타겟 그룹을 조회하거나 설정을 변경해 사용자 환경에 적합하게 구성하는 방법을 설명합니다