본문 바로가기
CSP (Cloud Service Provider)/GCP

[GCP] 인스턴스 그룹만들기

by BTC_JGT 2022. 4. 29.

오토스케일링

인스턴스에 들어오는 트래픽으로 인스턴스의 사용량이 [지정한계]% 에 도달하게된다면 자동적으로 이미 정해진 이미지|이미지 템플릿을 이용하여 새로 인스턴스를 만들어 부담은 분산시켜 줍니다.

인스턴스 그룹

gcp 에서는 오토스케일링을 인스턴스 그룹으로 지칭 합니다.

  1. 새로운 스테이트리스(Stateless) 관리형 인스턴스 그룹
  2. 새로운 스테이트풀 관리형 인스턴스 그룹
  3. 새 비관리형 인스턴스 그룹

스테이스리스, 스테이스 풀

5equal0 - 스테이트풀,스테이트리스 에서 발췌

스테이스리스

  1. 세션 정보를 Server에 저장하지 않습니다.
  2. 세션에 무관한 응답

Client의 세션정보(상태)을 저장한다고 하면 처음에 저장된 Server에 Client의 세션정보(상태)가 저장이 되므로 로그밸런서로 이용하여 트래픽이 분산될때

Client의 세션정보(상태)가 Server-other 에 저장되어있지 않으므로 Server-other은 Client의 세션 인증을 처음부터 다시 해야할 필요가 있습니다.

그러하여 Client의 요청은 처음에 세션정보(상태)를 가지고 있는 Server를 향하도록 관리가 필요합니다.


Stateless '구조'는 server의 응답이 client와의 세션 '상태'와 독립적입니다.

Stateless 구조에서 server는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, 세션 관리는 client에게 책임이 있습니다.

따라서 이러한 Stateless 구조는 client와의 세션 정보를 기억할 필요가 없으므로, 이러한 정보를 서버에 저장하지 않습니다.

대신 필요에 따라 외부 DB에 저장하여 관리 할 수 있습니다.

대표적인 Stateless 프로토콜로는 UDP와 HTTP 등이 있습니다.

여기서는 UDP를 예로 들어 보겠습니다.

아시다시피, UDP는 TCP와 달리 handshaking 과정을 통해 연결 세션을 인증하는 절차를 수행하지 않습니다.

세션 상태에 관계 없이 단순히 데이터그램을 source에서 destination 쪽으로 전송합니다.

client가 송신하려 했던 모든 데이터가 server쪽에 수신 되었는지 확인하지 않습니다.

따라서 server쪽은 client와의 세션 정보를 전혀 저장하지 않습니다.

스테이스 풀

  1. 세션 정보를 Server에 저장
  2. 세션에 따른 응답.

스테이스 리스와 다르게 Client의 요청으로 Server-A은 세션을 만들어 저장을 해야하지만 Server-A에 저장하지 않고 외부의 저장이 가능한 예를 들어 외부DB에 이 세션정보(상태)를 저장하게 됩니다.

그러하면 Client가 Server-B에 요청을 보내더라도 Server-B는 Client의 세션정보(상태)에 접근이 가능합니다.


대표적인 Stateful 구조를 따르는 프로토콜로 TCP가 있습니다. TCP의 3-way handshaking 과정을 생각해봅시다. Server와 Client는 3-way handshaking 과정에서 SYN과 SYNACK을 주고 받으며, 양단간 세션 '상태'를 established한 '상태'로 만듭니다. 세션 '상태'가 established가 되면 client와 server는 데이터를 주고 받을 수 있습니다. 이렇게 TCP는 세션 '상태'에 따라 Server의 응답이 달라지는 Stateful 프로토콜입니다.

... 사이트 참고

관리형 인스턴스 그룹(MIG)

VM 인스턴스에 대해 의도한 상태를 나타내는 데이터 항목

관리형 인스턴스

실제 VM 인스턴스의 현재 상태와 원하는 상태가 포함된 MIG 내 데이터 항목.
관리형 인스턴스의 현재 상태에는 밑 항목이 포함됩니다.

  1. 인스턴스 수명 주기상태
  2. 인스턴스에서 MIG가 수행하는 현재 작업
  3. 인스턴스 상태

관리형 인스턴스 그룹에 인스턴스 추가

  1. MIG의 크기를 수동으로 설정
  2. 스테이트리스 애플리케이션에 자동 확장을 사용
  3. 특정 이름으로 인스턴스를 만듭니다.

vm-web 인스턴스로 인스턴스 템플릿 형식으로 만들어 오토스케일링을 이용하여 자동적으로 같은 환경의 인스턴스가 생성되겟 해야합니다.

인스턴스 그룹 생성 과정

1. 스냅샷 만들기

스냅샷 기능을 이용하여 vm-web-1 인스턴스의 스냅샷을 만듭니다.

2. 이미지 만들기

방금 만든 스냅샷을 이용하여 이미지를 생성합니다.

3. 인스턴스 템플릿 만들기

기본 인스턴스 생성과 차이는 별로 없습니다.
부팅 디스크 선택에서 기존에는 구글에서 만든 이미지를 이용하였다면 이번에는 저희가 스냅샷으로 만든 이미지를 이용하여 부팅되게 만들 것입니다.

네트워크 부분

  • 외부 IP 를 할당하지 않는 이유는 로드밸런스를 통해 내부 IP로 트래픽을 받을것입니다.
  • 인스턴스가 만들어지는 네트워크도 subnet-pri-a 서브넷을 이용합니다. 인스턴스가 기존의 vm-web 과 같은 서브넷에 만들어지게 하기 위해서입니다.

4. 인스텐스 그룹 만들기

인스턴스 그룹 - 새로운 Stateless 관리형 인스턴스 그룹 - 인스턴스 그룹 만들기

인스턴스 만들기와 크게 다르지 않습니다

인스턴스 템플릿은 아까 저희가 만든 인스턴스 템플릿을 선택하시면됩니다. 앞으로 인스턴스가 오토 스케일링으로 늘어날때 인스턴스 템플릿을 기준으로 늘어납니다.

자동 확장

  1. 자동 확장 : 인스턴스 그룹에서 인스턴스를 자동적으로 추가 삭제합니다.
  2. 자동 확장 안함 : 자동 확장을 사용 중지하고 구성을 유지합니다.
  3. 자동 수평 확장만 : 인스턴스 그룹에서 인스턴스를 추가 하기만 합니다.

자동 확장 정책

CPU,HTTP,StackDriver Monitoring 측정항목을 이용하여 사용률이나 규칙에 따라 자동 확장 기능이 수행됩니다.

저는 인스턴스 최소 갯수는 2, 인스턴스 최대 갯수는 10개로 지정하였습니다.

댓글