AWS CloudFormation 스택을 업데이트할 때 Auto Scaling 그룹을 올바르게 업데이트하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 3월 11일

Auto Scaling 그룹을 업데이트했지만 AWS CloudFormation 스택 업데이트 중 예상한 결과를 얻지 못했습니다.

간략한 설명

AWS::AutoScaling::AutoScalingGroup 리소스는 UpdatePolicy 속성을 사용하여, AWS CloudFormation 스택이 업데이트될 때 Auto Scaling 그룹 리소스가 업데이트되는 방식을 정의합니다. UpdatePolicy 속성에 대해 올바른 설정을 구성하지 않은 경우, 롤링 업데이트로 인해 예기치 않은 결과가 발생할 수 있습니다.

AutoScalingRollingUpdate 정책을 사용하여 AWS CloudFormation이 Auto Scaling 그룹에 대한 롤링 업데이트를 처리하는 방법을 제어할 수 있습니다. 이 일반적인 접근방식은 동일한 Auto Scaling 그룹을 유지한 다음, 설정한 파라미터에 따라 이전 인스턴스를 대체합니다.

참고: 다음 해결 방법은 AutoScalingRollingUpdate 정책에만 중점을 둡니다. AutoScalingReplacingUpdate 정책을 사용하여 오류 없이 스택을 즉시 롤백할 수 있습니다.

AutoScalingRollingUpdate 정책은 다음 구성 옵션을 지원합니다.

"UpdatePolicy": {
  "AutoScalingRollingUpdate": {
    "MaxBatchSize": Integer,
    "MinInstancesInService": Integer,
    "MinSuccessfulInstancesPercent": Integer,
    "PauseTime": String,
    "SuspendProcesses": [ List of processes ],
    "WaitOnResourceSignals": Boolean
  }
}

해결 방법

스택 업데이트 중 Auto Scaling 그룹이 올바르게 업데이트되지 않는 원인을 알아보려면, 필요에 따라 다음 문제 해결 시나리오를 수행하십시오.

성공 신호 문제를 방지하기 위한 WaitOnResourceSignals 및 PauseTime 구성

AutoScalingRollingUpdate 정책에서 WaitOnResourceSignals 속성을 [false]로 설정합니다.

참고: WaitOnResourceSignals를 [true]로 설정하면 [PauseTime]이 제한 시간 값으로 변경됩니다. AWS CloudFormation은 [PauseTime] 값으로 지정된 최대 시간이 될 때까지 성공 신호 수신을 기다립니다. 신호가 수신되지 않으면 AWS CloudFormation이 업데이트를 취소합니다. 그런 다음 AWS CloudFormation은 동일한 PauseTime 값을 포함하여 동일한 설정으로 스택을 롤백합니다. 자세한 내용은 Auto Scaling 그룹에 UpdatePolicy 추가를 참조하십시오.

스택 롤백을 방지하기 위해 MinSuccessfulInstancesPercent 구성

롤링 업데이트 중에 많은 수의 인스턴스를 교체하고 각 인스턴스에 대한 성공 신호를 기다리는 경우, AutoScalingRollingUpdate 정책에서 MinSuccessfulInstancesPercent 속성의 값을 설정합니다.

참고: MinSuccessfulInstancesPercent 속성을 설정하면 하나의 인스턴스만 시작하지 못한 경우에도 AWS CloudFormation이 전체 스택을 롤백하지 않습니다. 자세한 내용은 UpdatePolicy 속성을 참조하십시오.

Auto Scaling 그룹에 대한 예기치 않은 변경을 방지하기 위한 SuspendProcesses 구성

롤링 업데이트 중에 다음 Auto Scaling 프로세스를 일시 중지합니다.

  • HealthCheck
  • ReplaceUnhealthy
  • AZRebalance
  • AlarmNotification
  • ScheduledActions

중요: Elastic Load Balancing과 함께 Auto Scaling 그룹을 사용하는 경우, Launch, Terminate, AddToLoadBalancer 프로세스를 일시 중지하지 마십시오. 이러한 프로세스는 롤링 업데이트에 필요합니다.

참고: 예기치 않은 조정 작업으로 인해 롤링 업데이트 중 Auto Scaling 그룹의 상태가 변경되는 경우, 업데이트가 실패할 수 있습니다. 오류는 AWS CloudFormation에 의한 Auto Scaling 그룹의 일관되지 않은 보기로 인해 발생할 수 있습니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?