Elastic Load CodeDeploy Balancing과 통합 - AWS CodeDeploy

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

Elastic Load CodeDeploy Balancing과 통합

CodeDeploy 배포 중에 로드 밸런서는 인스턴스가 준비되지 않았거나, 현재 배포 중이거나, 환경의 일부로 더 이상 필요하지 않은 인스턴스로 인터넷 트래픽이 라우팅되는 것을 방지합니다. 그러나 로드 밸런서의 정확한 역할은 블루/그린 배포에 사용되는지 아니면 인 플레이스(in-place) 배포에 사용되는지에 따라 다릅니다.

참고

블루/그린(Blue/Green) 배포에서는 Elastic Load Balancing 로드 밸런서를 반드시 사용해야 하고, 인 플레이스(In-place) 배포에서는 선택 사항입니다.

Elastic Load Balancing 유형

Elastic Load Balancing은 CodeDeploy 배포에 사용할 수 있는 세 가지 유형의 로드 밸런서, 즉 클래식 로드 밸런서, 애플리케이션 로드 밸런서, 네트워크 로드 밸런서를 제공합니다.

Classic Load Balancer

전송 계층(TCP/SSL) 또는 애플리케이션 계층(HTTP/HTTPS)에서 라우팅 및 로드 밸런싱합니다. VPC를 지원합니다.

참고

Classic Load Balancer는 Amazon ECS 배포에서 지원되지 않습니다.

Application Load Balancer

애플리케이션 계층(HTTP/HTTPS)에서 라우팅 및 로드 밸런싱하며 경로 기반 라우팅을 지원합니다. Virtual Private Cloud(VPC)에서 각 EC2 인스턴스 또는 컨테이너 인스턴스에서 포트로 요청을 라우팅할 수 있습니다.

참고

Application Load Balancer 대상 그룹의 대상 유형은 EC2 인스턴스에서 배포 시 instance이고, Fargate에서 배포 시 IP여야 합니다. 자세한 내용은 대상 유형을 참조하세요.

Network Load Balancer

패킷 콘텐츠가 아닌 TCP 패킷 헤더에서 추출된 주소 정보를 기반으로 한 전송 계층(TCP/UDP Layer-4)에서 라우팅 및 로드 밸런싱합니다. Network Load Balancer는 트래픽 급증을 처리하고, 클라이언트의 소스 IP를 유지하며, 로드 밸런서의 수명 동안 고정 IP를 사용할 수 있도록 합니다.

Elastic Load Balancing 로드 밸런서에 대해 자세히 알아보려면 다음 주제를 참조하세요.

블루/그린 배포

Elastic Load Balancing 로드 밸런서 뒤에서 인스턴스 트래픽을 재라우팅하는 것은 CodeDeploy 블루/그린 배포의 기본입니다.

블루/그린 배포 중 로드 밸런서는 사용자가 지정한 규칙에 따라 최신 애플리케이션 개정이 배포된 배포 그룹(대체 환경)에서 새 인스턴스로 트래픽이 라우팅되도록 한 다음 이전 애플리케이션 개정이 실행 중인 이전 인스턴스(원본 환경)에서의 트래픽은 차단합니다.

대체 환경의 인스턴스가 하나 이상의 로드 밸런서에 등록되면 원래 환경의 인스턴스는 등록 취소되고 선택한 경우 종료됩니다.

블루/그린 배포의 경우 배포 그룹에서 하나 이상의 Classic Load Balancer, Application Load Balancer 대상 그룹 또는 Network Load Balancer 대상 그룹을 지정할 수 있습니다. CodeDeploy 콘솔을 사용하거나 배포 그룹에 로드 AWS CLI 밸런서를 추가할 수 있습니다.

블루/그린 배포에서 로드 밸런서에 대한 자세한 내용은 다음 항목을 참조하세요.

인 플레이스(in-place) 배포

인 플레이스(in-place) 배포 시 로드 밸런서는 배포 대상 인스턴스로 인터넷 트래픽이 라우팅되지 않도록 하고 해당 인스턴스에 대한 배포가 완료되면 인스턴스가 다시 트래픽을 처리할 수 있도록 합니다.

인 플레이스(in-place) 배포에서 로드 밸런서를 사용하지 않으면, 배포 프로세스 중 인터넷 트래픽이 인스턴스로 계속 보내질 수 있습니다. 그로 인해 고객에게 웹 애플리케이션이 끊기거나, 완료되지 않거나, 이전 상태로 표시되는 문제가 생길 수 있습니다. Elastic Load Balancing Load Balancer를 인플레이스 배포와 함께 사용하면 배포 그룹의 인스턴스가 로드 밸런서에서 등록 취소되고 최신 애플리케이션 수정 버전으로 업데이트되며 배포가 성공하면 동일한 배포 그룹의 일부로 로드 밸런서에 다시 등록됩니다. CodeDeploy 로드 밸런서 뒤에서 인스턴스가 정상적으로 작동할 때까지 최대 1시간을 기다립니다. 대기 기간 동안 로드 밸런서가 인스턴스를 정상으로 표시하지 않으면 배포 구성에 따라 다음 인스턴스로 CodeDeploy 이동하거나 배포에 실패합니다.

인플레이스 배포의 경우 하나 이상의 Classic Load Balancer, Application Load Balancer 대상 그룹 또는 Network Load Balancer 대상 그룹을 지정할 수 있습니다. 로드 밸런서를 배포 그룹 구성의 일부로 지정하거나 에서 제공하는 CodeDeploy 스크립트를 사용하여 로드 밸런서를 구현할 수 있습니다.

배포 그룹을 사용한 인 플레이스(In-place) 배포 로드 밸런서 지정

배포 그룹에 부하 분산기를 추가하려면 콘솔 또는 를 사용합니다. CodeDeploy AWS CLI인 플레이스(in-place) 배포를 위해 배포 그룹에 로드 밸런서를 지정하는 자세한 내용은 다음 항목을 참조하세요.

스크립트를 사용한 인 플레이스(In-place) 배포 로드 밸런서 지정

배포 수명 주기 스크립트를 사용하여 인 플레이스(in-place) 배포를 위한 로드 밸런싱을 설정하려면 다음 절차의 단계를 수행합니다.

참고

를 사용해야 합니다. CodeDeployDefault OneAtATime 배포 구성은 스크립트를 사용하여 인플레이스 배포를 위한 로드 밸런서를 설정하는 경우에만 가능합니다. 동시 실행은 지원되지 않으며, CodeDeployDefault OneAtATime 설정은 스크립트의 직렬 실행을 보장합니다. 배포 구성에 대한 자세한 내용은 에서 배포 구성으로 작업하기 CodeDeploy 단원을 참조하세요.

의 CodeDeploy 샘플 리포지토리에서는 CodeDeploy Elastic Load Balancing 로드 밸런서를 사용하도록 조정할 수 있는 지침과 샘플을 제공합니다. GitHub 이 리포지토리에는 진행에 필요한 모든 코드를 제공하는 3가지 샘플 스크립트(register_with_elb.sh, deregister_from_elb.sh, common_functions.sh)가 포함되어 있습니다. 이러한 3개 스크립트에서 자리 표시자를 편집한 후 appspec.yml 파일에서 해당 스크립트를 참조하면 됩니다.

CodeDeploy Elastic Load Balancing 로드 밸런서에 등록된 Amazon EC2 인스턴스에서 인플레이스 배포를 설정하려면 다음과 같이 하십시오.

  1. 인 플레이스(in-place) 배포에 사용할 로드 밸런서 유형의 샘플을 다운로드합니다.

  2. 각 대상 Amazon EC2 인스턴스가 AWS CLI 설치되어 있는지 확인하십시오.

  3. 대상 Amazon EC2 인스턴스 각각에 최소한 elasticloadbalancing:* 및 autoscaling:* 권한을 가진 IAM 인스턴스 프로파일이 연결되어 있는지 확인합니다.

  4. 애플리케이션의 소스 코드 디렉터리에 배포 수명 주기 이벤트 스크립트 (register_with_elb.sh, deregister_from_elb.sh, common_functions.sh)를 포함합니다.

  5. 애플리케이션 개정판의 경우 이벤트 중에는 스크립트를 실행하고 ApplicationStart이벤트 중에는 register_with_elb.sh 스크립트를 CodeDeploy 실행하기 위한 지침을 제공하십시오. appspec.yml deregister_from_elb.sh ApplicationStop

  6. 인스턴스가 Amazon EC2 Auto Scaling 그룹에 포함된 경우 이 단계를 건너뛸 수 있습니다.

    common_functions.sh 스크립트:

    • Classic Load Balancer를 사용하는 경우, ELB_LIST=""에 Elastic Load Balancing 로드 밸런서의 이름을 지정하고 파일에서 다른 배포 설정에 필요한 사항을 수정합니다.

    • Application Load Balancer 또는 Network Load Balancer를 사용하는 경우, TARGET_GROUP_LIST=""에 Elastic Load Balancing 대상 그룹의 이름을 지정하고 파일에서 다른 배포 설정에 필요한 사항을 수정합니다.

  7. 애플리케이션의 소스 코드, appspec.yml, 배포 수명 주기 이벤트 스크립트를 하나의 애플리케이션 개정으로 번들링한 후 이 개정을 업로드합니다. 개정을 Amazon EC2 인스턴스로 배포합니다. 배포 진행 중에 배포 수명 주기 이벤트 스크립트는 로드 밸런서에서 Amazon EC2 인스턴스 등록을 취소하고 연결이 해제될 때까지 기다린 후, 배포가 완료되면 로드 밸런서에 Amazon EC2 인스턴스를 다시 등록합니다.