본문으로 바로가기

Google Compute Engine (5): Instance group

category GCP/☁️ GCP 2021. 9. 15. 12:48

https://cloud.google.com/compute/docs/instance-groups

 

인스턴스 그룹  |  Compute Engine 문서  |  Google Cloud

의견 보내기 인스턴스 그룹 인스턴스 그룹은 단일 항목으로 관리할 수 있는 가상 머신(VM) 인스턴스의 모음입니다. Compute Engine은 관리형 및 비관리형이라는 두 가지 VM 인스턴스 그룹을 제공합니

cloud.google.com

 

Instance Template을 기반으로 여러 VM을 묶은, 인스턴스 그룹을 만들 수 있습니다.

인스턴스 그룹은 크게 두 부류로 나뉘고, 여기서는 관리형 인스턴스 그룹을 알아보겠습니다.

 

  • 관리형 인스턴스 그룹(MIG)을 사용하면 동일한 여러 VM에서 앱을 운영할 수 있습니다. 자동 확장, 자동 복구, 리전(멀티 영역) 배포, 자동 업데이트 등의 자동화된 MIG 서비스를 활용하여 워크로드의 확장성 및 가용성을 높일 수 있습니다.
    • 관리형 IG는 stateless 그룹과 stateful 그룹 둘로 나뉘어진다. 이 둘의 차이는, DB와 같이 지속적인 커넥션이 필요한 경우에는 stateful로 볼 수 있고, 아닌 경우에는 stateless로 볼 수 있다. 공식 문서에 따른 사용례는 다음과 같다.
      • 스테이트리스(stateless) 제공 워크로드(예: 웹사이트 프런트엔드)
      • 스테이트리스(Stateless) 일괄 처리, 고성능 또는 고처리량 컴퓨팅 워크로드(예: 큐에서 이미지 처리)
      • 스테이트풀(Stateful) 애플리케이션(예: 데이터베이스, 기존 애플리케이션, 체크포인트를 수행하는 장기 실행 일괄 계산)
  • 비관리형 인스턴스 그룹을 사용하면 직접 관리하는 여러 VM에서 부하 분산을 수행할 수 있습니다.

 

 

MIG에서 제공가능 몇가지 기능들

 

Autoscailing

 

Cooldown period (대기 기간)

- Autoscaling metric을 다시 측정하기 시작할 때까지의 시간 설정

 

Scale In Controls (축소 제어)

- 갑작스럽게 인스턴스 숫자가 축소되는 것을 방지

 

Auto healing (자동 복구)

https://cloud.google.com/compute/docs/instance-groups/autohealing-instances-in-migs

 

Health Checks (상태 확인)

- Health Checks 실패하면 인스턴스를 새로 생성

 

Initial delay (초기 지연)

- Health Checks 시작하기 전 지연. 새로 부팅 중에 Health Checks 하면 실패 처리 되어 불필요하게 인스턴스 생성되는 것 방지.

 

 

 

MIG(managed instance group) 만들기

 

https://cloud.google.com/compute/docs/instance-groups/creating-groups-of-managed-instances

 

관리형 인스턴스 그룹 만들기  |  Compute Engine 문서  |  Google Cloud

인스턴스 템플릿을 사용하여 관리형 인스턴스 그룹(MIG)을 만들고 MIG에서 인스턴스를 업데이트하는 방법을 알아봅니다.

cloud.google.com

 

- instance template를 먼저 만들어보자.

 

Compute Engine 좌측에서 [인스턴스 템플릿]으로 접근한다.

 

인스턴스 템플릿 만들기는 일반 VM을 만드는 것과 같다.

 

- 인스턴스 그룹(IG) 만들기

 

좌측의 [인스턴스 그룹]을 눌러 [인스턴스 그룹 만들기]에 들어가자.

 

중요한 설정인 자동확장(autoscaling)과 자동복구(autohealing)에 대해서 살펴보자.

 

 

- autoscaling

 

[자동 확장 정책]을 설정할 수 있다. stackdriver를 선택하여 특정 지표를 기준으로 할 수 있고, 단순히 트래픽이나 cpu 사용률을 기준으로 정책을 설정할 수 있다.

[예측 자동 확장]이란, 최소 3일간 로그를 살핀 후, 예측적으로 자동 확장을 하는 기능이다. 당연히 처음 생성할 때는 불가능하다.

[대기 기간]은 Autoscaling metric을 다시 측정하기 시작할 때까지의 시간 설정으로, 예를 들어 최초 부팅시 CPU 사용량이 늘어나는 시점에 autoscaling이 되면 안되므로 최소한의 대기 기간을 잡을 수 있다. 

[인스턴스 최소/최대 갯수]는 말 그대로 오토스케일링시 최소/대 인스턴스가 몇개까지 존재할 수 있는지에 대한 설정이다.

[축소제어]는 급격히 VM 갯수를 줄어드는 것을 방지하기 위한 속성으로, VM이 수십개 정도 사용될 때 유용한 기능이다.

 

- auto healing

 

[상태 확인]은 소위 health check라고 부르는 것으로, 인스턴스 내 어플리케이션이 정상 동작하는지에 대한 체크를 진행하는 것이다. 

[초기 지연]은 이러한 헬스 체크가 VM내 어플리케이션이 구동되기도 전에 체크를 시작하여 오류로 판단하는 것을 방지하기 위한 지연 시간이다.

 

health check를 살펴보면, 80포트로 접근(웹 http)하였을 때 10초 간격으로 확인을 하되, 5초 이상 정상적인 반응이 오지 않으면 실패라 처리하고, 이러한 실패가 연속으로 3번 발생하면 auto healing을 발동한다.

health check

 

필자는 IG를 만들다 한 번 quota 제한에 걸렸다. 일단은 maximum instance 갯수를 8개 이하로 내려서 해결은 했다. 근본적인 해결을 원한다면, 즉, quota를 늘리기를 원한다면 직접 설정해줘야 한다.

 

 

https://cloud.google.com/compute/quotas

 

리소스 할당량  |  Compute Engine 문서  |  Google Cloud

의견 보내기 리소스 할당량 Compute Engine은 다양한 이유로 리소스 사용량에 할당량을 적용합니다. 예를 들어 할당량은 사용량이 예기치 않게 급증하는 것을 방지하여 Google Cloud 사용자 커뮤니티를

cloud.google.com

 

생성이 완료되면 아래와 같은 화면을 볼 수 있다!

 

 

 

health check test

여기서는 80포트 접근이 되면 성공 처리된 것으로 확인하니,

접속 -> sudo shutdown -> 외부 IP가 바뀌었는가? 정도로 확인할 수 있을 것이다.

 

autoscaling test

apt install stress

stress --cpu 5 stress 3000  //  5 core cpu 3000초간 스트레스 테스트

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체