2017-10-31 7 views
0

ECS 클러스터에서 도커 호스트로 사용하는 EC2 인스턴스에 대한 자동 크기 조정 그룹을 만드는 테라 폼 배포가 있습니다. 클러스터에는 태스크가 실행 중입니다. 새로운 작업 정의 리비전을 만들고 서비스를 업데이트하면 AWS가 롤링 업데이트를 수행하므로 작업을 새 버전으로 교체하는 것이 좋습니다. 그러나 어떻게하면 다운 타임없이 EC2 호스트 인스턴스를 새로운 인스턴스로 쉽게 대체 할 수 있습니까?terraform 설치에서 ECS 컨테이너 인스턴스 교체

예를 들면 다음과 같습니다. 다른 EC2 인스턴스 유형으로 전환하는 것과 같이 ASG 실행 구성을 변경해야합니다.

  1. 배수 하나 개의 인스턴스 :

    나는 여기 내가 생각하는 것은 내가 원하는 가장 가까운 얻을 수있어, 몇 가지를 시도했습니다. 타스크는 나머지 인스턴스에 분 h됩니다.

  2. 해당 인스턴스에서 더 이상 실행중인 작업이 없으면 종료하십시오.
  3. ASG가 새 인스턴스를 기다릴 때까지 기다립니다.
  4. 모든 인스턴스가 새로운 것이 될 때까지 1 - 3 단계를 반복하십시오.

거의 작동합니다. 문제는 다음과 같습니다.

  1. 설명서가 잘못되어 오류가 발생합니다.
  2. 이 프로세스 후 인스턴스 중 하나 (최대 마지막으로 회전 된 인스턴스)가 0 개의 작업을 실행하고 있습니다.

더 나은 자동화 방법이 있습니까? 또한 ECS 클러스터에서 작업을 다시 배포하는 방법이 있습니까 (새 작업 개정을 만들지 않고)?

+0

[AWS ECS에서 다른 ASG로 컨테이너를 마이그레이션하는 방법] (https://stackoverflow.com/questions/39949227/how-to-force-aws-ecs-migrate-containers-to-another- asg) – ydaetskcoR

+0

https://stackoverflow.com/a/39977487/2291321에서 이전 답변을 업데이트 한 적이 있습니다. 원래 댓글에서 언급했듯이 이전의 ASG에서 안전하게 ECS 작업을 안전하게 수행했기 때문입니다. 그것들을 파괴하여 서비스 중단을 초래했습니다. – ydaetskcoR

답변

0

변경하기 전에 ASG가 여러 가용 영역에 걸쳐 있고 컨테이너가 있는지 확인하십시오. 이 기능은 하나의 Zone에서 인스턴스가 다운되었을 때 High Availability를 보장합니다. 당신이 느리고 안전 롤링 업그레이드를 유지하기 위해 더 높은 값으로 MinSuccessfulInstancesPercentMinInstanceInService을 설정할 수

당신은 AutoScalingRollingUpgrade로 자동 확장은 그룹의 업데이트 정책을 구성 할 수 있습니다.

자세한 조정 방법은 this 설명서를 참조하십시오. 이 프로세스를 자동화하기 위해 terraform을 사용하여 ASG 실행 구성을 업데이트 할 수 있습니다. 그러면 ASG에 새로운 버전의 실행 구성이 업데이트되고 롤링 업그레이드가 트리거됩니다.

+0

ECS는 새 인스턴스에 새 작업을 자동으로 예약하지 않기 때문에이 기능이 작동하지 않습니다. 대신 오래된 컨테이너 인스턴스를 교체하기 전에 배수해야합니다. 여기에 설명 된대로 ASG 라이프 사이클 후크로이 작업을 수행 할 수 있습니다. https://stackoverflow.com/a/39977487/2291321 – ydaetskcoR