EMD Blog

스테이트풀 MIG 구성 시 오토스케일링 중지 설정 이슈 본문

Public Cloud/GCP

스테이트풀 MIG 구성 시 오토스케일링 중지 설정 이슈

EmaDam 2022. 9. 4. 07:42
gcloud compute instance-groups managed rolling-action stop-proactive-update study-managed-instance-group \\
--zone=asia-northeast3-a

gcloud compute instance-groups managed rolling-action stop-proactive-update 명령어가 MIG내 최대 인수턴스 개수에 어떤 영향을 미치는 지 궁금함. 그래서 GCP 케이스에 아래와 같은 내용으로 등록하였음.

==============[케이스 질문]================

스테이트풀 구성 중 궁금한 점이 있어 문의드립니다.

처음에 아래와 같이 스테이트리스 인스턴스 그룹과 오토스케일링을 설정했습니다.
============================================
gcloud compute instance-groups managed create study-managed-instance-group \\
--base-instance-name=study-web-dev \\
--template=study-web-dev-1 \\
--size=1 \\
--zone=asia-northeast3-a \\
--health-check=http-health-check \\
--initial-delay=300

gcloud compute instance-groups managed set-autoscaling study-managed-instance-group \\
--zone asia-northeast3-a \\
--cool-down-period "60" \\
--max-num-replicas "3" \\
--min-num-replicas "1" \\
--set-schedule "business-hours" \\
--schedule-cron "0 9 * * 1-5" \\
--schedule-min-required-replicas 2 \\
--target-cpu-utilization "0.6" \\
--schedule-duration-sec 32400 \\
--schedule-time-zone "Asia/Seoul" \\
--mode "on"
=============================================
 이 상태에서 스테이트풀 정책으로 디스크를 스테이트 풀 구성으로 변경했습니다.
=============================================
gcloud compute instance-groups managed rolling-action stop-proactive-update study-managed-instance-group \\
--zone=asia-northeast3-a

gcloud compute instance-groups managed update study-managed-instance-group \\
--zone=asia-northeast3-a \\
--stateful-disk device-name=study-web-dev-2,auto-delete=on-permanent-instance-deletion
=================================================
여기서 의문인 점이 있습니다. 위의 gcloud compute instance-groups managed rolling-action stop-proactive-update 명령어는 인스턴스 그룹의 업데이트 방식을 사전형에서 상황별로 업데이트 하도록 변경하는 명령어로 알고 있습니다.

 [1] 위 상황에서는 저 명령어가 자동확장을 수동확장으로 변경하는 역할(스테이트 풀은 자동확장이 되면 안되기 때문에)을 하는 것으로 이해하고 있는데 제가 잘 못 이해한 부분이 있을까요?
[2] MIG내 인스턴스가 1개인 상황에서 저 명령어를 실행 후 MIG에 인스턴스를 수동으로 생성하면 아래와 같은 에러가 납니다.
---
Group is autoscaled and provided target size can be overridden by autoscaler's recommendation
---
이때 gcloud compute instance-groups managed stop-autoscaling 명령어를 사용해 자동복구를 제거 후 현재 생성되어 있는 인스턴스를 제거해 빈 MIG로 만들어야 인스턴스가 생성됩니다.  stop-proactive-update 명령어가 MIG내에 최대 인스턴스 개수에 영향을 미치는 건가요?

아직 케이스 답변은 오지 않았으나 테스트를 통해 다음과 같은 사실을 확인함.

  • 오토스케일링 설정에서 최소/최대 인스턴스 개수를 지정하는데 이는 오토스케일링에만 적용되는 것으로, 수동으로 인스턴스 생성에는 영향을 주지 않음. 즉, 수동 인스턴스 생성시 최대 인스턴스 개수는 MIG 구성 시 지정한 기본 인스턴스 사이즈에 영향을 받게됨. → 그렇기 때문에 수동으로 인스턴스를 생성하고 싶으면 자동 복구 기능을 제거하고 기존에 있던 인스턴스를 삭제해야 생성 가능해짐.
  • 위 내용은 잘 못 됨을 확인함. 자동 복구는 MIG의 Health Check와 관련이 있으며 Auto Scaling 설정은 정말로 자동 확장에 대한 설정일 뿐임. 그렇기 때문에 인스턴스를 수동으로 생성하는 것은 자동복구 여부와 상관이 없음. 또한 MIG에서 설정하는 인스턴스 size는 초기 생성 size일 뿐 유지해야하는 size를 말하는 것이 아니기 때문에 이 값과 상관없이 인스턴스를 계속 수동 생성할 수 있음. (즉, 인스턴스 수동 생성은 MIG의 size 옵션 값에 영향을 받지 않음.)
  • 위 내용에서 헷갈렸던 이유는 스테이트풀 정책의 경우 오토스케일링 설정이 적용되어 있더라도 구성이 가능하지만 인스턴스별 구성을 할 경우 오토스케일링 중지 시켜야만 적용이 가능했기 때문임. 참고로 스테이트풀 정책은 구성하는 순간 자동으로 오토스케일링 기능을 막아버림.

일단 답변으로 아래와 같이 왔음. 내용 확인해볼 예정

말씀 하신 해당 명령어를  "gcloud compute instance-groups managed rolling-action stop-proactive-update" 를 사용하면 오토스케일링 설정에 영향을 미치는지 여부를 좀더 확인 해본 결과 영향을 오토스케일링 설정에 영향을 주지 않는 것으로 확인을 했습니다.

관련해서는 첨부드린 문서[1][2]의 아래 내용을 참고 하시기 바랍니다.
[1] New instances can be created when you or another service, such as an autoscaler, resizes the MIG. Compute Engine does not actively initiate requests to apply opportunistic updates on existing instances.
[2] There is no explicit method or command to stop an update. You can change an update from proactive to opportunistic, and if the group is not being resized by other services like autoscaler, the change to opportunistic effectively stops the update.

안내드린 정보가 고객님의 문제 해결에 도움이 되었기를 바라며, 더 궁금하신 점이 있으시면 언제든 본 메일로 다시 연락주시기를 부탁드리겠습니다.

감사합니다.

[1] <https://cloud.google.com/compute/docs/instance-groups/rolling-out-updates-to-managed-instance-groups#type>
[2] <https://cloud.google.com/compute/docs/instance-groups/rolling-out-updates-to-managed-instance-groups#stopping_an_update>

내용 확인하였음. stop-proactive-update 명령어는 정말로 업데이트 방식에 대한 설정일 뿐임. 이전에 stop-proactive-update설정을 하지 않았더니 에러가 난 적이 있었는데 이는 인스턴스를 replace할 때 인스턴스 명을 유지하지 않고 replace하려 했기 때문인 것으로 보임. 인스턴스 사이즈의 경우 MIG를 구성할 때 지정하는 size가 MIG에서 유지해야하는 사이즈로 잘 못 알고 있었음. 이 size는 그냥 MIG 생성시 초기에 생성되는 인스턴스 개수일뿐 인스턴스 최대/최소 개수에 대한 옵션이 아님. 그렇기 때문에 이 size 값과 상관없이 인스턴스를 계속 수동생성 할 수 있음.

결론

  • stop-proactive-update 설정은 자동확장 여부와 관련이 없음. 인스턴스 재생성시 이름을 변경할 때 필요하긴 함.
  • 스테이트풀 정책은 오토스케일링 설정 여부와 상관없이 구성됨. 이 경우 오토스케일링은 자동으로 정지됨.
  • 인스턴스별로 스테이트풀 구성을 할 때에는 오토스케일링을 수동으로 정지 시켜야함.
  • 인스턴스 수동 생성은 MIG의 size 옵션 값과 관련이 없음.
  • 자동복구는 health check 설정과 관련이 있음.