답변:
"AWS-HA-Release"를 제안하고 싶습니다. AWS-HA-Release의 작동 방식 :
이 경우 다운 타임없이 새 코드 또는 새 AMI 버전을 제공 할 수 있으며 완전히 새로운 인스턴스를 활용할 수 있습니다. AWS-HA-Release 도구는 https://github.com/colinbjohnson/aws-missing-tools 에서 사용할 수 있습니다 .
가장 쉬운 방법은 Auto-Scaling Group (ASG)의 최소 인스턴스 수를 현재 수의 두 배로 늘리고 모든 인스턴스가 시작될 때까지 기다린 다음 최소 인스턴스 수를 원래 상태로 변경하는 것입니다. ELB는 이전 인스턴스를 종료하고 코드가있는 새 인스턴스를 남깁니다. 이를 위해서는 종료 정책을 ' OldestInstance '로 설정하여 의도 한대로 작동 해야합니다 . 기본 종료 정책에 원하지 않는 부작용이있을 수 있습니다.
여기에서 AWS CLI 파라미터 및 예제를 확인할 수 있습니다. http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html
이 시나리오를 관리하는 방법은 클라우드 구성에서 AWS :: AutoScaling :: AutoScalingGroup 객체의 UpdatePolicy 기능을 사용하는 것입니다. 클라우드 구성 스택이 업데이트되면 인스턴스의 사이클링을 관리합니다.
일부 참고 문헌. http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-updatepolicy .html
또한 현재 오픈 소스 인 Netflix Asgard 도구를 살펴보십시오 . Auto Scaling Groups를 설정할 수있을뿐만 아니라 인스턴스 그룹에 대해 새로운 AMI 이미지의 롤링 릴리스를 수행 할 수도 있습니다.
실제로 정직하게 행동하는 좋은 방법은 없습니다. 내가 찾은 가장 좋은 방법은 ASG 이름에 버전을 넣는 것입니다. AMI를 업데이트 할 때마다 새 버전으로 새 ASG + Launch Config를 생성하여 다른 그룹과 충돌하지 않도록합니다. 그런 다음 이전 그룹의 모든 인스턴스를 종료합니다.
내결함성이 더 높은 배포가 필요한 경우 새로드 밸런서를 생성하여 다른 단계를 추가하는 것이 좋습니다. 이를 통해 두 ASG를 서로 분리 할 수 있습니다. 또한 업데이트하기 전에 마지막으로 변경 사항을 테스트 할 수있는 "스테이징"영역을 가질 수 있습니다. 그런 다음 전환 할 준비가되면 DNS 레코드를 업데이트하고 이전 그룹의 모든 인스턴스를 종료합니다.
내가 여기에 게시 한 것처럼 (Traform과 비슷한 질문), cloudformation을 사용하는 경우를 제외하고는 ASG에 내장되어 있지 않습니다. 나는 또한 그것으로 어려움을 겪었으므로 여러 ASG를보고 상태와 업데이트를 확인하는 "롤러"를 작성하게되었습니다. 피드백을 항상 기뻐하십시오. http://github.com/deitch/aws-asg-roller
as-set-instance-health
) 하여 자동 확장이 단순히 새 인스턴스로 교체하는 것이 더 효율적일 수 있습니다 .