Classic Load Balancer 구성 - AWS Elastic Beanstalk

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

Classic Load Balancer 구성

로드 밸런싱을 활성화한 경우, AWS Elastic Beanstalk 환경에는 환경에서 인스턴스 간의 트래픽을 분산하는 Elastic Load Balancing 로드 밸런서가 갖춰져 있습니다. Elastic Load Balancing은 몇 가지 로드 밸런서 유형을 지원합니다. 자세한 내용은 Elastic Load Balancing 사용 설명서를 참조하세요. Elastic Beanstalk에서는 자동으로 로드 밸런서를 생성하거나, 생성한 공유 로드 밸런서를 지정할 수 있습니다.

이 주제에서는 Elastic Beanstalk에서 생성하고 사용자 환경 전용으로 지정하는 Classic Load Balancer의 구성에 대해 설명합니다. Elastic Beanstalk에서 지원하는 모든 로드 밸런서 유형 구성에 대한 자세한 내용은 Elastic Beanstalk 환경의 로드 밸런서 단원을 참조하세요.

참고

환경 생성 중에만 환경에서 사용하는 로드 밸런서 유형을 선택할 수 있습니다. 이후에 설정을 변경하여 실행 중인 환경의 로드 밸런서 작동을 관리할 수는 있지만 로드 밸런서 유형을 변경할 수는 없습니다.

소개

Classic Load Balancer는 Elastic Load Balancing 이전 세대 로드 밸런서입니다. 환경 인스턴스의 다양한 포트로의 HTTP, HTTPS 또는 TCP 요청 트래픽 라우팅을 지원합니다.

사용자의 환경에서 Classic Load Balancer를 사용할 때는 Elastic Beanstalk가 기본적으로 이를 포트 80에서 HTTP 트래픽 수신 후 동일한 포트에서 인스턴스로 전달하도록 구성합니다. 포트 80 기본 리스너를 삭제할 수는 없지만 비활성화할 수 있습니다. 이렇게 하면 트래픽을 차단하여 동일한 기능을 수행할 수 있습니다. 다른 리스너를 추가하거나 삭제할 수 있다는 점에 유의하십시오. 보안 연결을 지원하기 위하여 포트 443에 리스너와 TLS 인증서를 갖추어 로드 밸런서를 구성할 수 있습니다.

이 로드 밸런서는 상태 확인을 통해 애플리케이션을 실행하는 Amazon EC2 인스턴스가 정상인지 여부를 판단합니다. 상태 확인에서는 지정된 URL에 일정한 간격으로 요청이 보내집니다. URL에서 오류 메시지를 반환하거나 정해진 시간 내에 반환에 실패할 경우에는 상태 확인에 실패합니다.

단일 서버의 동일한 클라이언트에서 여러 요청을 처리하여 애플리케이션이 더 나은 성능을 발휘하는 경우, 고정 세션을 사용하도록 로드 밸런서를 구성할 수 있습니다. 로드 밸런서는 고정 세션을 사용하여 요청을 처리한 Amazon EC2 인스턴스를 식별하는 쿠키를 HTTP 응답에 추가합니다. 동일한 클라이언트에서 후속 요청을 받게 되면, 로드 밸런서는 쿠키를 사용하여 동일한 인스턴스로 요청을 전송합니다.

교차 영역 로드 밸런싱을 사용하면 Classic Load Balancer에 대한 각각의 로드 밸런서 노드가 활성화된 모든 가용 영역에 있는 등록된 인스턴스 간에 요청을 균등하게 분산합니다. 교차 영역 로드 밸런싱이 비활성화된 경우에는 각각의 로드 밸런서 노드가 해당 가용 영역에만 있는 등록된 인스턴스 간에 요청을 균등하게 분산합니다.

비정상적인 상태나 축소된 환경으로 인해 로드 밸런서에서 인스턴스가 제거되면 Connection Draining은 인스턴스와 로드 밸런서 간의 연결을 종료하기 전에 요청을 완료할 시간을 인스턴스에 부여합니다. 요청을 보내거나 Connection Draining을 완전히 비활성화하여 인스턴스에 부여한 시간을 변경할 수 있습니다.

참고

Elastic Beanstalk 콘솔이나 EB CLI로 환경을 생성할 때 기본적으로 Connection Draining은 활성화됩니다. 다른 클라이언트는 구성 옵션으로 활성화할 수 있습니다.

고급 로드 밸런서 설정을 사용하여 임의의 포트에 리스너를 구성하고, 추가 고정 세션 설정을 수정하고, EC2 인스턴스에 안전하게 연결하도록 로드 밸런서를 구성할 수 있습니다. 고급 로드 밸런서 설정은 Elastic Beanstalk API를 사용하여 환경에 바로 또는 소스 코드에 구성 파일로 설정할 수 있는 구성 옵션을 통해 사용할 수 있습니다. 이러한 설정 중 대부분은 Elastic Beanstalk 콘솔에서도 제공됩니다. 또한 Amazon S3로 액세스 로그를 업로드하도록 로드 밸런서를 구성할 수도 있습니다.

Elastic Beanstalk 콘솔을 사용하여 Classic Load Balancer 구성

환경 생성 중에 또는 나중에 환경을 실행 중일 때 Elastic Beanstalk 콘솔을 사용하여 Classic Load Balancer의 포트, HTTPS 인증서 및 기타 설정을 구성할 수 있습니다.

참고

환경 만들기 콘솔 마법사에서 Classic Load Balancer(CLB) 옵션이 비활성화되었습니다. 기존 환경이 Classic Load Balancer로 구성된 경우 Elastic Beanstalk 콘솔 또는 EB CLI를 사용하여 기존 환경을 복제함으로써 새 환경을 만들 수 있습니다. 또한 EB CLI 또는 AWS CLI를 사용하여 Classic Load Balancer로 구성된 새 환경을 만들 수도 있습니다. 이러한 명령줄 도구를 사용하면 계정에 이미 CLB가 없더라도 새 환경을 만들 수 있습니다.

Elastic Beanstalk 콘솔에서 실행 중인 환경의 Classic Load Balancer를 구성하려면
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

  2. 탐색 창에서 환경을 선택한 다음 목록에서 환경 이름을 선택합니다.

    참고

    여러개의 환경을 보유한 경우 검색 창을 통해 환경 목록을 필터링합니다.

  3. 탐색 창에서 구성을 선택합니다.

  4. [로드 밸런서] 구성 범주에서 [편집]을 선택합니다.

    참고

    [로드 밸런서] 구성 범주에 [편집] 버튼이 없으면 환경에 로드 밸런서가 없는 것입니다. 설정 방법을 알아보려면 환경 유형 변경을 참조하십시오.

  5. 환경에 필요한 Classic Load Balancer 구성 부분을 변경합니다.

  6. 변경 사항을 저장하려면 페이지 하단에서 적용을 선택합니다.

리스너

이 목록을 사용하여 로드 밸런서에 대해 리스너를 지정합니다. 각 리스너는 지정된 프로토콜을 사용하여 지정된 포트에서 수신되는 클라이언트 트래픽을 인스턴스로 라우팅합니다. 처음에 이 목록에는 기본 리스너가 표시되는데, 기본 리스너는 포트 80의 수신 HTTP 트래픽을 포트 80에서 HTTP 트래픽을 수신 대기 중인 환경의 인스턴스 서버로 라우팅합니다.

참고

포트 80 기본 리스너를 삭제할 수는 없지만 비활성화할 수 있습니다. 이렇게 하면 트래픽을 차단하여 동일한 기능을 수행할 수 있습니다.

Classic Load Balancer 구성 - 리스너 편집
기존 리스너를 구성하려면
  1. 테이블 항목 옆에 있는 확인란을 선택하고 작업을 선택한 다음, 원하는 작업을 선택합니다.

  2. 편집을 선택한 경우 Classic Load Balancer 리스너 대화 상자를 사용하여 설정을 편집하고 나서 저장을 선택합니다.

예를 들면 기본 리스너를 편집하고 로드 밸런서를 통해 요청을 원본 그대로 전달하도록 하려는 경우 프로토콜HTTP에서 TCP로 변경할 수 있습니다. 이렇게 하면 로드 밸런서는 헤더(X-Forwarded-For 포함)를 재작성하지 않아도 됩니다. 고정 세션에서는 이 기술을 사용할 수 없습니다.

Classic Load Balancer 구성 - 기본 리스너의 프로토콜을 TCP로 변경
리스너를 추가하려면
  1. 리스너 추가를 선택합니다.

  2. Classic Load Balancer 리스너 대화 상자에서 원하는 설정을 구성한 다음 추가를 선택합니다.

보안 리스너 추가는 일반 사용 사례입니다. 다음 이미지의 예제는 포트 443의 HTTPS 트래픽 리스너를 추가합니다. 이 리스너는 수신 트래픽을 포트 443에서 HTTPS 트래픽을 수신 대기 중인 환경 인스턴스 서버로 라우팅합니다.

HTTPS 리스너를 구성하기 전에 유효한 SSL 인증서가 있는지 확인해야 합니다. 다음 중 하나를 수행합니다.

Elastic Beanstalk에서의 HTTPS 구성과 인증서 작업에 대한 자세한 내용은 Elastic Beanstalk 환경에 사용할 HTTPS 구성 단원을 참조하세요.

SSL 인증서에서 SSL 인증서의 ARN을 선택합니다. 예를 들어 arn:aws:iam::123456789012:server-certificate/abc/certs/build 또는 arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678입니다.

Classic Load Balancer 구성 - 보안 리스너 추가

Elastic Beanstalk에서의 HTTPS 구성과 인증서 작업에 대한 자세한 내용은 Elastic Beanstalk 환경에 사용할 HTTPS 구성 단원을 참조하세요.

세션

세션 고정성 활성화됨 상자를 선택하거나 지워서 고정 세션을 활성화 또는 비활성화합니다. 쿠키 지속 시간을 사용하여 고정 세션의 지속 시간을 최대 1000000초까지로 구성합니다. [로드 밸런서 포트] 목록에서 기본 정책(AWSEB-ELB-StickinessPolicy)이 적용되는 리스너 포트를 선택합니다.

세션 고정성 및 지속 시간 관련 Classic Load Balancer 설정

교차 영역 로드 밸런싱

여러 가용 영역 전반에서 로드 밸런싱 활성화됨 상자를 선택하거나 선택 해제해 교차 영역 로드 밸런싱을 활성화 또는 비활성화합니다.

교차 영역 로드 밸런싱 관련 Classic Load Balancer 설정

Connection Draining

Connection Draining 활성화됨 상자를 선택하거나 선택 해제해 Connection Draining을 활성화 또는 비활성화합니다. 드레이닝 제한 시간을 최대 3600초까지로 설정합니다.

Connection Draining 및 드레이닝 제한 시간 관련 Classic Load Balancer 설정

상태 확인

다음 설정을 사용하여 로드 밸런서 상태 확인을 구성합니다.

  • 상태 확인 경로(Health check path) – 로드 밸런서에서 상태 확인 요청을 전송할 경로입니다. 이 경로를 설정하지 않으면 로드 밸런서는 상태를 확인하기 위해 포트 80에서 TCP 연결을 시도합니다.

  • 제한 시간(Timeout) – 상태 확인 응답을 기다릴 시간(초)입니다.

  • 간격(Interval) – 개별 인스턴스의 상태 확인 간 간격(초 단위)입니다. 이 간격은 제한 시간보다 커야 합니다.

  • 비정상 임계값(Unhealthy threshold), 정상 임계값(Healthy threshold) – Elastic Load Balancing이 인스턴스의 상태 확인을 변경하기 전에 각각 실패하거나 성공해야 하는 상태 확인 횟수입니다.

상태 확인을 위한 Classic Load Balancer 설정
참고

Elastic Load Balancing 상태 확인은 환경 Auto Scaling 그룹의 상태 확인 동작에는 영향을 주지 않습니다. Elastic Load Balancing 상태 확인에 실패한 인스턴스는 자동 대체하도록 Amazon EC2 Auto Scaling을 수동으로 구성하지 않는 한 Amazon EC2 Auto Scaling으로 자동 대체되지 않습니다. 자세한 내용은 Auto Scaling 상태 확인 설정를 참조하세요.

전반적인 환경 상태에 영향을 미치는 정도와 상태 확인에 대한 자세한 내용은 기본 상태 보고 단원을 참조하세요.

EB CLI를 사용하여 Classic Load Balancer 구성

eb create를 실행하면 EB CLI는 로드 밸런서 유형을 선택하라는 메시지를 표시합니다.

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 1):

Enter(입력)를 눌러 classic을 선택합니다.

또한 --elb-type 옵션을 사용하여 로드 밸런서 유형을 지정할 수도 있습니다.

$ eb create test-env --elb-type classic

Classic Load Balancer 구성 네임스페이스

다음 네임스페이스에서 Classic Load Balancer와 관련된 설정을 찾을 수 있습니다.

  • aws:elb:healthcheck – 로드 밸런서 상태 확인의 임계값, 확인 간격 및 제한 시간을 구성합니다.

  • aws:elasticbeanstalk:application – 상태 확인 URL을 구성합니다.

  • aws:elb:loadbalancer – 교차 영역 로드 밸런싱을 활성화합니다. 로드 밸런서에 보안 그룹을 할당하고 Elastic Beanstalk가 생성하는 기본 보안 그룹을 재정의합니다. 이 네임스페이스에는 aws:elb:listener 네임스페이스의 옵션에서 바꾼 표준 및 보안 리스너를 구성하기 위한 지원되지 않는 옵션이 포함되어 있습니다.

  • aws:elb:listener – 포트 80의 기본 리스너, 포트 443의 보안 리스너, 다른 모든 포트의 프로토콜에 대한 추가 리스너를 구성합니다. 네임스페이스로 aws:elb:listener를 지정한 경우, 포트 80에서 기본 리스너에 설정이 적용됩니다. 포트를 지정한 경우(예: aws:elb:listener:443), 리스너가 해당 포트에 구성됩니다.

  • aws:elb:policies – 로드 밸런서에 대한 추가 설정을 구성합니다. 이 네임스페이스의 옵션을 사용하여 임의의 포트에 리스너를 구성하고, 추가 고정 세션 설정을 수정하고, Amazon EC2 인스턴스에 안전하게 연결하도록 로드 밸런서를 구성합니다.

EB CLI 및 Elastic Beanstalk 콘솔에서 위 옵션의 권장 값을 적용합니다. 구성 파일을 사용해 동일하게 구성하고자 하는 경우 이러한 설정을 제거해야 합니다. 세부 정보는 권장 값 단원을 참조하십시오.

예 .ebextensions/loadbalancer-terminatehttps.config

다음 예제 구성 파일은 포트 443에 HTTPS를 만들고, 로드 밸런서가 보안 연결을 종료할 때 사용하는 인증서를 할당하고, 포트 80에 기본 리스너를 비활성화합니다. 로드 밸런서는 HTTP:80에서 환경의 EC2 인스턴스로 암호화된 요청을 전달합니다.

option_settings: aws:elb:listener:443: ListenerProtocol: HTTPS SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678 InstancePort: 80 InstanceProtocol: HTTP aws:elb:listener: ListenerEnabled: false