https://cloud.google.com/compute/docs/instance-groups
Instance Template을 기반으로 여러 VM을 묶은, 인스턴스 그룹을 만들 수 있습니다.
인스턴스 그룹은 크게 두 부류로 나뉘고, 여기서는 관리형 인스턴스 그룹을 알아보겠습니다.
- 관리형 인스턴스 그룹(MIG)을 사용하면 동일한 여러 VM에서 앱을 운영할 수 있습니다. 자동 확장, 자동 복구, 리전(멀티 영역) 배포, 자동 업데이트 등의 자동화된 MIG 서비스를 활용하여 워크로드의 확장성 및 가용성을 높일 수 있습니다.
- 관리형 IG는 stateless 그룹과 stateful 그룹 둘로 나뉘어진다. 이 둘의 차이는, DB와 같이 지속적인 커넥션이 필요한 경우에는 stateful로 볼 수 있고, 아닌 경우에는 stateless로 볼 수 있다. 공식 문서에 따른 사용례는 다음과 같다.
- 스테이트리스(stateless) 제공 워크로드(예: 웹사이트 프런트엔드)
- 스테이트리스(Stateless) 일괄 처리, 고성능 또는 고처리량 컴퓨팅 워크로드(예: 큐에서 이미지 처리)
- 스테이트풀(Stateful) 애플리케이션(예: 데이터베이스, 기존 애플리케이션, 체크포인트를 수행하는 장기 실행 일괄 계산)
- 관리형 IG는 stateless 그룹과 stateful 그룹 둘로 나뉘어진다. 이 둘의 차이는, DB와 같이 지속적인 커넥션이 필요한 경우에는 stateful로 볼 수 있고, 아닌 경우에는 stateless로 볼 수 있다. 공식 문서에 따른 사용례는 다음과 같다.
- 비관리형 인스턴스 그룹을 사용하면 직접 관리하는 여러 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
- 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을 발동한다.
필자는 IG를 만들다 한 번 quota 제한에 걸렸다. 일단은 maximum instance 갯수를 8개 이하로 내려서 해결은 했다. 근본적인 해결을 원한다면, 즉, quota를 늘리기를 원한다면 직접 설정해줘야 한다.
https://cloud.google.com/compute/quotas
생성이 완료되면 아래와 같은 화면을 볼 수 있다!
health check test
여기서는 80포트 접근이 되면 성공 처리된 것으로 확인하니,
접속 -> sudo shutdown -> 외부 IP가 바뀌었는가? 정도로 확인할 수 있을 것이다.
autoscaling test
apt install stress
stress --cpu 5 stress 3000 // 5 core cpu 3000초간 스트레스 테스트
'GCP > ☁️ GCP' 카테고리의 다른 글
Google Compute Engine (3): GCE 기본적 운영 (일정, OS patch/policy, NEG ...) (0) | 2021.09.14 |
---|---|
Google Compute Engine (2) : GCE Network 기초 (VPC, Subnet) (0) | 2021.09.12 |
Google Compute Engine (1) : GCE 생성 및 접근 (0) | 2021.09.12 |
GCP의 Region/Zone, 리소스 계층 구조 (0) | 2021.09.10 |
Dialogflow API (0) | 2020.09.22 |