스케일링을 관리하기 위해로드 밸런서 및 자동 스케일링 그룹이있는 웹 애플리케이션 설정이 있습니다. 소스 코드는 git 저장소에 있으므로 코드가 변경 될 때 이미지를 업데이트 할 필요가 없지만 때로는 환경이 변경되어 새 이미지를 만듭니다. 그런 다음 해당 이미지를 자동 스케일링 그룹으로 순환시켜야합니다.
이미지를 자동으로 순환시키는 방법이 있습니까? 지금은 이전 인스턴스를 제거하는 스케일 업 및 스케일 다운 작업을 예약합니다.
답변
“AWS-HA-Release”를 제안하고 싶습니다. AWS-HA-Release의 작동 방식 :
- 현재 자동 확장 그룹 및 ELB가 정상인 5 개의 인스턴스를보고하면,
- AWS-HA-Release는 새로운 인스턴스를 프로덕션 환경으로 가져와 ELB가 인스턴스를 정상으로 식별 할 때까지 기다립니다 (총 정상 인스턴스 수를 6으로 설정).
- 기존 인스턴스를 제거합니다 (총 5 개까지).
- 다른 인스턴스를 서비스로 가져옵니다 (총 6 개)
- 기존 인스턴스를 제거합니다 (총 5 개까지).
- 모든 인스턴스가 교체 될 때까지 계속
이 경우 다운 타임없이 새 코드 또는 새 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