Google Cloud 인스턴스 그룹
인스턴스 그룹은 VM인스턴스를 관리하는 방법으로, 여러 VM을 단일 엔터티로 관리할 수 있다. 이를 통해 유사한 구성의 VM 그룹을 쉽게 배포, 유지 관리, 확장할 수 있다. 인스턴스 그룹은 관리되는 인스턴스 그룹(MIG)과 관리되지 않는 인스턴스 그룹(UMIG)으로 나뉜다.
관리되는 인스턴스 그룹 (MIG, Managed Instance Group)
동일한 구성의 VM 인스턴스 그룹으로 인스턴스 템플릿을 기반으로 생성된다.
고가용성, 자동화된 관리 및 업데이트 지원한다.
주요 기능
- 자동 확장(Auto-scaling): 트래픽 로드나 사용자 수에 따라 VM 수를 자동으로 늘리거나 줄임
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을 자동으로 대체
- 부하 분산(Load Balancing): 연결된 부하 분산 장치를 통해 트래픽을 그룹의 VM으로 분산
- 롤링 업데이트(Rolling Update): VM 그룹의 새 버전을 점진적으로 배포하여 한 번에 지정된 퍼센티지 또는 개수만 업데이트 가능
- 카나리아 배포(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 |
'컴퓨터 > 클라우드' 카테고리의 다른 글
[GCP Associate Cloud Engineer] Google Kubernetes Engine(GKE) (3) | 2025.01.21 |
---|---|
[GCP Associate Cloud Engineer] App Engine (5) | 2025.01.14 |
[GCP Associate Cloud Engineer] Gcloud (1) | 2025.01.13 |
[GCP Associate Cloud Engineer] Google Cloud Prompt Engineering Guide (2) | 2025.01.05 |
[GCP Associate Cloud Engineer] 클라우드에서 애플리케이션 개발 (0) | 2025.01.04 |