리스너
리스너(Listener)는 트래픽이 유입되는 포트입니다. 하나의 로드 밸런서(Load Balancer)에 여러 개의 리스너를 추가할 수 있으며, 각각의 리스너는 하나의 기본 대상 그룹(Target Group)과 연결됩니다.
- Application Load Balancer(ALB)의 리스너(HTTP, HTTPS)는 규칙과 조건을 추가하여 트래픽을 세밀하게 분산시킬 수 있습니다. 이 중 HTTPS 리스너는 SSL 인증서를 적용하여 암호화된 트래픽을 처리합니다.
- Network Load Balancer(NLB)의 리스너(TCP, UDP)는 4계층에서 동작하며 대량의 요청을 빠르게 처리할 수 있는 리스너입니다. TLS 리스너는 TLS 프로토콜을 지원하며, ALB의 HTTPS 리스너와 마찬가지로 SSL 인증서를 적용하여 암호화된 트래픽을 처리합니다.
기본 개념
ALB, NLB에서 공통적으로 적용되는 리스너의 기본 개념을 설명합니다.
상태
리스너에는 두 가지 상태 정보가 있습니다. 프로비저닝(Provisioning) 상태는 리소스가 정상적으로 생성되었는지 또는 수정이나 삭제가 진행 중인지를 나타내고, 운영(Operating) 상태는 생성된 리소스를 사용할 수 있는지를 나타냅니다. 두 상태 모두 하위 리소스의 상태를 조합하여 표시됩니다. 상위 리소스의 생성, 수정, 삭제가 진행되는 중에는 하위 리소스를 작업할 수 없습니다. 즉, 로드 밸런서의 생성, 수정, 삭제가 진행 중인 경우에는 리스너와 대상 그룹의 정보를 변경하거나 삭제할 수 없습니다.
리스너 프로비저닝 상태
| 상태 | 정의 |
|---|---|
Active | 리스너 프로비저닝이 완료되어 정상 동작 중인 상태 |
Error | 리스너 프로비저닝에 실패한 상태 |
Creating | 리스너가 생성 중인 상태 |
Updating | 리스너가 수정 중이거나, 하위 리소스(ALB 규칙/조건, 대상 그룹, 대상, 상태 확인)의 생성·수정·삭제 작업이 진행 중인 상태 |
Deleting | 리스너가 삭제 중인 상태 |
리스너 운영 상태
| 상태 | 정의 |
|---|---|
Online | 리스너가 정상적으로 동작 |
Offline | 관리상 비활성화된 상태 |
Draining | 기존 연결은 정상적으로 유지되지만 새로운 연결 요청을 수용할 수 없는 상태 |
Error | 리스너가 에러 상태이거나 하위 리소스 중 일부가 에러 상태 - 하위 리소스: (해당 리스너와 연결된)ALB 규칙/조건, 대상 그룹, 대상, 상태 확인 |
리스너 프로토콜
리스너의 프로토콜은 로드 밸런서와 클라이언트가 통신하는 규칙 체계를 의미합니다. 사용자는 HTTP, HTTPS, TCP, UDP, TLS 중 하나의 프로토콜을 선택할 수 있습니다. 리스너로 유입된 트래픽은 기본 대상 그룹으로 분산됩니다. 리스너의 프로토콜에 따라 기본 대상 그룹으로 설정할 수 있는 대상 그룹의 프로토콜이 제한됩니다.
리스너 프로토콜과 대상 그룹 프로토콜 조합
| 로드 밸런서 | 리스너 프로토콜 | 대상 그룹 프로토콜 |
|---|---|---|
| ALB | HTTP | HTTP, PROXY |
HTTPS | HTTP | |
| NLB | TCP | HTTP, HTTPS, TCP, PROXY |
UDP | UDP | |
TLS | TCP |
SSL 인증서
ALB의 HTTPS 리스너, NLB의 TLS 리스너를 사용하는 경우, 로드 밸런서에 최소 한 개 이상의 SSL 인증서를 설정해야 합니다. 로드 밸런서는 등록된 인증서를 기반으로 SSL 핸드셰이크와 암호화 및 복호화를 처리합니다. 인증서는 계정 단위로 관리되며 계정이 소유한 인증서 중에서 선택할 수 있습니다. 등록한 인증서가 없거나 기존에 보유한 인증서를 등록하여 사용하고 싶은 경우 새 인증서 추가 기능을 사용할 수 있습니다. 새 인증서를 등록하기 위해서는 PEM 인코딩된 프라이빗 키, 본문, 체인을 입력해야 합니다. Certificate Manager 서비스를 통해 인증서의 등록 및 삭제 등 관리 작업을 수행할 수 있으며, 해당 서비스에서 등록된 인증서를 HTTPS 리스너 또는 TLS 리스너 사용 시 연결시킬 수 있습니다.
보안 정책(SSL/TLS)
최소 지원 TLS 버전을 설정할 수 있습니다. ALB의 HTTPS 리스너, NLB의 TLS 리스너에서 설정 가능하며, 클라이언트가 보안 연결을 설정하는 데 도움을 줍니다. 제공하는 TLS 버전 중 한 가지를 선택하여 적용합니다. 암호화 스위트(Cipher Suite)는 전송 계층 보안(TLS)에서 쓰이는 인터넷 보안 보조 알고리즘의 집합입니다. 지원하는 TLS 프로토콜 버전 및 암호화 스위트 목록은 달라질 수 있습니다.
Cipher Suites
TLS 버전별 지원하는 Cipher Suite
| Cipher Suite 이름 | TLS 1.0 | TLS 1.1 | TLS 1.2 | TLS 1.3 |
|---|---|---|---|---|
| TLS_AES_128_GCM_SHA256 | v | |||
| TLS_AES_256_GCM_SHA384 | v | |||
| TLS_CHACHA20_POLY1305_SHA256 | v | |||
| ECDHE-ECDSA-AES128-GCM-SHA256 | v | |||
| ECDHE-ECDSA-AES256-GCM-SHA384 | v | |||
| ECDHE-RSA-AES128-GCM-SHA256 | v | |||
| ECDHE-RSA-AES256-GCM-SHA384 | v | |||
| ECDHE-ECDSA-AES128-SHA256 | v | |||
| ECDHE-ECDSA-AES256-SHA384 | v | |||
| ECDHE-RSA-AES128-SHA256 | v | |||
| ECDHE-RSA-AES256-SHA384 | v | |||
| AES128-GCM-SHA256 | v | |||
| AES256-GCM-SHA384 | v | |||
| AES128-SHA256 | v | |||
| AES256-SHA256 | v | |||
| DHE-RSA-AES128-GCM-SHA256 | v | |||
| DHE-RSA-AES256-GCM-SHA384 | v | |||
| DHE-RSA-AES128-SHA256 | v | |||
| DHE-RSA-AES256-SHA256 | v | |||
| ECDHE-RSA-AES128-SHA(CBC) | v | v | v | |
| ECDHE-RSA-AES256-SHA(CBC) | v | v | v | |
| ECDHE_ECDSA_AES128_SHA | v | v | v | |
| ECDHE-ECDSA-AES256-SHA | v | v | v | |
| AES128-SHA | v | v | v | |
| AES256-SHA | v | v | v | |
| DHE-RSA-AES128-SHA | v | v | v | |
| DHE-RSA-AES256-SHA | v | v | v | |
| CAMELLIA128-SHA | v | v | v | |
| CAMELLIA256-SHA | v | v | v | |
| DHE-RSA-CAMELLIA128-SHA | v | v | v | |
| DHE-RSA-CAMELLIA256-SHA | v | v | v |
기본 동작
리스너로 수신된 트래픽을 처리하는 기본 방식으로 리스너의 기본 동작은 Forward로 고정됩니다. 하나의 대상 그룹을 선택할 수 있으며 선택한 대상 그룹은 기본 대상 그룹으로 동작합니다.
규칙 추가를 통해 Forward, Redirect To URL, Redirect Prefix와 같은 동작 설정을 규칙에 추가할 수 있습니다.
속성
리스너는 기본 속성으로 연결 유휴 제한을 설정할 수 있습니다. 연결 유휴 제한을 설정 시 로드 밸런서가 연결이 유휴 상태일 때 허용하는 시간을 초 단위로 설정하며, 1~4000초까지 설정할 수 있습니다. 기본값은 50초입니다.
애플리케이션 로드 밸런서는 더 많은 속성 설정을 제공하며, X-Forwarded-For Header 처리, X-Forwarded-Port 전송, X-Forwarded-Proto 전송과 같은 패킷 설정이 가능합니다.
로드 밸런서별 상세
로드 밸런서별 리스너 세부 설정을 설명합니다.
Network Load Balancer
NLB는 리스너 프로토콜로 TCP, UDP, 또는 TLS를 선택할 수 있습니다. TLS 리스너는 SSL 인증서를 지정해야 합니다. 로드 밸런서는 이 인증서를 사용해 연결을 종료하고 대상으로 전송하기 전에 클라이언트의 요청을 해독합니다.
TLS 리스너
TLS 리스너를 사용하여 암호화 및 복호화 작업을 로드 밸런서로 오프로드할 수 있습니다. TLS 리스너를 사용하려면 로드 밸런서에 한 개 이상의 서버 인증서를 등록하고 지정해야 합니다. 이 인증서를 기본 인증서라고 합니다. TLS 리스너를 생성한 후 기본 인증서를 교체할 수 있습니다.
카카오클라우드 NLB는 TLS 1.0부터 1.2 버전까지 지원하고 있습니다. TLS 버전별 Cipher Suite 목록은 보안 정책을 확인하세요.
Application Load Balancer
ALB는 리스너 프로토콜로 HTTP 및 HTTPS를 지원합니다. ALB는 상세한 규칙 조건, 규칙 작업 및 규칙 우선순위를 지정할 수 있습니다. 모든 리스너는 생성 시 기본 동작이 되는 기본 규칙이 자동으로 생성되며, 이는 항상 마지막에 수행됩니다. 필요에 따라 추가 규칙의 생성 및 편집이 가능합니다.
규칙 동작 방식
ALB 규칙 동작 방식은 Forward, Redirect To URL, Redirect Prefix 중 하나로 설정할 수 있습니다. 리스너 생성 시 기본으로 설정되는 규칙 동작 방식은 Forward입니다. 동작 설정에서 대상 그룹을 선택할 수 있으며, 연결 가능한 대상 그룹은 리스너와 대상 그룹 프로토콜 관계와 동일합니다. 또한 다른 로드 밸런서에 연결된 대상 그룹은 선택할 수 없습니다. Forward 규칙 동작은 요청을 지정된 대상 그룹으로 전달합니다.
Redirect To URL 규칙 동작 방식은 프로토콜과 URL, 응답 코드를 설정할 수 있습니다. 한 규칙 내에서 서로 다른 조건 유형은 AND로 연산되며, 서로 다른 규칙으로 생성될 경우에는 OR로 연산합니다. 연결 요청 트래픽에 대하여 각각의 조건에 대하여 TRUE 또는 FALSE을 판별하고, 최종적으로 TRUE으로 판단되었을 때 설정한 동작이 수행됩니다. Redirect to URL 규칙 동작은 요청을 지정한 URL로 리디렉션합니다.
Redirect Prefix 규칙 동작 방식은 프로토콜 및 Prefix URL, 응답 코드를 설정할 수 있습니다. 접두사가 일치하는 모든 URL로 요청을 리디렉션합니다.
| ALB 규칙 동작 방식 | 설명 |
|---|---|
| Forward | 대상 그룹으로 전달 |
| Redirect To URL | URL로 전달 |
| Redirect Prefix | 접두사가 일치하는 모든 URL로 전달 |
규칙 조건
ALB 규칙 조건은 유형, 입력 항목, 비교 방식으로 구성됩니다. 규칙 조건의 유형은 Host-Header, Path, HTTP-Header, File Type, Cookie 중 하나를 선택할 수 있습니다. 입력 항목과 비교 방식은 선택한 규칙 조건 유형에 따라 입력 및 선택 가능한 값이 달라집니다. 하나의 규칙에 여러 개의 규칙 조건을 추가할 수 있습니다.
ALB 규칙 조건의 유형
| 유형 | 설명 |
|---|---|
| Host-Header | URI 호스트 이름을 입력 항목과 비교하여 비교 방식에 맞춰 라우팅 |
| Path | URI의 경로 부분을 입력 항목과 비교하여 비교 방식에 맞춰 라우팅 |
| HTTP-Header | URI 헤더에서 키에 정의된 헤더를 찾아 입력 항목과 비교하여 비교 방식에 맞춰 라우팅 |
| Cookie | URI 헤더에서 키에 정의된 쿠키를 찾아 입력 항목과 비교하여 비교 방식에 맞춰 라우팅 |
| File Type | URI의 끝에 있는 파일 유형을 입력 항목과 비교하여 비교 방식에 맞춰 라우팅 |
ALB 규칙 조건의 비교 방식
| 비교 방식 | 설명 |
|---|---|
| 일치 / 일치하지 않음 | 키의 값 혹은 키가 없을 경우, 값이 문자열과 일치하거나 일치하지 않음 |
| 포함 / 포함하지 않음 | 문자열이 값을 포함하거나 포함하지 않음 |
| 값으로 시작 / 값으로 시작하지 않음 | 문자열이 값으로 시작하거나 시작하지 않음 |
| 값으로 끝남 / 값으로 끝나지 않음 | 문자열이 값으로 끝나거나 끝나지 않음 |
ALB 규칙 조건의 유형에 따른 비교 방식 및 값 입력 항목
| 조건 유형 | 비교 방식 | 입력 항목 |
|---|---|---|
| Host-Header | 일치, 일치하지 않음 | 값 |
| Path | 모두 | 값 |
| HTTP-Header | 모두 | 키, 값 |
| Cookie | 모두 | 키, 값 |
| File Type | 일치, 일치하지 않음 | 값 |
ALB 속성 상세 설정
ALB 리스너는 기본 속성 설정인 연결 유휴 제한 외에도 패킷 설정이 가능합니다. X-Forwarded-For, X-Forwarded-Port, X-Forwarded-Proto 요청 헤더의 세 종류를 패킷 설정으로 사용 가능합니다.
X-Forwarded-For요청 헤더는 ALB를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. ALB가 대상에 요청을 보내기 전에 HTTP/HTTPS 요청의 X-Forwarded-For 헤더 속성을 설정할 수 있습니다.X-Forwarded-Port요청 헤더는 클라이언트가 로드 밸런서 연결에 사용한 대상 포트를 식별하는 데 도움을 줍니다.X-Forwarded-Proto요청 헤더는 클라이언트가 로드 밸런서 연결에 사용한 프로토콜(HTTP 또는 HTTPS)을 식별하는 데 도움을 줍니다.