AWS Auto Scaling Group에서 새 이미지를 자동으로 순환하려면 어떻게해야합니까?


21

스케일링을 관리하기 위해로드 밸런서 및 자동 스케일링 그룹이있는 웹 애플리케이션 설정이 있습니다. 소스 코드는 git 저장소에 있으므로 코드가 변경 될 때 이미지를 업데이트 할 필요가 없지만 때로는 환경이 변경되어 새 이미지를 만듭니다. 그런 다음 해당 이미지를 자동 스케일링 그룹으로 순환시켜야합니다.

이미지를 자동으로 순환시키는 방법이 있습니까? 지금은 이전 인스턴스를 제거하는 스케일 업 및 스케일 다운 작업을 예약합니다.


2
새 시작 구성을 생성하고 자동 확장 그룹을 업데이트 한 후 각 인스턴스를 비정상으로 표시 (예 : 사용 as-set-instance-health) 하여 자동 확장이 단순히 새 인스턴스로 교체하는 것이 더 효율적일 수 있습니다 .
cyberx86

답변:


10

"AWS-HA-Release"를 제안하고 싶습니다. AWS-HA-Release의 작동 방식 :

  1. 현재 자동 확장 그룹 및 ELB가 정상인 5 개의 인스턴스를보고하면,
  2. AWS-HA-Release는 새로운 인스턴스를 프로덕션 환경으로 가져와 ELB가 인스턴스를 정상으로 식별 할 때까지 기다립니다 (총 정상 인스턴스 수를 6으로 설정).
  3. 기존 인스턴스를 제거합니다 (총 5 개까지).
  4. 다른 인스턴스를 서비스로 가져옵니다 (총 6 개)
  5. 기존 인스턴스를 제거합니다 (총 5 개까지).
  6. 모든 인스턴스가 교체 될 때까지 계속

이 경우 다운 타임없이 새 코드 또는 새 AMI 버전을 제공 할 수 있으며 완전히 새로운 인스턴스를 활용할 수 있습니다. AWS-HA-Release 도구는 https://github.com/colinbjohnson/aws-missing-tools 에서 사용할 수 있습니다 .


9

가장 쉬운 방법은 Auto-Scaling Group (ASG)의 최소 인스턴스 수를 현재 수의 두 배로 늘리고 모든 인스턴스가 시작될 때까지 기다린 다음 최소 인스턴스 수를 원래 상태로 변경하는 것입니다. ELB는 이전 인스턴스를 종료하고 코드가있는 새 인스턴스를 남깁니다. 이를 위해서는 종료 정책을 ' OldestInstance '로 설정하여 의도 한대로 작동 해야합니다 . 기본 종료 정책에 원하지 않는 부작용이있을 수 있습니다.

여기에서 AWS CLI 파라미터 및 예제를 확인할 수 있습니다. http://docs.aws.amazon.com/cli/latest/reference/autoscaling/update-auto-scaling-group.html


건배, 이것은 매우 편리하고 번거롭지 않은 방법입니다.
Elad Nava

1
사용자 지정 종료 정책을 선택할 때도 ASG는 종료 정책을 적용하기 전에 AZ의 균형을 유지합니다. 따라서 크기를 두 배로 늘리고 반으로 줄이면 몇 가지 오래된 인스턴스가 남을 수 있습니다. ASG는 'OldestInstance'정책을 적용하기 전에 균형 AZ의 균형과 시장의 옵션 (수요에 대 지점)을 유지하기 때문에, 여러 인스턴스 유형 및 구매 옵션과 ASG를 사용할 때이 가능성이 특히입니다 : docs.aws.amazon.com /
autoscaling

6

이 시나리오를 관리하는 방법은 클라우드 구성에서 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


톤 @graeme 감사합니다. Cloudformation이이 기능을 제공하는지 전혀 몰랐습니다.
AJB

정확히 내가 찾던 것. AWS 콘솔을 통한 변경 사항이 고정되면 Jenkins를 통해 스택을 배포합니다.
Greg Biles

3

또한 현재 오픈 소스 인 Netflix Asgard 도구를 살펴보십시오 . Auto Scaling Groups를 설정할 수있을뿐만 아니라 인스턴스 그룹에 대해 새로운 AMI 이미지의 롤링 릴리스를 수행 할 수도 있습니다.


당신은 "Netflix Asgard"를 의미합니다

4
넷플릭스 아스 가드는 지금이로 교체, 사용되지 않습니다 넷플릭스 삼각 돛
dlaidlaw

0

실제로 정직하게 행동하는 좋은 방법은 없습니다. 내가 찾은 가장 좋은 방법은 ASG 이름에 버전을 넣는 것입니다. AMI를 업데이트 할 때마다 새 버전으로 새 ASG + Launch Config를 생성하여 다른 그룹과 충돌하지 않도록합니다. 그런 다음 이전 그룹의 모든 인스턴스를 종료합니다.

내결함성이 더 높은 배포가 필요한 경우 새로드 밸런서를 생성하여 다른 단계를 추가하는 것이 좋습니다. 이를 통해 두 ASG를 서로 분리 할 수 ​​있습니다. 또한 업데이트하기 전에 마지막으로 변경 사항을 테스트 할 수있는 "스테이징"영역을 가질 수 있습니다. 그런 다음 전환 할 준비가되면 DNS 레코드를 업데이트하고 이전 그룹의 모든 인스턴스를 종료합니다.


0

내가 여기에 게시 한 것처럼 (Traform과 비슷한 질문), cloudformation을 사용하는 경우를 제외하고는 ASG에 내장되어 있지 않습니다. 나는 또한 그것으로 어려움을 겪었으므로 여러 ASG를보고 상태와 업데이트를 확인하는 "롤러"를 작성하게되었습니다. 피드백을 항상 기뻐하십시오. http://github.com/deitch/aws-asg-roller

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.