Elastic Beanstalk 롤링 환경 구성 업데이트 - AWS Elastic Beanstalk

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

Elastic Beanstalk 롤링 환경 구성 업데이트

구성 변경 사항으로 인해 인스턴스의 교체가 필요한 경우 Elastic Beanstalk는 업데이트를 배치 형태로 수행해 변경 사항이 전파되는 동안 가동 중지를 방지할 수 있습니다. 롤링 업데이트 중 용량은 단일 배치 크기만큼만 줄어들며 이 크기는 직접 구성할 수 있습니다. Elastic Beanstalk는 인스턴스 배치 하나를 서비스에서 제외하고 종료한 다음 새 구성 배치를 시작합니다. 새 배치가 요청을 처리하기 시작하면 Elastic Beanstalk는 다음 배치를 시작합니다.

롤링 구성 업데이트 배치는 배치 간 지연 시간을 설정하거나(시간 기반) 상태 확인 내용에 기반하는 방식으로 간격을 두고 처리할 수 있습니다. 시간 기반 롤링 업데이트의 경우 인스턴스 배치 시작을 완료한 후 다음 배치를 시작하기까지 Elastic Beanstalk가 대기하는 시간을 구성할 수 있습니다. 이 일시 중지 시간 동안 애플리케이션은 부트스트랩을 수행하고 요청 처리를 시작할 수 있습니다.

상태 확인 기반 롤링 업데이트의 경우 Elastic Beanstalk는 배치의 인스턴스가 상태 확인을 통과할 때까지 대기했다가 다음 배치를 시작합니다. 인스턴스의 상태는 상태 확인 보고 시스템(기본 또는 고급)에서 판단합니다. 기본 상태 확인에서는 배치의 모든 인스턴스가 Elastic Load Balancing(ELB) 상태 확인을 통과하는 즉시 해당 배치가 정상으로 간주됩니다.

확장 상태 보고에서는 배치의 모든 인스턴스가 여러 연속 상태 확인을 통과해야 Elastic Beanstalk가 다음 배치를 시작합니다. 확장 상태 확인에서는 인스턴스만 확인하는 ELB 상태 확인 외에도 애플리케이션 로그와 환경 내 기타 리소스의 상태를 모니터링합니다. 확장 상태 확인을 사용하는 웹 서버 환경에서는 모든 인스턴스가 2분간 12가지 상태 확인을 통과해야 합니다(작업자 환경의 경우 3분간 18가지 상태 확인). 상태 확인을 한 가지라도 통과하지 못하는 인스턴스가 있으면 개수가 초기화됩니다.

롤링 업데이트 제한 시간(기본값: 30분) 내에 배치의 상태가 정상적으로 되지 않으면 업데이트가 취소됩니다. 롤링 업데이트 제한 시간은 구성 옵션이며 aws:autoscaling:updatepolicy:rollingupdate 네임스페이스에서 확인할 수 있습니다. 애플리케이션이 상태 확인을 통과(Ok 상태)하지 않았으나 다른 수준에서 안정적이라면, aws:elasticbeanstalk:healthreporting:system 네임스페이스에서 HealthCheckSuccessThreshold 옵션을 설정하여 Elastic Beanstalk에서 인스턴스가 정상이라고 판단하는 수준을 변경할 수 있습니다.

롤링 업데이트 프로세스가 실패하면 Elastic Beanstalk는 다른 롤링 업데이트를 시작하여 이전 구성으로 롤백합니다. 롤링 업데이트는 상태 확인이 실패하는 경우나 새 인스턴스를 시작한 결과 계정의 할당량을 초과하는 경우 실패할 수 있습니다. 예를 들어, Amazon EC2 인스턴스의 개수 할당량에 도달했다면 롤링 업데이트에서 새 인스턴스 배치를 프로비저닝하고자 시도할 때 업데이트가 실패할 수 있습니다. 이 경우 롤백 역시 실패합니다.

롤백이 실패하면 업데이트 프로세스가 종료되고 환경이 비정상 상태가 됩니다. 처리되지 않은 배치는 기존 구성을 사용하는 실행 중인 인스턴스가 되고, 처리가 성공적으로 완료된 배치에는 새 구성이 적용됩니다. 롤백이 실패한 후 환경을 수정하려면 먼저 업데이트 실패를 유발한 근원적 문제를 해결한 후 다른 환경 업데이트를 초기화하십시오.

다른 방법으로는 다른 환경에 새 애플리케이션 버전을 배포한 후 CNAME 스왑을 수행해 가동 중지 없이 트래픽을 리디렉션하는 것이 있습니다. 자세한 정보는 Elastic Beanstalk를 사용한 블루/그린 배포 섹션을 참조하세요.

롤링 업데이트와 롤링 배포의 비교

롤링 업데이트는 설정 변경으로 새 Amazon EC2 인스턴스를 환경에 맞게 프로비저닝해야 하는 경우에 발생합니다. 인스턴스 유형 및 키 페어 설정과 같은 Auto Scaling 그룹 구성을 변경하는 경우와 VPC 설정을 변경하는 경우가 여기에 해당됩니다. 롤링 업데이트에서는 새 배치를 프로비저닝해 이전 배치를 교체하기 전에 각 인스턴스 배치가 종료됩니다.

롤링 배포는 애플리케이션을 배포할 때마다 발생하며, 일반적으로 환경의 인스턴스를 교체하지 않고 수행할 수 있습니다. Elastic Beanstalk는 각 배치를 서비스에서 제외하고 새 애플리케이션 버전을 배포한 후 이 버전을 서비스 상태로 되돌립니다.

단, 인스턴스를 교체하는 동시에 새 애플리케이션 버전을 배포해야 하는 설정 변경은 예외입니다. 예를 들어 소스 번들의 구성 파일에서 키 이름 설정을 변경하고 이 파일을 환경에 배포하면 롤링 업데이트가 트리거됩니다. 기존 인스턴스 배치 각각에 새 애플리케이션 버전을 배포하는 대신 새 인스턴스 배치가 새 구성으로 프로비저닝됩니다. 이 경우 새 인스턴스가 새 애플리케이션 버전으로 추가되므로 별도의 배포는 발생하지 않습니다.

새 인스턴스가 환경 업데이트의 일환으로 프로비저닝될 때에는 애플리케이션의 소스 코드가 새 인스턴스에 배포되고 인스턴스의 운영 체제 또는 소프트웨어를 수정하는 구성 설정이 적용되는 배포 단계가 존재합니다. 배포 상태 확인 설정(상태 확인 무시, 정상 임계 값명령 제한 시간)도 배포 단계 진행 동안 상태 기반 롤링 업데이트와 변경 불가능한 업데이트에 적용됩니다.

롤링 업데이트 구성

Elastic Beanstalk 콘솔에서 롤링 업데이트를 활성화하고 구성할 수 있습니다.

롤링 업데이트를 활성화하는 방법
  1. Elastic Beanstalk 콘솔을 연 다음 리전(Regions) 목록에서 해당 AWS 리전을 선택합니다.

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

    참고

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

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

  4. [롤링 업데이트와 배포] 구성 범주에서 [편집]을 선택합니다.

  5. 구성 업데이트 섹션의 롤링 업데이트 유형에서 롤링 옵션 중 하나를 선택합니다.

    
            롤링 업데이트와 배포 수정 구성 페이지의 구성 업데이트 단원
  6. Choose 배치 크기, 최소 용량, 일시 중지 시간 순으로 설정합니다.

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

롤링 업데이트와 배포(Rolling updates and deployments) 페이지의 구성 업데이트(Configuration updates) 섹션에는 다음과 같은 롤링 업데이트 옵션이 있습니다.

  • 롤링 업데이트 유형 – 업데이트를 완료한 인스턴스가 부트스트래핑을 마치고 트래픽 서비스를 시작할 수 있도록 Elastic Beanstalk는 다음 배치로 이동하기 전에 인스턴스 배치 업데이트를 완료합니다. 다음 옵션 중 하나를 선택합니다.

    • 상태 기반 롤링 – 현재 배치의 인스턴스가 정상으로 판정될 때까지 대기했다가 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작합니다.

    • 시간 기반 롤링 – 새 인스턴스를 시작하는 시점과 이 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작하는 시점 사이의 시간 간격을 지정합니다.

    • 변경 불가능변경이 불가능한 업데이트를 수행해 새 인스턴스 그룹에 구성 변경 사항을 적용합니다.

  • 배치 크기 – 각 배치에서 교체할 인스턴스 수(1 ~ 10000)입니다. 기본적으로 이 값은 Auto Scaling 그룹의 최소 크기의 1/3(정수로 반올림)입니다.

  • 최소 용량 – 다른 인스턴스가 업데이트되는 동안 실행 상태를 유지하는 인스턴스의 최소 수(0 ~ 9999)입니다. 기본값은 Auto Scaling 그룹 최소 크기에 해당하는 값과 Auto Scaling 그룹의 최대 크기에서 1을 뺀 값 중 더 작은 쪽입니다.

  • 일시 중지 시간(시간 기반만 해당) – 애플리케이션이 트래픽 서비스를 시작할 수 있도록, 배치를 업데이트한 후 다음 배치를 시작하기까지의 대기 시간입니다. 범위는 0초~1시간입니다.

aws:autoscaling:updatepolicy:rollingupdate 네임스페이스

aws:autoscaling:updatepolicy:rollingupdate 네임스페이스의 구성 옵션을 사용해 롤링 업데이트를 구성할 수도 있습니다.

RollingUpdateEnabled 옵션을 사용해 롤링 업데이트를 활성화하고 RollingUpdateType을 사용해 업데이트 유형을 선택하십시오. 다음 지원 값은 RollingUpdateType에서 사용할 수 있습니다.

  • Health – 현재 배치의 인스턴스가 정상으로 판정될 때까지 대기했다가 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작합니다.

  • Time – 새 인스턴스를 시작하는 시점과 이 인스턴스를 서비스 상태로 되돌리고 다음 배치를 시작하는 시점 사이의 시간 간격을 지정합니다.

  • Immutable변경이 불가능한 업데이트를 수행해 새 인스턴스 그룹에 구성 변경 사항을 적용합니다.

롤링 업데이트를 활성화할 때는 MaxBatchSizeMinInstancesInService 옵션을 설정해 각 배치의 크기를 구성하십시오. 시간 기반 및 상태 확인 기반 롤링 업데이트의 경우 각각 PauseTimeTimeout도 구성할 수 있습니다.

예를 들어, 한 번에 최대 5개의 인스턴스를 시작하되 최소 2개의 인스턴스를 서비스 상태로 유지하고 배치 간 5분 30초를 대기하는 형태라면 다음과 같이 옵션 및 값을 지정하십시오.

예 .ebextensions/timebased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Time PauseTime: PT5M30S

상태 기반 롤링 업데이트를 활성화하고 각 배치의 제한 시간을 45분으로 설정하려면 다음 옵션 및 값을 지정하십시오.

예 .ebextensions/healthbased.config
option_settings: aws:autoscaling:updatepolicy:rollingupdate: RollingUpdateEnabled: true MaxBatchSize: 5 MinInstancesInService: 2 RollingUpdateType: Health Timeout: PT45M

TimeoutPauseTime 값은 ISO8601 기간 형식(PT#H#M#S)으로 지정해야 합니다. 각 #은 각각 시, 분 또는 초를 가리킵니다.

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