리스너
리스너는 트래픽이 유입되는 포트입니다. 하나의 로드 밸런서에 여러 개의 리스너를 추가할 수 있으며, 각 리스너는 하나의 기본 대상 그룹(Target Group)과 연결됩니다.
- Application Load Balancer(ALB)의 리스너(HTTP, HTTPS)는 규칙과 조건을 추가하여 트래픽을 세밀하게 분산시킬 수 있습니다. 이 중 HTTPS 리스너는 SSL 인증서를 적용하여 암호화된 트래픽을 처리합니다.
- Network Load Balancer(NLB)의 리스너(TCP, UDP)는 4계층에서 동작하며 대량의 요청을 빠르게 처리할 수 있는 리스너입니다. TLS 리스너는 TLS 프로토콜을 지원하며, ALB의 HTTPS 리스너와 마찬가지로 SSL 인증서를 적용하여 암호화된 트래픽을 처리합니다.
- Direct Server Return Network Load Balancer(DSRNLB)의 리스너는 이 리스너의 프로토콜과 대상 그룹의 대상(Target)이 사용할 포트 번호가 일치해야 합니다. 상세한 내용은 DSRNLB에서 확인하시기 바랍니다.
기본 개념
ALB, NLB, DSRNLB에서 공통적으로 적용되는 리스너의 기본 개념을 설명합니다.
상태
리스너는 두 가지의 상태 정보를 확인할 수 있습니다. 리소스가 정상적으로 생성되었는지 또는 수정이나 삭제가 진행 중인지 알려주는 프로비저닝(Provisioning) 상태와, 생성된 리소스가 사용 가능한 상태인지를 알려주는 운영(Operating) 상태입니다. 두 가지의 상태 모두 하위 리소스의 상태를 조합하여 표시됩니다. 상위 리소스의 생성, 수정, 삭제가 진행되는 중에는 하위 리소스의 작업이 불가능합니다. 즉, 로드 밸런서의 생성, 수정, 삭제가 진행 중인 경우에는 리스너와 대상 그룹의 정보를 변경하거나 삭제할 수 없습니다.
리스너 프로비저닝 상태
상태 | 정의 |
---|---|
Active | 리스너 프로비저닝 성공 |
Error | 리스너 프로비저닝 실패 |
Creating | 리스너가 생성 진행중 |
Updating | 리스너가 수정 진행중이거나 하위 리소스의 생성/수정/삭제가 진행중 - 하위 리소스: (해당 리스너와 연결된)ALB 규칙/조건, 대상 그룹, 대상, 상태 확인 |
Deleting | 리스너가 삭제 진행중 |
리스너 운영 상태
상태 | 정의 |
---|---|
Online | 리스너가 정상적으로 동작 |
Offline | 관리상 비활성화된 상태 |
Error | 리스너가 에러 상태이거나 하위 리소스 중 일부가 에러 상태 - 하위 리소스: (해당 리스너와 연결된)ALB 규칙/조건, 대상 그룹, 대상, 상태 확인 |
리스너 프로토콜
리스너의 프로토콜은 로드 밸런서와 클라이언트가 통신하는 규칙 체계를 의미합니다. 사용자는 HTTP
, HTTPS
, TCP
, UDP
, TLS
중 하나의 프로토콜을 선택할 수 있습니다. 리스너로 유입된 트래픽은 기본 대상 그룹으로 분산됩니다. 리스너의 프로토콜에 따라 기본 대상 그룹으로 설정할 수 있는 대상 그룹의 프로토콜이 제한됩니다.
리스너 프로토콜과 대상 그룹 프로토콜 조합
로드 밸런서 | 리스너 프로토콜 | 대상 그룹 프로토콜 |
---|---|---|
ALB | HTTP | HTTP , PROXY |
HTTPS | HTTP | |
NLB | TCP | HTTP , HTTPS , TCP , PROXY |
UDP | UDP | |
TLS | TCP | |
DSRNLB | TCP | TCP |
UDP | UDP |
DSRNLB에서 UDP 리스너를 사용 시 대상 인스턴스에 추가적인 설정이 필요하며, 특정 운영 체제만 지원합니다. 자세한 정보는 How-to Guides 문서를 확인하시기 바랍니다.
SSL 인증서
ALB의 HTTPS 리스너, NLB의 TLS 리스너를 사용하는 경우, 로드 밸런서에 최소 한 개 이상의 SSL 인증서를 설정해야 합니다. 로드 밸런서는 등록된 인증서를 기반으로 SSL 핸드셰이크와 암호화 및 복호화를 처리합니다. 인증서는 계정 단위로 관리되며 계정이 소유한 인증서 중에서 선택할 수 있습니다. 등록한 인증서가 없거나 기존에 보유한 인증서를 등록하여 사용하고 싶은 경우 새 인증서 추가 기능을 사용할 수 있습니다. 새 인증서를 등록하기 위해서는 PEM 인코딩된 프라이빗 키, 본문, 체인을 입력해야 합니다.
인증서 관리
구분 | 설명 |
---|---|
SSL 기본 인증서 | HTTPS/TLS 리스너 생성 시 처음 지정한 인증서로, 사용자가 SNI 프로토콜을 사용하지 않고 호스트 이름을 지정하여 연결한 경우 기본적으로 사용되는 인증서 - 기본 인증서는 리스너에서 해제 불가하며, 설정한 기본 인증서를 해제하려면 다른 인증서를 등록하여 교체 |
SSL 추가 인증서 | 기본 인증서가 아닌 추가 인증서를 리스너당 5개까지 등록 가능 |
SSL 인증서 등록 및 보관 | 로드 밸런서 만들기 또는 리스너 추가 팝업창의 HTTPS/TLS 리스너 생성 과정에서 인증서를 등록하거나, 인증서 생성 후 리스너 상세 화면에서 인증서 등록 가능 - PEM 형식의 인증서 프라이빗 키, 인증서 본문, 인증서 체인을 입력하면, 해당 정보들은 PKCS12 포맷으로 변환하여 별도의 암호화 스토리지에 보관됨- 보관된 인증서는 HTTPS/TLS 리스너에 인증서를 설정할 때 목록에서 확인 |
SSL 인증서 해제 | 리스너 상세 화면에서 리스너에 설정된 인증서 해제 - 기본 인증서는 해제할 수 없으며 HTTPS/TLS 리스너는 최소 1개 이상의 인증서 지정 필요 |
SSL 인증서 삭제 | 리스너 상세 화면에서 보관된 인증서 삭제 |
보안 정책(SSL/TLS)
SSL 인증서 설정과 더불어 최소 지원 TLS 버전을 설정할 수 있습니다. ALB의 HTTPS 리스너, NLB의 TLS 리스너에서 설정 가능하며, 클라이언트가 보안 연결을 설정하는 데 도움을 줍니다. 제공하는 TLS 버전 중 한 가지를 선택하여 적용합니다. 암호화 스위트(Cipher Suite)는 전송 계층 보안(TLS)에서 쓰이는 인터넷 보안 보조 알고리즘의 집합입니다. 지원하는 TLS 프로토콜 버전 및 암호화 스위트 목록은 달라질 수 있습니다.
Cipher Suites
Cipher Suite | TLSv1.0 | TLSv1.1 | TLSv1.2 |
---|---|---|---|
ECDHE-RSA-AES128-GCM-SHA256 | v | ||
ECDHE_RSA_AES128_CBC_SHA | v | v | |
ECDHE-RSA-AES128-SHA | v | v | v |
ECDHE-RSA-AES128-SHA256 | v | ||
ECDHE-RSA-AES256-GCM-SHA384 | v | ||
ECDHE_RSA_AES256_CBC_SHA | v | v | |
ECDHE-RSA-AES256-SHA | v | v | v |
ECDHE-RSA-AES256-SHA384 | v | ||
AES128-GCM-SHA256 | v | ||
AES128-SHA | v | v | v |
AES128-SHA256 | v | ||
AES256-GCM-SHA384 | v | ||
AES256-SHA | v | v | v |
AES256-SHA256 | v | ||
CAMELLIA128-SHA | v | v | v |
CAMELLIA256-SHA | v | v | v |
DHE-RSA-AES128-GCM-SHA256 | v | ||
DHE-RSA-AES128-SHA | v | v | v |
DHE-RSA-AES128-SHA256 | v | ||
DHE-RSA-AES256-GCM-SHA384 | v | ||
DHE-RSA-AES256-SHA | v | v | v |
DHE-RSA-AES256-SHA256 | v |
기본 동작
리스너로 수신된 트래픽을 처리하는 기본 방식으로 리스너의 기본 동작은 Forward로 고정됩니다. 하나의 대상 그룹을 선택할 수 있으며 선택한 대상 그룹은 기본 대상 그룹으로 동작합니다.
규칙 추가를 통해 Forward
, Redirect To URL
, Redirect Prefix
와 같은 동작 설정을 규칙에 추가할 수 있습니다.
속성
리스너는 기본 속성으로 연결 유휴 제한을 설정할 수 있습니다. 연결 유휴 제한을 설정 시 로드 밸런서가 연결이 유휴 상태일 때 허용하는 시간을 초 단위로 설정하며, 1~4,000초까지 설정할 수 있습니다. 기본값은 50초입니다.
Application Load Balancer는 더 많은 속성 설정을 제공하며, 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)을 식별하는 데 도움을 줍니다.
Direct Server Return Network Load Balancer
DSRNLB는 리스너 프로토콜로 TCP
또는 UDP
를 선택할 수 있습니다. DSRNLB의 리스너 프로토콜의 포트 번호는 이 리스너에 설정될 대상 그룹의 대상과 동일해야 합니다. 또한, DSRNLB의 대상 인스턴스는 추가적인 설정이 필요합니다.
DSRNLB의 UDP 리스너는 Linux 계열 운영 체제를 지원하며, 추가적인 설정을 통해 사용하실 수 있습니다.
자세한 내용은 리스너 추가 및 관리를 확인하시기 바랍니다.