Classic Load Balancer의 리스너 - Elastic Load Balancing

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Classic Load Balancer의 리스너

Elastic Load Balancing을 사용하기 전에 먼저 Classic Load Balancer에 대해 하나 이상의 리스너를 구성해야 합니다. 리스너는 연결 요청을 확인하는 프로세스입니다. 리스너는 프런트 엔드(클라이언트에서 로드 밸런서) 연결을 위한 프로토콜 및 포트와 백엔드(로드 밸런서에서 백엔드 인스턴스) 연결을 위한 프로토콜 및 포트로 구성됩니다.

Elastic Load Balancing은 다음의 프로토콜을 지원합니다.

  • HTTP

  • HTTPS (보안 HTTP)

  • TCP

  • SSL (보안 TCP)

HTTPS 프로토콜은 SSL 프로토콜을 사용하여 HTTP 계층에서 보안 연결을 설정합니다. 또한 SSL 프로토콜을 사용하여 TCP 계층에서 보안 연결을 설정할 수 있습니다.

프런트 엔드 연결이 TCP 또는 SSL을 사용하는 경우에는 백엔드 연결이 TCP 또는 SSL을 사용할 수 있습니다. 프런트 엔드 연결이 HTTP 또는 HTTPS를 사용하는 경우에는 백엔드 연결이 HTTP 또는 HTTPS를 사용할 수 있습니다.

백엔드 인스턴스는 포트 1-65535에 대해 수신 대기를 할 수 있습니다.

로드 밸런서는 1~65535 포트들에 대해 수신 대기를 할 수 있습니다.

프로토콜

전형적인 웹 애플리케이션을 위한 통신은 하드웨어 및 소프트웨어 계층을 거칩니다. 각 계층은 특정한 통신 기능을 제공합니다. 통신 기능에 대한 제어권은 한 계층에서 다음 계층으로 순차적으로 전달됩니다. 개방형 시스템 간 상호 연결(OSI)은 이러한 계층에서 통신용 표준 형식을 실행하기 위한 모델 프레임워크를 정의하는데, 이를 프로토콜이라고 합니다. 자세한 내용은 Wikipedia의 OSI 모델을 참조하십시오.

Elastic Load Balancing을 사용하려면 계층 4와 계층 7에 대한 기본적인 이해가 필요합니다. 계층 4는 로드 밸런서를 통한 클라이언트와 백엔드 인스턴스 간 TCP(Transmission Control Protocol) 연결을 설명하는 전송 계층입니다. 계층 4는 로드 밸런서에서 구성이 가능한 최저 수준입니다. 계층 7은 클라이언트에서 로드 밸런서로의, 그리고 로드 밸런서에서 백엔드 인스턴스로의 HTTP(Hypertext Transfer Protocol) 및 HTTPS(보안 HTTP) 연결을 설명하는 애플리케이션 계층입니다.

Secure Sockets Layer(SSL) 프로토콜은 인터넷 같이 보안성이 낮은 네트워크에서 기밀 데이터를 암호화하는 데 주로 사용됩니다. SSL 프로토콜은 클라이언트와 백엔드 서버 간에 보안 연결을 설정하여 클라이언트와 서버 간에 전달되는 모든 데이터를 안전하고 완전하게 보호합니다.

TCP/SSL 프로토콜

프런트 엔드 및 백엔드 연결 모두에서 TCP(계층 4)를 사용하면 로드 밸런서는 헤더를 변경하지 않고 백엔드 인스턴스로 요청을 전달합니다. 요청을 수신한 후 로드 밸런서는 리스너 구성에 지정된 포트에서 백엔드 인스턴스에 대한 TCP 연결을 엽니다.

로드 밸런서가 클라이언트와 백엔드 인스턴스 간의 트래픽을 가로채기 때문에 백엔드 인스턴스의 액세스 로그에 발원 클라이언트가 아닌 로드 밸런서의 IP 주소가 포함됩니다. 프록시 프로토콜을 활성화해서 소스 IP 주소, 대상 IP 주소, 포트 번호와 같은 클라이언트의 연결 정보를 포함하는 헤더를 추가할 수 있습니다. 이렇게 하면 헤더가 요청의 일부로 백엔드 인스턴스에 전송됩니다. 요청의 첫 번째 라인을 분석해서 연결 정보를 알아낼 수 있습니다. 자세한 내용은 Classic Load Balancer에 프록시 프로토콜 구성 단원을 참조하십시오.

이 구성을 사용하면 세션 고정 또는 X-Forwarded 헤더에서 쿠키가 수신되지 않습니다.

HTTP/HTTPS 프로토콜

프런트 엔드 및 백엔드 연결 모두에서 HTTP(계층 7)를 사용하면 로드 밸런서는 백엔드 인스턴스로 요청을 전송하기 앞서 요청의 헤더를 분석합니다.

Elastic Load Balancing은 HTTP/HTTPS 로드 밸런서 뒤에 있는 정상 상태의 모든 등록 인스턴스에서 하나 이상의 TCP 연결을 열어서 유지합니다. 이 경우 설정된 연결이 HTTP/HTTPS 요청을 수신할 준비가 항상 되어 있어야 합니다.

HTTP 요청 및 HTTP 응답은 헤더 필드를 사용하여 HTTP 메시지에 대한 정보를 전송합니다. Elastic Load Balancing은 X-Forwarded-For 헤더를 지원합니다. 로드 밸런서가 클라이언트와 서버 간의 트래픽을 가로채기 때문에 서버 액세스 로그에 로드 밸런서의 IP 주소만 포함됩니다. 클라이언트의 IP 주소를 확인하려면 X-Forwarded-For 요청 헤더를 사용하십시오. 자세한 내용은 X-Forwarded-For 단원을 참조하십시오.

HTTP/HTTPS를 사용하면 로드 밸런서에서 고정 세션을 활성화할 수 있습니다. 고정 세션은 특정 백엔드 인스턴스에 사용자 세션을 바인딩합니다. 이렇게 하면 세션 중에 사용자로부터 들어오는 모든 요청이 동일한 애플리케이션 인스턴스로 전송됩니다. 자세한 내용은 Classic Load Balancer를 위한 고정 세션 구성 단원을 참조하십시오.

로드 밸런서에서 모든 HTTP 확장이 지원되는 것은 아닙니다. 예상치 못한 메서드, 응답 코드 또는 기타 비표준 HTTP 1.0/1.1 구현으로 인해 로드 밸런서가 요청을 종료할 수 없는 경우에는 TCP 리스너를 사용해야 할 수 있습니다.

HTTPS/SSL 리스너

다음 보안 기능을 통해 로드 밸런서를 생성할 수 있습니다.

SSL 서버 인증서

프런트 엔드 연결에서 HTTPS 또는 SSL을 사용할 때는 로드 밸런서에 X.509 인증서(SSL 서버 인증서)를 반드시 배포해야 합니다. 로드 밸런서는 백엔드 인스턴스로 전송하기 전에 클라이언트의 요청을 해독합니다(일명 SSL 종료). 자세한 내용은 Classic Load Balancer를 위한 SSL/TLS 인증서 단원을 참조하십시오.

로드 밸런서가 SSL 종료를 처리하기를 원치 않는 경우(일명 SSL 오프로드)에는 프런트 엔드 및 백엔드 연결 모두에서 TCP를 사용하고 요청을 처리하는 등록 인스턴스에 인증서를 배포할 수 있습니다.

SSL 협상

Elastic Load Balancing은 클라이언트와 로드 밸런서 간에 연결을 설정할 때 SSL 협상에 사용되는 사전 정의된 SSL 협상 구성을 제공합니다. SSL 협상 구성은 광범위한 클라이언트와 호환되며 암호 집합이라는 강력한 암호화 알고리즘을 사용합니다. 그러나 네트워크 상의 모든 데이터를 암호화하고 특정 암호만 허용해야 하는 경우가 있을 수 있습니다. 일부 보안 규정 준수 표준(예: PCI, SOX 등)은 보안 표준 준수를 위해 클라이언트에서 특정한 프로토콜 및 암호 세트를 요구할 수 있습니다. 이 경우에는 특정 요구 사항에 맞춰 사용자 지정 SSL 협상 구성을 생성할 수 있습니다. 암호 및 프로토콜은 30초 이내에 적용됩니다. 자세한 내용은 Classic Load Balancer를 위한 SSL 협상 구성 단원을 참조하십시오.

백엔드 서버 인증

백엔드 연결에서 HTTPS 또는 SSL을 사용하는 경우에는 등록 인스턴스에 대한 인증을 활성화할 수 있습니다. 그런 다음, 인증 프로세스를 사용해 인스턴스가 암호화된 통신만 허용하도록 하고 등록 인스턴스가 올바른 퍼블릭 키를 갖도록 할 수 있습니다.

자세한 내용은 백엔드 서버 인증 구성을 참조하십시오.