CodeDeploy 인스턴스 상태 - AWS CodeDeploy

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

CodeDeploy 인스턴스 상태

CodeDeploy 배포 그룹 내 인스턴스의 상태를 모니터링합니다. 정상 인스턴스 수가 배포 중에 배포 그룹에 대해 지정된 최소 정상 인스턴스 수 미만으로 떨어지면 배포에 실패합니다. 예를 들어 배포 중에 85%의 인스턴스를 정상 상태로 유지해야 하고 배포 그룹에 10개의 인스턴스가 포함된 경우, 만약 단일 인스턴스의 배포에 실패하면 전체 배포도 실패합니다. 이는 최신 애플리케이션 버전을 설치할 수 있도록 인스턴스를 오프라인으로 전환하면 사용 가능한 정상 인스턴스 수가 이미 90%로 떨어지기 때문입니다. 실패한 인스턴스와 또 다른 오프라인 인스턴스가 더해지면 인스턴스의 80% 만이 정상이고 사용 가능하다는 뜻입니다. CodeDeploy전체 배포에 실패합니다.

전체 배포에 성공하려면 다음 조건이 참이어야 합니다.

  • CodeDeploy 배포의 각 인스턴스에 배포할 수 있습니다.

  • 하나 이상의 인스턴스에 배포를 성공해야 합니다. 즉, 최소 정상 호스트 값이 0인 경우에도 전체 배포에 성공하려면 하나 이상의 인스턴스에 대한 배포를 성공해야 합니다(즉, 하나 이상의 인스턴스가 정상이어야 함).

상태 확인

CodeDeploy 각 인스턴스에 수정 버전 상태와 인스턴스 상태라는 두 개의 상태 값을 할당합니다.

수정 버전 상태

수정 버전 상태는 인스턴스에 현재 설치되어 있는 애플리케이션 수정 버전을 기반으로 합니다. 다음과 같은 값이 표시될 수 있습니다.

  • 현재: 배포 그룹이 마지막으로 배포에 성공한 수정 버전과 인스턴스에 설치된 수정 버전이 일치합니다.

  • 이전: 인스턴스에 설치된 수정 버전이 애플리케이션의 이전 버전과 일치합니다.

  • 알 수 없음: 애플리케이션의 수정 버전이 인스턴스에 성공적으로 설치되지 않았습니다.

인스턴스 상태

인스턴스 상태는 인스턴스에 대한 배포를 성공했는지 여부에 따라 결정됩니다. 다음과 같은 값을 가질 수 있습니다.

  • 정상: 인스턴스에 대한 마지막 배포에 성공했습니다.

  • 비정상: 인스턴스에 수정 버전을 배포하려는 시도가 실패했거나 수정 버전이 아직 인스턴스에 배포되지 않았습니다.

CodeDeploy 수정 버전 상태 및 인스턴스 상태를 사용하여 배포 그룹의 인스턴스에 다음 순서로 배포를 예약합니다.

  1. 비정상 인스턴스 상태.

  2. 알 수 없음 수정 버전 상태.

  3. 이전 수정 버전 상태.

  4. 현재 수정 버전 상태.

전체 배포에 성공하면 수정 버전이 업데이트되고 배포 그룹의 상태 값이 최신 배포를 반영하도록 업데이트됩니다.

  • 배포에 성공한 모든 현재 인스턴스는 현재 상태로 유지됩니다. 그렇지 않으면 알 수 없음 상태가 됩니다.

  • 배포에 성공한 모든 이전 인스턴스 또는 알 수 없음 상태의 모든 인스턴스는 현재 상태가 됩니다. 그렇지 않으면 이전 상태 또는 알 수 없음 상태로 유지됩니다.

  • 배포에 성공한 모든 정상 인스턴스는 정상 상태로 유지됩니다. 그렇지 않으면 비정상 상태가 됩니다.

  • 배포에 성공한 모든 비정상 인스턴스는 정상 상태가 됩니다. 그렇지 않으면 비정상 상태로 유지됩니다.

전체 배포에 실패하거나 중지된 경우:

  • 애플리케이션 수정 버전을 CodeDeploy 배포하려고 시도한 각 인스턴스의 인스턴스 상태는 해당 인스턴스에 대한 배포 시도의 성공 여부에 따라 정상 또는 비정상으로 설정됩니다.

  • 애플리케이션 수정 버전 배포를 시도하지 CodeDeploy 않은 각 인스턴스는 현재 인스턴스 상태 값을 유지합니다.

  • 배포 그룹의 수정 버전은 동일하게 유지됩니다.

최소 정상 인스턴스 수 정보

필요한 최소 정상 인스턴스 수는 배포 구성의 일부로 정의됩니다.

중요

블루/그린 배포 시 배포 구성과 최소 정상 호스트 값은 원래 환경의 인스턴스가 아닌 대체 환경의 인스턴스에 적용됩니다. 그러나 원래 환경의 인스턴스가 로드 밸런서에서 등록 취소되는 경우 하나의 원본 인스턴스라도 성공적으로 등록 취소되지 않으면 전체 배포가 실패로 표시됩니다.

CodeDeploy 일반적인 최소 정상 호스트 값을 사용하는 세 가지 기본 배포 구성을 제공합니다.

기본 배포 구성 이름 미리 정의된 최소 정상 호스트 값
CodeDeployDefault. OneAt시간 1
CodeDeployDefault. HalfAt시간 50%
CodeDeployDefault.AllAtOnce 0

CodeDeploy에서 배포 구성 작업에서 기본 배포 구성에 대한 자세한 내용을 확인할 수 있습니다.

에서 사용자 지정 배포 구성을 CodeDeploy 생성하여 고유한 최소 정상 호스트 값을 정의할 수 있습니다. 다음 작업을 사용할 때 이러한 값을 정수 또는 백분율로 정의할 수 있습니다.

CodeDeploy 다음과 같은 두 가지 주요 목적을 위해 배포에 사용할 최소 정상 인스턴스 수를 지정할 수 있습니다.

  • 전체 배포의 성공 또는 실패 여부를 확인하기 위해. 애플리케이션 수정 버전이 최소 정상 인스턴스 수에 성공적으로 배포된 경우 배포에 성공합니다.

  • 배포가 진행되도록 배포 중에 정상 상태를 유지해야 하는 인스턴스 수를 확인하기 위해.

배포 그룹의 최소 정상 인스턴스 수를 인스턴스 수 또는 전체 인스턴스 수의 백분율로 지정할 수 있습니다. 백분율을 지정하면 배포 시작 시 백분율을 동일한 수의 인스턴스로 CodeDeploy 변환하여 모든 소수 인스턴스를 반올림합니다.

CodeDeploy 배포 프로세스 중에 배포 그룹 인스턴스의 상태를 추적하고 배포에 지정된 최소 정상 인스턴스 수를 사용하여 배포를 계속할지 여부를 결정합니다. 기본 원칙은 배포 시에 정상 인스턴스 수가 지정한 최소 개수보다 낮아서는 안 된다는 것입니다. 이 규칙의 한 가지 예외는 처음부터 배포 그룹의 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 작은 경우입니다. 이 경우 배포 프로세스는 정상 인스턴스의 수를 더 이상 줄이지 않습니다.

참고

CodeDeploy 현재 중지됨 상태인 인스턴스를 포함하여 배포 그룹의 모든 인스턴스에 배포를 시도합니다. 최소 정상 호스트 계산에서 중지된 인스턴스는 실패한 인스턴스와 동일한 영향을 미칩니다. 중지된 인스턴스가 너무 많아 배포에 실패한 경우 이를 해결하려면 인스턴스를 다시 시작하거나 태그를 변경하여 배포 그룹에서 제외합니다.

CodeDeploy 배포 그룹의 비정상 인스턴스에 응용 프로그램 수정 버전을 배포하려고 시도하여 배포 프로세스를 시작합니다. 배포에 성공할 때마다 인스턴스의 상태를 정상으로 CodeDeploy 변경하고 배포 그룹의 정상 인스턴스에 추가합니다. CodeDeploy 그런 다음 현재 정상 인스턴스 수를 지정된 최소 정상 인스턴스 수와 비교합니다.

  • 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 적거나 같으면 배포를 더 많이 해도 정상 인스턴스 수가 감소하지 않도록 배포를 CodeDeploy 취소합니다.

  • 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수보다 하나 이상 많으면 원래 정상 인스턴스 세트에 응용 프로그램 수정 버전을 CodeDeploy 배포합니다.

정상 인스턴스로의 배포가 실패할 경우 해당 인스턴스의 상태를 비정상으로 CodeDeploy 변경합니다. 배포가 진행됨에 따라 현재 정상 인스턴스 수를 CodeDeploy 업데이트하여 지정된 최소 정상 인스턴스 수와 비교합니다. 배포 프로세스의 어느 시점에서든 정상 인스턴스 수가 지정된 최소 수에 미치지 못하면 배포가 CodeDeploy 중지됩니다. 이렇게 하면 다음 배포에 실패하여 정상 인스턴스 수가 지정된 최소 수 미만으로 떨어질 가능성을 방지할 수 있습니다.

참고

지정한 최소 인스턴스 수가 배포 그룹에 있는 전체 인스턴스 수보다 작아야 합니다. 백분율 값을 지정하면 반올림됩니다. 그렇지 않으면 배포가 시작될 때 정상 인스턴스 수가 이미 지정된 최소 정상 인스턴스 수보다 작거나 같아서 전체 CodeDeploy 배포가 즉시 실패합니다.

CodeDeploy 또한 지정된 최소 정상 인스턴스 수와 실제 정상 인스턴스 수를 사용하여 응용 프로그램 수정 버전을 여러 인스턴스에 배포할지 여부와 배포 방법을 결정합니다. 기본적으로 정상 인스턴스 수가 지정된 최소 정상 인스턴스 수 이하로 떨어질 위험 없이 최대한 많은 인스턴스에 응용 프로그램 수정 버전을 CodeDeploy 배포합니다.

한 번에 배포해야 하는 인스턴스 수를 결정하려면 다음 계산을 CodeDeploy 사용합니다.

[total-hosts] - [minimum-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]

예:

  • 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 9로 설정하는 경우 한 번에 1개의 인스턴스에 CodeDeploy 배포하십시오.

  • 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 3으로 설정한 경우 첫 번째 배치에서는 동시에 7개 인스턴스에 CodeDeploy 배포하고 두 번째 배치에서는 나머지 3개 인스턴스에 배포합니다.

  • 배포 그룹에 10개의 인스턴스가 있고 최소 정상 인스턴스 수를 0으로 설정하는 경우 동시에 10개의 인스턴스에 CodeDeploy 배포됩니다.

예제

다음 예에서는 인스턴스가 10개인 배포 그룹을 가정합니다.

최소 정상 인스턴스: 95%

CodeDeploy 최소 정상 인스턴스 수를 최대 10개의 인스턴스로 반올림합니다. 이는 정상 인스턴스 수와 같습니다. 어느 인스턴스에도 수정 버전을 배포하지 않고 전체 배포는 즉시 실패합니다.

최소 정상 인스턴스: 9

CodeDeploy 수정 버전을 한 번에 하나의 인스턴스에 배포합니다. 인스턴스 중 하나로의 배포가 실패하면 정상 인스턴스 수가 최소 정상 인스턴스 수와 같기 때문에 전체 배포가 CodeDeploy 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 실패했는데 전체 배포에 성공하는 경우입니다.

CodeDeploy 배포가 실패하거나 전체 배포가 완료될 때까지 한 번에 한 인스턴스씩 배포를 계속합니다. 10개의 배포를 모두 성공하면 배포 그룹에는 10개의 정상 인스턴스가 있게 됩니다.

최소 정상 인스턴스: 8

CodeDeploy 수정 버전을 한 번에 두 개의 인스턴스에 배포합니다. 이러한 배포 중 두 개가 실패하면 전체 배포가 CodeDeploy 즉시 실패합니다. 이 규칙의 예외는 마지막 인스턴스가 두 번째로 실패한 경우 배포가 계속 성공하는 경우입니다.

최소 정상 인스턴스: 0

CodeDeploy 수정 버전을 전체 배포 그룹에 한 번에 배포합니다. 전체 배포에 성공하려면 하나 이상의 인스턴스에 대해 배포를 성공해야 합니다. 정상 인스턴스의 수가 0이면 배포에 실패합니다. 이는 전체 배포를 성공으로 표시하려면 최소 정상 인스턴스 값이 0인 경우에도 전체 배포가 완료될 때 적어도 하나의 인스턴스가 정상이어야 한다는 요구 사항 때문입니다.

가용 영역당 최소 정상 인스턴스 수 정보

참고

이 섹션에서는 인스턴스와 호스트라는 용어를 Amazon EC2 인스턴스를 지칭할 때 혼용하여 사용합니다.

여러 가용 영역의 인스턴스에 배포하는 경우 선택적으로 zonal configuration 기능을 활성화하여 한 번에 하나의 가용 영역에 CodeDeploy 배포할 수 있습니다.

이 기능을 CodeDeploy 활성화하면 정상 호스트 수가 '영역당 최소 정상 호스트' '최소 정상 호스트' 값 이상으로 유지되도록 합니다. 정상 호스트 수가 두 값 이하로 떨어지면 모든 가용 영역에 대한 배포가 CodeDeploy 실패합니다.

한 번에 배포할 호스트 수를 계산하려면 '영역당 최소 정상 호스트'와 '최소 정상 호스트' 값을 모두 CodeDeploy 사용합니다. CodeDeploy 더 적은 [A] 계산치를 사용하며, 어디에, 어디에 있는지는 다음과 같습니다. [B] [A] [B]

[A] = [total-hosts] - [min-healthy-hosts] = [number-of-hosts-to-deploy-to-at-once]
[B] = [total-hosts-per-AZ] - [min-healthy-hosts-per-AZ] = [number-of-hosts-to-deploy-to-at-once-per-AZ]

한 번에 배포할 호스트 수를 결정한 후, 한 번에 한 가용 영역씩 해당 수의 호스트에 일괄 CodeDeploy 배포하고, 영역 간 일시 중지 (또는 '베이킹 타임') 를 선택적으로 설정합니다.

배포가 다음과 같이 구성된 경우:

  • [total-hosts]200

  • [minimum-healthy-hosts]160

  • [total-hosts-per-AZ]100

  • [minimum-healthy-hosts-per-AZ]50

해당되는 조치

  • [A] = 200 - 160 = 40

  • [B] = 100 - 50 = 50

  • 4050 미만

따라서 호스트에 한 번에 CodeDeploy 배포됩니다. 40

이 시나리오에서 배포는 다음과 같이 전개됩니다.

  1. CodeDeploy 첫 번째 가용 영역에 배포:

    1. CodeDeploy 첫 40 번째 호스트에 배포합니다.

    2. CodeDeploy 다음 40 호스트에 배포합니다.

    3. CodeDeploy 나머지 20 호스트에 배포합니다.

      이제 첫 번째 가용 영역에 대한 배포가 완료되었습니다.

  2. (선택 사항) 모니터 기간 또는 첫 번째 영역에 대한 모니터 기간 추가 설정에 정의된 대로 첫 번째 영역에 대한 배포가 '베이크'되는 동안 CodeDeploy 대기합니다. 문제가 없으면 CodeDeploy 계속하십시오.

  3. CodeDeploy 두 번째 가용 영역에 배포:

    1. CodeDeploy 첫 40 번째 호스트에 배포합니다.

    2. CodeDeploy 다음 40 호스트에 배포합니다.

    3. CodeDeploy 나머지 20 호스트에 배포합니다.

      이제 두 번째이자 마지막 가용 영역에 대한 배포가 완료되었습니다.

영역 구성 기능 및 가용성 영역당 최소 정상 인스턴스 수를 지정하는 방법에 대해 알아보려면 zonal configuration을 참조하세요.