매칭 건너뛰기와 함께 인스턴스 새로 고침 사용 - Amazon EC2 Auto Scaling

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

매칭 건너뛰기와 함께 인스턴스 새로 고침 사용

매칭 건너뛰기는 Amazon EC2 Auto Scaling에서 이미 최신 업데이트가 있는 인스턴스를 무시하도록 합니다. 이렇게 하면 필요 이상으로 많은 인스턴스를 교체하지 않습니다. 이는 Auto Scaling 그룹이 특정 버전의 시작 템플릿을 사용하고 다른 버전을 사용하는 인스턴스만 교체하게 하려는 경우, 유용합니다.

매칭 건너뛰기에는 다음 고려 사항이 적용됩니다.

  • 매칭 건너뛰기와 원하는 구성을 모두 사용하여 인스턴스 새로 고침을 시작하는 경우, Amazon EC2 Auto Scaling은 원하는 구성과 일치하는 인스턴스가 있는지 확인합니다. 그런 다음 원하는 구성과 일치하지 않는 인스턴스만 교체합니다. 인스턴스 새로 고침 성공 후 Amazon EC2 Auto Scaling이 원하는 구성을 반영하도록 그룹을 업데이트합니다.

  • 매칭 건너뛰기와 함께 인스턴스 새로 고침을 시작했지만 원하는 구성을 지정하지 않은 경우, Amazon EC2 Auto Scaling은 Auto Scaling 그룹에 마지막으로 저장한 구성과 일치하는 인스턴스가 있는지 확인합니다. 그런 다음 마지막으로 저장된 구성과 일치하지 않는 인스턴스만 교체합니다.

  • 새 시작 템플릿, 시작 템플릿의 새 버전 또는 인스턴스 유형 집합에 매칭 건너뛰기를 사용할 수 있습니다. 매칭 건너뛰기를 사용 설정했지만 어떠한 변경 사항도 없는 경우, 인스턴스를 교체하지 않고 인스턴스 새로 고침이 즉시 성공합니다. 원하는 구성을 변경한 경우(예: 스팟 할당 전략 변경) Amazon EC2 Auto Scaling은 인스턴스 새로 고침이 성공할 때까지 기다립니다. 그런 다음 Auto Scaling 그룹 설정을 업데이트하여 원하는 새 구성을 반영합니다.

  • 새 시작 구성에서는 매칭 건너뛰기를 사용할 수 없습니다.

  • 인스턴스 새로 고침을 시작하고 원하는 구성을 제공하면 Amazon EC2 Auto Scaling은 모든 인스턴스가 원하는 구성을 사용하도록 합니다. 따라서 시작 템플릿의 원하는 버전 중 하나를 $Default $Latest 지정하거나 인스턴스 새로 고침이 진행되는 동안 시작 템플릿의 새 버전을 생성하면 이미 교체된 모든 인스턴스가 다시 교체됩니다.

  • 스킵 매칭은 시작 템플릿의 사용자 데이터 스크립트가 업데이트된 코드를 가져와 새 인스턴스에 설치할지 여부를 알 수 없습니다. 따라서 스킵 매칭을 수행하면 오래된 코드가 설치된 인스턴스 교체를 건너뛸 수 있습니다. 이 경우 시작 템플릿 버전 업데이트 없이도 모든 인스턴스가 최신 코드를 받을 수 있도록 스킵 매칭을 꺼야 합니다.

이 섹션에는 스킵 매칭을 활성화한 상태에서 인스턴스 새로 고침을 시작하는 AWS CLI 방법에 대한 지침이 포함되어 있습니다. 콘솔을 사용하는 방법은 인스턴스 새로 고침 시작(콘솔) 섹션을 참조하십시오.

이 섹션의 단계에 따라 를 AWS CLI 사용하여 다음을 수행하십시오.

  • 인스턴스에 적용할 시작 템플릿을 생성합니다.

  • 인스턴스 새로 고침을 시작하여 Auto Scaling 그룹에 시작 템플릿을 적용합니다. 매칭 건너뛰기를 활성화하지 않으면 모든 인스턴스가 교체됩니다. 이는 인스턴스를 프로비저닝하는 데 사용되는 시작 템플릿이 원하는 구성에 대해 지정한 시작 템플릿과 동일한 경우에도 마찬가지입니다.

새 시작 템플릿에 매칭 건너뛰기 사용
  1. create-launch-template명령을 사용하여 Auto Scaling 그룹을 위한 새 시작 템플릿을 생성합니다. Auto Scaling 그룹에 대해 생성된 인스턴스의 세부 정보를 정의하는 --launch-template-data 옵션과 JSON 입력을 포함합니다.

    예컨대, 다음 명령을 사용하여 AMI ID ami-0123456789abcdef0t2.micro 인스턴스 유형을 사용하여 기본 시작 템플릿을 생성합니다.

    aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \ --launch-template-data '{"ImageId":"ami-0123456789abcdef0","InstanceType":"t2.micro"}'

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "LaunchTemplateName": "my-template-for-auto-scaling", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-30T18:16:06.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

    자세한 정보는 를 사용하여 시작 템플릿을 생성하고 관리하는 예 AWS CLI을 참조하세요.

  2. start-instance-refresh명령을 사용하여 인스턴스 교체 워크플로를 시작하고 ID를 lt-068f72b729example사용하여 새 시작 템플릿을 적용합니다. 시작 템플릿은 새 템플릿이므로 버전이 하나만 있습니다. 즉, 시작 템플릿의 버전 1이 이 인스턴스 새로 고침의 대상입니다. 인스턴스 새로 고침 중 스케일아웃 이벤트가 발생하고 Amazon EC2 Auto Scaling이 이 시작 템플릿의 버전 1을 사용하여 새 인스턴스를 프로비저닝하는 경우, 인스턴스는 교체되지 않습니다. 작업이 성공적으로 완료되면 새 시작 템플릿이 Auto Scaling 그룹에 성공적으로 적용됩니다.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    config.json의 콘텐츠.

    { "AutoScalingGroupName": "my-asg", "DesiredConfiguration": { "LaunchTemplate": { "LaunchTemplateId": "lt-068f72b729example", "Version": "$Default" } }, "Preferences": { "SkipMatching": true } }

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

혼합 인스턴스 정책을 사용하는 Auto Scaling 그룹이 있는 경우 이 섹션의 단계에 따라 를 사용하여 스킵 매칭으로 인스턴스 새로 고침을 시작하십시오. AWS CLI 다음과 같은 옵션이 있습니다:

  • 정책에 지정된 모든 인스턴스 유형에 적용할 새 시작 템플릿을 제공합니다.

  • 정책에서 시작 템플릿을 변경하거나 변경하지 않고 업데이트된 인스턴스 유형 세트를 제공합니다. 예컨대, 원하지 않는 인스턴스 유형에서 마이그레이션하려고 할 수 있습니다. AMI, 보안 그룹 또는 교체 중인 인스턴스의 기타 세부 사항을 변경하지 않고 시작 템플릿을 그대로 사용합니다.

필요에 맞는 옵션에 따라 다음 섹션 중 하나의 단계를 따르세요.

새 시작 템플릿에 매칭 건너뛰기 사용
  1. create-launch-template명령을 사용하여 Auto Scaling 그룹을 위한 새 시작 템플릿을 생성합니다. Auto Scaling 그룹에 대해 생성된 인스턴스의 세부 정보를 정의하는 --launch-template-data 옵션과 JSON 입력을 포함합니다.

    예컨대, 다음 명령을 사용하여 AMI ID가 ami-0123456789abcdef0인 시작 템플릿을 생성합니다.

    aws ec2 create-launch-template --launch-template-name my-new-template --version-description version1 \ --launch-template-data '{"ImageId":"ami-0123456789abcdef0"}'

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "LaunchTemplate": { "LaunchTemplateId": "lt-04d5cc9b88example", "LaunchTemplateName": "my-new-template", "CreatedBy": "arn:aws:iam::123456789012:user/Bob", "CreateTime": "2023-01-31T15:56:02.000Z", "DefaultVersionNumber": 1, "LatestVersionNumber": 1 } }

    자세한 정보는 를 사용하여 시작 템플릿을 생성하고 관리하는 예 AWS CLI을 참조하세요.

  2. Auto Scaling 그룹의 기존 혼합 인스턴스 정책을 보려면 describe-auto-scaling-groups명령을 실행합니다. 인스턴스 새로 고침을 시작할 때 다음 단계에서 이 정보가 필요합니다.

    다음 예 명령은 my-asg라는 Auto Scaling 그룹에 대해 구성된 혼합 인스턴스 정책을 반환합니다.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-old-template", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] }
  3. start-instance-refresh명령을 사용하여 인스턴스 교체 워크플로를 시작하고 ID를 lt-04d5cc9b88example사용하여 새 시작 템플릿을 적용합니다. 시작 템플릿은 새 템플릿이므로 버전이 하나만 있습니다. 즉, 시작 템플릿의 버전 1이 이 인스턴스 새로 고침의 대상입니다. 인스턴스 새로 고침 중 스케일아웃 이벤트가 발생하고 Amazon EC2 Auto Scaling이 이 시작 템플릿의 버전 1을 사용하여 새 인스턴스를 프로비저닝하는 경우, 인스턴스는 교체되지 않습니다. 작업이 성공적으로 완료되면 업데이트된 혼합 인스턴스 정책이 Auto Scaling 그룹에 성공적으로 적용됩니다.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    config.json의 콘텐츠.

    { "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-04d5cc9b88example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "InstanceRefreshId": "08b91cf7-8fa6-48af-b6a6-d227f40f1b9b" }

다음 절차에서는 시작 템플릿을 변경하지 않고 업데이트된 인스턴스 유형 세트를 제공합니다.

업데이트된 인스턴스 유형 세트와 함께 매칭 건너뛰기 사용
  1. Auto Scaling 그룹의 기존 혼합 인스턴스 정책을 보려면 describe-auto-scaling-groups명령을 실행합니다. 인스턴스 새로 고침을 시작할 때 다음 단계에서 이 정보가 필요합니다.

    다음 예 명령은 my-asg라는 Auto Scaling 그룹에 대해 구성된 혼합 인스턴스 정책을 반환합니다.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    이 작업이 성공하면 다음과 비슷한 출력이 반환됩니다.

    { "AutoScalingGroups":[ { "AutoScalingGroupName":"my-asg", "AutoScalingGroupARN":"arn", "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "LaunchTemplateName":"my-template-for-auto-scaling", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" }, { "InstanceType":"m5a.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } }, "MinSize":1, "MaxSize":5, "DesiredCapacity":4, ... } ] }
  2. start-instance-refresh명령을 사용하여 인스턴스 교체 워크플로를 시작하고 업데이트를 적용합니다. 특정 인스턴스 유형을 사용하는 인스턴스를 교체하려는 경우, 원하는 구성에서 원하는 인스턴스 유형만 포함하는 혼합 인스턴스 정책을 지정해야 합니다. 새 인스턴스 유형을 대신 추가할지 여부를 선택할 수 있습니다.

    다음 예 명령은 원하지 않는 인스턴스 유형 m5a.large를 제외한 인스턴스 새로 고침을 시작합니다. 그룹의 인스턴스 유형이 나머지 세 가지 인스턴스 유형 중 하나와 일치하지 않으면 인스턴스가 교체됩니다. (인스턴스 새로 고침이 새 인스턴스를 프로비저닝할 인스턴스 유형을 선택하지 않고, 대신 할당 전략이 선택합니다.) 작업이 성공적으로 완료되면 업데이트된 혼합 인스턴스 정책이 Auto Scaling 그룹에 성공적으로 적용됩니다.

    aws autoscaling start-instance-refresh --cli-input-json file://config.json

    config.json의 콘텐츠

    { "AutoScalingGroupName":"my-asg", "DesiredConfiguration":{ "MixedInstancesPolicy":{ "LaunchTemplate":{ "LaunchTemplateSpecification":{ "LaunchTemplateId":"lt-073693ed27example", "Version":"$Default" }, "Overrides":[ { "InstanceType":"c5.large" }, { "InstanceType":"c5a.large" }, { "InstanceType":"m5.large" } ] }, "InstancesDistribution":{ "OnDemandAllocationStrategy":"prioritized", "OnDemandBaseCapacity":1, "OnDemandPercentageAboveBaseCapacity":50, "SpotAllocationStrategy":"price-capacity-optimized" } } } }, "Preferences":{ "SkipMatching":true } }