본문 바로가기

컴퓨터/클라우드

[GCP Associate Cloud Engineer] Instance Groups

Google Cloud 인스턴스 그룹

인스턴스 그룹은 VM인스턴스를 관리하는 방법으로, 여러 VM을 단일 엔터티로 관리할 수 있다. 이를 통해 유사한 구성의 VM 그룹을 쉽게 배포, 유지 관리, 확장할 수 있다. 인스턴스 그룹은 관리되는 인스턴스 그룹(MIG)과 관리되지 않는 인스턴스 그룹(UMIG)으로 나뉜다.

인스턴스 그룹 만들기

 

관리되는 인스턴스 그룹 (MIG, Managed Instance Group)

동일한 구성의 VM 인스턴스 그룹으로 인스턴스 템플릿을 기반으로 생성된다.

고가용성, 자동화된 관리 및 업데이트 지원한다.

 

주요 기능

 - 자동 확장(Auto-scaling): 트래픽 로드나 사용자 수에 따라 VM 수를 자동으로 늘리거나 줄임

Auto-scaling설정

gcloud compute instance-groups managed set-autoscaling MIG_NAME \ # stop-autoscaling으로 중지 가능
  --max-num-replicas=MAX_REPLICAS \
  --min-num-replicas=MIN_REPLICAS \
  --cool-down-period=SECONDS

 

 

--max-num-replicas: 자동 확장 시 최대 VM 수

--min-num-replicas: 자동 확장 시 최소 VM 수

--cool-down-period: 확장 작업 간 대기 시간(기본값: 60초)

 

 

 - 자동 복구(Auto-healing): 상태 확인 실패 시, 오류가 발생한 VM을 자동으로 대체

auto-healing설정

 - 부하 분산(Load Balancing): 연결된 부하 분산 장치를 통해 트래픽을 그룹의 VM으로 분산

 - 롤링 업데이트(Rolling Update): VM 그룹의 새 버전을 점진적으로 배포하여 한 번에 지정된 퍼센티지 또는 개수만 업데이트 가능

인스턴스 그룹에서 update vms를 통해 롤링 업데이트 진행
롤링 업데이트

 - 카나리아 배포(Canary Deployment): 새 버전을 소규모 VM에서 테스트 후 전체로 배포

 

 

관리되지 않은 인스턴스 그룹 (UMIG, Unmanaged Instance Group)

다른 구성의 VM 인스턴스를 단일 그룹으로 관리 가능하고, 수동으로 VM을 추가 및 제거할 수 있다.

인스턴스 템플릿을 사용하지 않는다.

이는 자동 배율 없어 트래픽에 따라 VM을 자동으로 확장/축소 불가능하다.

자가 치유 없어 VM 장애 시 자동 복구 불가하다.

부하 분산 제한되어있어 기능 사용 제한이 있다.

따라서 이는 다양한 구성을 가진 VM이 필요한 경우 혹은 실험적이거나 단기 프로젝트에 사용된다.

 

인스턴스 그룹 생성

 

인스턴스 그룹 생성
생성된 인스턴스 그룹 확인

위와 같이 gcloud를 사용해서 생성한 인스턴스 그룹의 목록들을 확인할 수 있다.

 

관리되는 인스턴스 그룹 생성

gcloud compute instance-groups managed create MIG_NAME \
  --base-instance-name=BASE_NAME \
  --size=NUMBER_OF_INSTANCES \
  --template=INSTANCE_TEMPLATE_NAME \
  --zones=ZONE_LIST \
  --health-check=HEALTH_CHECK_NAME \
  --initial-delay=SECONDS

 

--size: 초기 인스턴스 수

--template: 인스턴스 템플릿을 지정. 동일한 VM 구성을 보장

--zone: MIG를 생성할 구역

--health-check: 자동 복구

--initial-delay: 초기 지연

 

 

이때 GCP에서 지역 세부 정보 없이 인스턴스 템플릿의 이름을 지정하면 글로벌 범위에서 검색되는데 템플릿의 이름만 사용하는게 아니라  아래와 같이 URL로 위치를 표시해야한다.

https://compute.googleapis.com/compute/v1/projects/<<PROJECT_ID>>/regions/<<REGION>>/instanceTemplates/<<INSTANCE_TEMPLATE_NAME>>

 

관리되지 않은 인스턴스 그룹 생성

gcloud compute instance-groups unmanaged create UMIG_NAME \
  --zone=ZONE

 

인스턴스 그룹 삭제

gcloud compute instance-groups delete GROUP_NAME \
  --zone=ZONE

 

MIG 업데이트

 

그룹 크기 조정

gcloud compute instance-groups managed resize MIG_NAME --size=DESIRED_SIZE

MIG 내 VM 인스턴스 수를 조정한다.

 

--size: 설정할 인스턴스의 총 개수.

 

 

인스턴스 재생성

gcloud compute instance-groups managed recreate-instances MIG_NAME \
  --instances=INSTANCE_NAME_1,INSTANCE_NAME_2

지정된 인스턴스를 삭제하고 동일한 템플릿으로 새로 생성한다.

 

--instances: 재생성할 특정 인스턴스 이름.

 

 

특정 인스턴스 업데이트

gcloud compute instance-groups managed update-instances MIG_NAME \
  --instances=INSTANCE_NAME_1,INSTANCE_NAME_2 \
  --minimal-action=ACTION \
  --most-disruptive-allowed-action=ACTION

지정된 인스턴스에 대한 업데이트를 수행한다.

 

--instances: 업데이트할 특정 인스턴스 이름

--minimal-action: 업데이트 시 수행할 최소한의 작업

· none(기본값): 아무 작업도 하지 않음

·  refresh: 인스턴스 상태만 새로 고침

·  replace: 기존 인스턴스를 삭제 후 새로 생성

·  restart: 인스턴스를 재시작

--most-disruptive-allowed-action: 허용되는 가장 큰 규모의 작업으로 가능한 값은 minimal-action과 동일하다.

 

 

인스턴스 템플릿 업데이트

gcloud compute instance-groups managed set-instance-template MIG_NAME \
  --template=INSTANCE_TEMPLATE_NAME

 

MIG에 새 인스턴스 템플릿을 적용하여 이후 생성되는 인스턴스에 반영한다.

 

주요 명령어 요약

그룹 크기 조정 gcloud compute instance-groups managed resize
인스턴스 재생성 gcloud compute instance-groups managed recreate-instances
특정 인스턴스 업데이트 gcloud compute instance-groups managed update-instances
템플릿 업데이트 gcloud compute instance-groups managed set-instance-template
롤링 업데이트 시작 gcloud compute instance-groups managed rolling-action start-update