본문으로 건너뛰기

Listener

Listener는 트래픽이 유입되는 포트입니다. 하나의 Load Balancer에 여러 개의 Listener를 추가할 수 있으며, 각각의 Listener는 하나의 기본 Target Group과 연결됩니다.

  • Application Load Balancer(ALB)의 Listener(HTTP, HTTPS)는 규칙과 조건을 추가하여 트래픽을 세밀하게 분산시킬 수 있습니다. 이 중 HTTPS Listener는 SSL 인증서를 적용하여 암호화된 트래픽을 처리합니다.
  • Network Load Balancer(NLB)의 Listener(TCP, UDP)는 4계층에서 동작하며 대량의 요청을 빠르게 처리할 수 있는 Listener입니다. TLS Listener는 TLS 프로토콜을 지원하며, ALB의 HTTPS Listener와 마찬가지로 SSL 인증서를 적용하여 암호화된 트래픽을 처리합니다.
  • Direct Server Return Network Load Balancer(DSRNLB)의 Listener는 이 Listener의 Protocol과 Target Group의 Target이 사용할 포트 번호가 일치해야 합니다. 상세한 내용은 DSRNLB에서 확인하시기 바랍니다.

기본 개념

ALB, NLB, DSRNLB에서 공통적으로 적용되는 Listener의 기본 개념을 설명합니다.

상태

Listener는 두 가지의 상태 정보를 확인할 수 있습니다. 리소스가 정상적으로 생성되었는지 또는 수정이나 삭제가 진행중인지 알려주는 Provisioning 상태와, 생성된 리소스가 사용 가능한 상태인지를 알려주는 Operating 상태입니다. 두 가지의 상태 모두 하위 리소스의 상태를 조합하여 표시됩니다. 상위 리소스의 생성, 수정, 삭제가 진행되는 중에는 하위 리소스의 작업이 불가능합니다. 즉, Load Balancer의 생성, 수정, 삭제가 진행중인 경우에는 Listener와 Target Group의 정보를 변경하거나 삭제할 수 없습니다.

Listener Provisioning 상태
상태정의
ActiveListener Provisioning 성공
ErrorListener Provisioning 실패
CreatingListener가 생성 진행중
UpdatingListener가 수정 진행중이거나 하위 리소스의 생성/수정/삭제가 진행중
- 하위 리소스: (해당 Listener와 연결된)ALB 규칙/조건, Target Group, Target, 상태 확인
DeletingListener가 삭제 진행중
Listener Operating 상태
상태정의
OnlineListener가 정상적으로 동작
Offline관리상 비활성화된 상태
ErrorListener가 에러 상태이거나 하위 리소스 중 일부가 에러 상태
- 하위 리소스: (해당 Listener와 연결된)ALB 규칙/조건, Target Group, Target, 상태 확인

Listener Protocol

Listener의 Protocol은 Load Balancer와 클라이언트가 통신하는 규칙 체계를 의미합니다. 사용자는 HTTP, HTTPS, TCP, UDP, TLS 중 하나의 Protocol을 선택할 수 있습니다. Listener로 유입된 트래픽은 기본 Target Group으로 분산됩니다. Listener의 Protocol에 따라 기본 Target Group으로 설정할 수 있는 Target Group의 Protocol이 제한됩니다.

Listener Protocol과 Target Group Protocol 조합
Load BalancerListener ProtocolTarget Group Protocol
ALBHTTP        HTTP, PROXY
HTTPSHTTP
NLBTCPHTTP, HTTPS, TCP, PROXY
UDPUDP
TLSTCP
DSRNLBTCPTCP
UDPUDP
안내

DSRNLB에서 UDP Listener를 사용 시 Target Instance에 추가적인 설정이 필요하며, 특정 운영 체제만 지원합니다. 자세한 정보는 How-to Guides 문서를 확인하시기 바랍니다.

SSL 인증서

ALB의 HTTPS Listener, NLB의 TLS Listener를 사용하는 경우, Load Balancer에 최소 한 개 이상의 SSL 인증서를 설정해야 합니다. Load Balancer는 등록된 인증서를 기반으로 SSL 핸드셰이크와 암호화 및 복호화를 처리합니다. 인증서는 계정 단위로 관리되며 계정이 소유한 인증서 중에서 선택할 수 있습니다. 등록한 인증서가 없거나 기존에 보유한 인증서를 등록하여 사용하고 싶은 경우 새 인증서 추가 기능을 사용할 수 있습니다. 새 인증서를 등록하기 위해서는 PEM 인코딩된 프라이빗 키, 본문, 체인을 입력해야 합니다.

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

보안 정책(SSL/TLS)

SSL 인증서 설정과 더불어 최소 지원 TLS 버전을 설정할 수 있습니다. ALB의 HTTPS Listener, NLB의 TLS Listener에서 설정 가능하며, 클라이언트가 보안 연결을 설정하는 데 도움을 줍니다. 제공하는 TLS 버전 중 한 가지를 선택하여 적용합니다. 암호화 스위트(Cipher Suite)는 전송 계층 보안(TLS)에서 쓰이는 인터넷 보안 보조 알고리즘의 집합입니다. 지원하는 TLS Protocol 버전 및 암호화 스위트 목록은 달라질 수 있습니다.

Cipher Suites
Cipher SuiteTLSv1.0TLSv1.1TLSv1.2
ECDHE-RSA-AES128-GCM-SHA256v         
ECDHE_RSA_AES128_CBC_SHAvv
ECDHE-RSA-AES128-SHAvvv
ECDHE-RSA-AES128-SHA256v
ECDHE-RSA-AES256-GCM-SHA384v
ECDHE_RSA_AES256_CBC_SHAvv
ECDHE-RSA-AES256-SHAvvv
ECDHE-RSA-AES256-SHA384v
AES128-GCM-SHA256v
AES128-SHAvvv
AES128-SHA256v
AES256-GCM-SHA384v
AES256-SHAvvv
AES256-SHA256v
CAMELLIA128-SHAvvv
CAMELLIA256-SHAvvv
DHE-RSA-AES128-GCM-SHA256v
DHE-RSA-AES128-SHAvvv
DHE-RSA-AES128-SHA256v
DHE-RSA-AES256-GCM-SHA384v
DHE-RSA-AES256-SHAvvv
DHE-RSA-AES256-SHA256v

기본 동작

Listener로 수신된 트래픽을 처리하는 기본 방식으로 Listener의 기본 동작은 Forward로 고정됩니다. 하나의 Target Group을 선택할 수 있으며 선택한 Target Group은 기본 Target Group으로 동작합니다.
규칙 추가를 통해 Forward, Redirect To URL, Redirect Prefix와 같은 동작 설정을 규칙에 추가할 수 있습니다.

속성

Listener는 기본 속성으로 연결 유휴 제한을 설정할 수 있습니다. 연결 유휴 제한을 설정 시 Load Balancer가 연결이 유휴 상태일 때 허용하는 시간을 초 단위로 설정하며, 1~4000초까지 설정할 수 있습니다. 기본값은 50초입니다.
애플리케이션 Load Balancer는 더 많은 속성 설정을 제공하며, X-Forwarded-For Header 처리, X-Forwarded-Port 전송, X-Forwarded-Proto 전송과 같은 패킷 설정이 가능합니다.

최대 커넥션

최대 커넥션 설정 기능은 기본으로 미사용 상태이며, 필요에 따라 활성화하여 최대 커넥션 수를 지정하여 사용합니다. Listener에 연결을 유지할 수 있는 상한을 제한하여 서비스 품질을 유지하는 기능입니다.

Load Balancer별 상세

Load Balancer별 Listener 세부 설정을 설명합니다.

Network Load Balancer

NLB는 Listener Protocol로 TCP, UDP, 또는 TLS를 선택할 수 있습니다. TLS Listener는 SSL 인증서를 지정해야 합니다. Load Balancer는 이 인증서를 사용해 연결을 종료하고 Target으로 전송하기 전에 클라이언트의 요청을 해독합니다.

TLS Listener

TLS Listener를 사용하여 암호화 및 복호화 작업을 Load Balancer로 오프로드할 수 있습니다. TLS Listener를 사용하려면 Load Balancer에 한 개 이상의 서버 인증서를 배포하고 지정해야 합니다. 이 인증서를 기본 인증서라고 합니다. TLS Listener를 생성한 후 기본 인증서를 교체할 수 있습니다.
카카오클라우드 NLB는 TLS 1.0부터 1.2 버전까지 지원하고 있습니다. TLS 버전별 Cipher Suite 목록은 보안 정책을 확인하세요.

Application Load Balancer

ALB는 Listener Protocol로 HTTPHTTPS를 지원합니다. ALB는 상세한 규칙 조건, 규칙 작업 및 규칙 우선순위를 지정할 수 있습니다. 모든 Listener는 생성 시 기본 동작이 되는 기본 규칙이 자동으로 생성되며, 이는 항상 마지막에 수행됩니다. 필요에 따라 추가 규칙의 생성 및 편집이 가능합니다.

규칙 동작 방식

ALB 규칙 동작 방식은 Forward, Redirect To URL, Redirect Prefix 중 하나로 설정할 수 있습니다. Listener 생성 시 기본으로 설정되는 규칙 동작 방식은 Forward입니다. 동작 설정에서 Target Group을 선택할 수 있으며, 연결 가능한 Target Group은 Listener와 Target Group Protocol 관계와 동일합니다. 또한 다른 Load Balancer에 연결된 Target Group은 선택할 수 없습니다. Forward 규칙 동작은 요청을 지정된 Target Group으로 전달합니다.
Redirect To URL 규칙 동작 방식은 Protocol과 URL, 응답 코드를 설정할 수 있습니다. 한 규칙 내에서 서로 다른 조건 유형은 AND로 연산하지만, 동일한 조건 유형은 OR로 연산합니다. 연결 요청 트래픽에 대하여 각각의 조건에 대하여 TRUE 또는 FALSE을 판별하고, 최종적으로 TRUE으로 판단되었을 때 설정한 동작이 수행됩니다. Redirect to URL 규칙 동작은 요청을 지정한 URL로 리디렉션합니다.
Redirect Prefix 규칙 동작 방식은 Protocol 및 Prefix URL, 응답 코드를 설정할 수 있습니다. 접두사가 일치하는 모든 URL로 요청을 리디렉션합니다.

ALB 규칙 동작 방식설명
Forward     Target Group으로 전달
Redirect To URLURL로 전달
Redirect Prefix접두사가 일치하는 모든 URL로 전달
규칙 조건

ALB 규칙 조건은 유형, 입력 항목, 비교 방식으로 구성됩니다. 규칙 조건의 유형은 Holst-Header, Path, HTTP-Header, File Type, Cookie 중 하나를 선택할 수 있습니다. 입력 항목비교 방식은 선택한 규칙 조건 유형에 따라 입력 및 선택 가능한 값이 달라집니다. 하나의 규칙에 여러 개의 규칙 조건을 추가할 수 있습니다.

ALB 규칙 조건의 유형
유형설명
Host-HeaderURI 호스트 이름을 입력 항목과 비교하여 비교 방식에 맞춰 라우팅
PathURI의 경로 부분을 입력 항목과 비교하여 비교 방식에 맞춰 라우팅
HTTP-HeaderURI 헤더에서 키에 정의된 헤더를 찾아 입력 항목과 비교하여 비교 방식에 맞춰 라우팅
CookieURI 헤더에서 키에 정의된 쿠키를 찾아 입력 항목과 비교하여 비교 방식에 맞춰 라우팅
File TypeURI의 끝에 있는 파일 유형을 입력 항목과 비교하여 비교 방식에 맞춰 라우팅
ALB 규칙 조건의 비교 방식
비교 방식설명
일치 / 일치하지 않음키의 값 혹은 키가 없을 경우, 값이 문자열과 일치하거나 일치하지 않음
포함 / 포함하지 않음문자열이 값을 포함하거나 포함하지 않음
값으로 시작 / 값으로 시작하지 않음문자열이 값으로 시작하거나 시작하지 않음
값으로 끝남 / 값으로 끝나지 않음문자열이 값으로 끝나거나 끝나지 않음
ALB 규칙 조건의 유형에 따른 비교 방식 및 값 입력 항목
조건 유형비교 방식입력 항목
Host-Header일치, 일치하지 않음
Path모두
HTTP-Header모두키, 값
Cookie모두키, 값
File Type일치, 일치하지 않음
ALB 속성 상세 설정

ALB Listener는 기본 속성 설정인 연결 유휴 제한 외에도 패킷 설정이 가능합니다. X-Forwarded-For, X-Forwarded-Port, X-Forwarded-Proto 요청 헤더의 세 종류를 패킷 설정으로 사용 가능합니다.

  • X-Forwarded-For 요청 헤더는 ALB를 사용할 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. ALB가 Target Group으로 요청을 전송하기 전 헤더를 추가 또는 보존할 수 있습니다.
  • X-Forwarded-Port 요청 헤더는 클라이언트가 Load Balancer 연결에 사용한 Target 포트를 식별하는 데 도움을 줍니다. 클라이언트가 ALB에 연결하기 위해 사용한 소스 포트를 X-Forwarded-For 요청 헤더가 보존하여 Target Group에 전송합니다.
  • X-Forwarded-Proto 요청 헤더는 클라이언트가 Load Balancer 연결에 사용한 Protocol(HTTP 또는 HTTPS)을 식별하는 데 도움을 줍니다. 요청의 Protocol을 보존한 상태로 Target Group에 전송합니다.

Direct Server Return Network Load Balancer

DSRNLB는 Listener Protocol로 TCP 또는 UDP를 선택할 수 있습니다. DSRNLB의 Listener Protocol의 포트 번호는 이 Listener에 설정될 Target Group의 Target과 동일해야 합니다. 또한, DSRNLB의 Target Instance는 추가적인 설정이 필요합니다.
DSRNLB의 UDP Listener는 Linux 계열 운영 체제를 지원하며, 추가적인 설정을 통해 사용하실 수 있습니다.
자세한 내용은 Listener 추가 및 관리를 확인허시기 바랍니다.