Amazon EC2 Auto Scaling - AWS CodeDeploy

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

Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling (AWS서비스에서 정의한 조건에 따라 Amazon EC2 인스턴스를 시작할 수 있습니다. 이러한 조건에는 지정된 시간 간격에서 CPU 사용률, 디스크 읽기 또는 쓰기, 인바운드 또는 아웃바운드 네트워크 트래픽에 대해 초과되는 제한이 포함될 수 있습니다. Amazon EC2 Auto Scaling 은 더 이상 필요하지 않을 때 인스턴스를 종료합니다. 자세한 내용은 단원을 참조하십시오.Amazon EC2 Auto Scaling 이란 무엇입니까?.

Amazon EC2 Auto Scaling 그룹의 일부로 새로운 Amazon EC2 인스턴스가 시작되면 CodeDeploy 는 새 인스턴스에 개정을 자동으로 배포할 수 있습니다. 또한 EElastic Load Balancing 서에 등록된 Amazon EC2 Auto Scaling 인스턴스를 사용하여 CodeDeploy 에서 배포를 조정할 수도 있습니다. 자세한 내용은 Integrating CodeDeploy with Elastic Load Balancing코드용 탄력적 로드 밸런싱에서 로드 밸런서 설정 Amazon EC2 배포 배포 섹션을 참조하세요.

참고

여러 배포 그룹과 단일 Amazon EC2 Auto Scaling 그룹을 연결하는 경우 문제가 발생할 수 있습니다. 한 개의 배포에 실패하면 예를 들어, 인스턴스가 종료되기 시작하지만 실행 중인 다른 배포는 시간 초과까지 한 시간 가량 걸릴 수 있습니다. 자세한 내용은 단원을 참조하십시오.단일 Amazon EC2 Auto Scaling 그룹에 여러 배포 그룹을 연결하지 마십시오.후드 아래에서: Amazon EC2 Auto Scaling 통합.

Amazon EC2 Auto Scaling 그룹에 애플리케이션 CodeDeploy

Amazon EC2 Auto Scaling 그룹에 CodeDeploy 애플리케이션 버전을 배포하려면 다음을 수행하십시오.

  1. Amazon EC2 Auto Scaling 그룹이 Amazon S3에서 연동할 수 있도록 허용하는 IAM 인스턴스 프로파일을 만들거나 찾습니다.

    참고

    또한 CodeDeploy 를 사용하여 GitHub 리포지토리에서 Amazon EC2 Auto Scaling 그룹으로 개정을 배포할 수도 있습니다. Amazon EC2 인스턴스는 IAM 인스턴스 프로파일을 계속 필요로 하지만, 이 프로파일에는 GitHub 리포지토리에서 배포하기 위한 추가 권한이 필요하지 않습니다. 자세한 내용은 4단계: Amazon EC2 인스턴스용 IAM 인스턴스 프로파일 생성 섹션을 참조하세요.

  2. 시작 구성이나 템플릿에서 IAM 인스턴스 프로파일을 지정하여 Amazon EC2 Auto Scaling 그룹을 생성하거나 사용합니다. 자세한 내용은 단원을 참조하십시오.Amazon EC2 인스턴스에서 실행되는 애플리케이션을 위한 IAM 역할.

  3. CodeDeploy 에서 Amazon EC2 Auto Scaling 그룹이 포함된 배포 그룹을 생성하도록 허용하는 서비스 역할을 만들거나 찾습니다.

  4. Amazon EC2 Auto Scaling 그룹 이름과 서비스 역할을 지정하여 에 CodeDeploy 그룹을 만듭니다.

  5. CodeDeploy 를 사용하여 Amazon EC2 Auto Scaling 그룹이 포함된 배포 그룹에 개정을 배포합니다.

자세한 내용은 자습서: CodeDeploy 섹션을 참조하세요.

Amazon EC2 Auto Scaling 동작

Amazon EC2 Auto Scaling 그룹 이름을 지정하는 방법

EC2/온프레미스 컴퓨팅 플랫폼에서 블루/그린 배포 과정에서는 인스턴스를 대체 (그린) 환경에 추가하는 옵션이 두 가지입니다.

  • 이미 존재하거나, 혹은 수동으로 생성한 인스턴스를 사용합니다.

  • 지정한 Amazon EC2 Auto Scaling 그룹의 설정을 사용하여 새 Amazon EC2 Auto Scaling 그룹에서 인스턴스를 정의하고 생성합니다.

두 번째 옵션을 선택하면 CodeDeploy 가 새로운 Amazon EC2 Auto Scaling 그룹을 프로비저닝합니다. 그룹 이름을 지정할 때 사용하는 규칙은 다음과 같습니다.

CodeDeploy_deployment_group_name_deployment_id

예를 들어 ID가 있는 배포의10라는 배포 그룹을 배포합니다.alpha-deployments에서 프로비저닝된 Amazon EC2 Auto Scaling 그룹의 이름은CodeDeploy_alpha-deployments_10. 자세한 내용은 EC2/온프레미스 블루/그린 배포에 사용할 수 있는 배포 그룹 만들기 (콘솔)GreenFleetProvisioningOption 단원을 참조하십시오.

사용자 지정 수명 주기 후크 이벤트의 실행 순서

CodeDeploy Amazon EC2 Auto Scaling 그룹에 고유한 수명 주기 후크를 추가할 수 있습니다. 그러나 이러한 사용자 지정 수명 주기 후크 이벤트가 실행되는 순서는 CodeDeploy 기본 배포 수명 주기 이벤트를 기준으로 미리 결정할 수 없습니다. 예를 들어 라는 사용자 지정 수명 주기 후크를 추가하는 경우ReadyForSoftwareInstall를 Amazon EC2 Auto Scaling 그룹에 추가하는 경우 이 그룹이 첫 번째 CodeDeploy 기본 배포 수명 주기 이벤트 이전에 또는 마지막 이벤트 이후에 실행될지 사전에 알 수 없습니다.

Amazon EC2 Auto Scaling 그룹에 사용자 지정 수명 주기 후크를 추가하는 방법을 알아보려면수명 주기 후크 추가.

배포 중 확장 이벤트

배포 진행 중 Amazon EC2 Auto Scaling 확장 이벤트가 발생하면 현재 배포 중인 애플리케이션 개정이 아니라 최근에 배포된 애플리케이션 개정으로 새 인스턴스가 업데이트됩니다. 배포에 성공하면 이전 인스턴스와 새로 확장된 인스턴스가 다른 애플리케이션 개정을 호스팅합니다. 이러한 인스턴스를 최신 상태로 만들기 위해 CodeDeploy 는 자동으로 후속 배포를 시작하여 오래된 인스턴스를 업데이트합니다. 오래된 EC2 인스턴스가 이전 버전으로 유지되도록 이 기본 동작을 변경하려면Automatic updates to outdated instances.

배포가 진행되는 동안 Amazon EC2 Auto Scaling 스케일 아웃 프로세스를 일시 중단하려는 경우common_functions.sh스크립트이며 CodeDeploy 를 사용하여 로드 밸런싱에 사용됩니다. 다음의 경우,HANDLE_PROCS=true이면 배포 프로세스 중 다음 Auto Scaling 이벤트가 자동으로 일시 중단됩니다.

  • AZRebalance

  • AlarmNotification

  • ScheduledActions

  • ReplaceUnhealthy

중요

이 기능은 코드배포Default.OneataTime 배포 구성만 지원합니다.

사용에 관한 자세한 내용은HANDLE_PROCS=trueAmazon EC2 Auto Scaling 을 사용할 때 배포 문제를 방지하려면AutoScaling 프로세스 처리에 대한 중요 공지inAWS 코드 배포 샘플(GitHub에 있음).

이벤트 순서AWS CloudFormationcfn-init 스크립트

새로 프로비저닝된 Linux 기반 인스턴스에서 cfn-init(또는 cloud-init)를 사용하여 스크립트를 실행하는 경우 인스턴스 시작 후 발생하는 이벤트 순서를 엄격하게 제어하지 않으면 배포에 실패할 수 있습니다.

순서는 다음과 같아야 합니다.

  1. 새로 프로비저닝된 인스턴스가 시작합니다.

  2. 모든 cfn-init 부트스트래핑 스크립트가 완료될 때까지 실행됩니다.

  3. CodeDeploy 에이전트가 시작됩니다.

  4. 최신 애플리케이션 개정이 인스턴스에 배포됩니다.

이벤트 순서를 주의 깊게 제어하지 않으면 모든 스크립트 실행이 완료되기 전에 CodeDeploy 에이전트가 배포를 시작할 수 있습니다.

이벤트 순서를 제어하려면 다음 모범 사례 중 하나를 사용합니다.

  • 를 통해 CodeDeploy 에이전트를 설치cfn-init스크립트를 사용하여 다른 모든 스크립트 뒤에 배치합니다.

  • CodeDeploy 에이전트를 사용자 지정 AMI 에 포함하고cfn-init스크립트를 사용하여 시작하고 다른 모든 스크립트 뒤에 배치합니다.

사용에 대한 자세한 내용은cfn-init에 대한 자세한 내용은cfn-initinAWS CloudFormation사용 설명서.

CodeDeploy 및 Amazon EC2 Auto Scaling 에서 사용자 지정

Amazon EC2 Auto Scaling 그룹에서 새 Amazon EC2 인스턴스가 시작될 때 사용할 기본 AMI 지정하는 데 다음 두 가지 옵션이 있습니다.

  • CodeDeploy 에이전트가 이미 설치된 기본 사용자 지정 AMI 지정할 수 있습니다. 에이전트가 이미 설치되어 있으므로 이 옵션은 다른 옵션보다 훨씬 빨리 새 Amazon EC2 인스턴스를 시작합니다. 그러나 이 옵션은 특히 CodeDeploy 에이전트가 오래된 경우 Amazon EC2 인스턴스의 초기 배포에 실패할 가능성이 더 큽니다. 이 옵션을 선택하면 기본 사용자 지정 AMI 에서 CodeDeploy 에이전트를 정기적으로 업데이트하는 것이 좋습니다.

  • Amazon EC2 Auto Scaling 그룹에서 각각의 새 인스턴스가 시작될 때 CodeDeploy 에이전트가 설치되지 않은 기본 AMI 지정하고 에이전트가 설치되도록 할 수 있습니다. 이 옵션은 다른 옵션보다 새 Amazon EC2 인스턴스를 더 느리게 시작하지만 초기 인스턴스 배포에 성공할 가능성이 더 큽니다. 이 옵션은 최신 버전의 CodeDeploy 에이전트를 사용합니다.