[GCP] Compute Engine : 선점형 VM 인스턴스 (Preemptible VM Instances)

서경·2024년 10월 1일
post-thumbnail

선점형 VM 인스턴스 (Preemptible VM Instances)

  • GCP 내에서 아무도 사용하고 있지 않은 리소스를 사용함으로써 일반 인스턴스보다 훨씬 저렴한 가격으로 만들고, 실행할 수 있는 인스턴스

  • 제약사항
  1. Compute Engine은 시스템 이벤트가 발생하면 언제든 선점형 인스턴스를 종료할 수 있다.

  2. Compute Engine은 언제나 선점형 인스턴스를 24시간 동안 실행한 후 종료된다.

  3. 선점형 인스턴스는 한정된 Compute Engine은 리소스이므로 사용하지 못할 수도 있다.

  4. 선점형 인스턴스는 유지관리 이벤트 발생 시 Live Migration을 지원하지 않는다.

  5. 위와 같은 제약사항으로 Google Compute Engine SLA에서 제외


  • 제약 사항을 견딜 수 있으면, 선점형 인스턴스를 통해 Compute Engine의 비용을 크게 절감 할 수 있다.









1. 인스턴스 템플릿

  • VM 인스턴스 및 인스턴스 그룹을 만드는데 사용할 수 있는 리소스

  • 머신 유형, 부팅 디스크 이미지 또는 컨테이너 이미지, 영역, 라벨, 그 외의 속성 등을 이용하여 템플릿을 만들고, 이를 통해서 관리형 인스턴스 그룹이나 개별 VM 인스턴스를 만들 수 있다.

  • 인스턴스 템플릿의 가장 큰 목적은 동일한 구성의 인스턴스를 여러 개 만들기 위해서이다.

  1. 기존 인스턴스 템플릿을 변경할 수는 없다.
  2. 너무 오래되어서 구성을 변경해야 한다면, 새로운 인스턴스 템플릿을 만들어야 한다.
  • 인스턴스 템플릿은 지역이나 영역에 영향을 받지 않는 Global 리소스이지만, 인스턴스 템플릿 옵션 등 영역 리소스를 지정한다면 해당 리소스가 있는 영역으로 템플릿 사용을 제한할 수 있다.

템플릿은 복사할 기본 틀로, 동일한 구조를 여러 번 재사용하는 방식이다.
이를 붕어빵 틀에 비유할 수 있다. 템플릿에는 VM 인스턴스를 만들 때 필요한 하드웨어, 네트워크, 서비스 계정 설정 등이 저장된다.
이렇게 저장된 템플릿을 사용하면 VM 인스턴스를 쉽게 생성할 수 있으며, 특히 오토 스케일링 시 유용하다.






2. 스냅샷


스냅샷은 VM 인스턴스의 특정 상태를 백업하는 과정으로, 마치 순간을 촬영하는 것과 같다.
스냅샷을 통해 VM 인스턴스의 현재 상태를 저장하고, 문제 발생 시 특정 시점으로 복구할 수 있다.
이는 현재 동작 중인 VM 인스턴스의 상태를 그대로 백업하는 방식이다.






3. 이미지

중지된 VM에서만 이미지를 생성할 수 있으며, 이는 VM 실행에 필요한 애플리케이션과 운영체제가 포함된 디스크 복제본이다.
동작 중인 서버가 아닌 중지된 서버에서만 만들 수 있으며, 스냅샷으로도 이를 생성할 수 있다.



3.1. 이미지 생성



3.2. 이미지로 VM 인스턴스 생성



TIP!

스냅샷과 이미지의 차이는 다음과 같다.
스냅샷은 동적으로 변하는 상태를 순간순간 백업하는 것이고,
이미지는 디스크 설정 등을 저장해 두고 새로운 인스턴스를 만들 때 사용하는 것이다.






4. 인스턴스 템플릿

  • Auto Scaling 적용시 사용

  • 먼저 원하는 이미지 생성
    실행 중인 VM 인스턴스를 사용할 때는 먼저 실행 중지 후 사용






5. 인스턴스 그룹

  • 프로젝트의 각 인스턴스를 개별적으로 제어할 필요가 없도록 VM 인스턴스 그룹을 만들고 관리할 수 있다.

  • 관리형 인스턴스 그룹과 비관리형 인스턴스 그룹 유형을 사용할 수 있다.



5.1. 관리형 인스턴스 그룹

  • 인스턴스 템플릿을 사용하여 동일한 인스턴스 그룹을 만들 수 있다.

  • 단일 항목으로 인스턴스 그룹을 제어해야 관리형 인스턴스 그룹에 속한 인스턴스를 변경할 경우 전체 인스턴스 그룹을 변경해야 한다.


  • 관리형 인스턴스 그룹은 별다른 설정 없이도 자동으로 Auto Scaling 지원

  • 애플리케이션 기반의 상태 확인을 이용하여 자동 복구 정책을 설정할 수 있어서 애플리케이션이 관리형 인스턴스 그룹에 제대로 응답을 하는지 주기적으로 확인하고, 만약 특정 인스턴스에서 문제가 발생하여 정상적으로 응답하지 않으면 인스턴스가 자동으로 다시 생성된다.


  • 관리형 인스턴스 그룹을 사용하면 부하 분산 서비스인 Load Balancer를 붙여서 그룹의 모든 인스턴스에 트래픽을 분산할 수 있다.

  • 새로운 버전의 S/W를 관리형 인스턴스 그룹의 인스턴스에 쉽게 배포할 수 있다.


  • 관리형 인스턴스 그룹 2가지 유형
  1. 단일 영역에 인스턴스를 배포하는 영역 관리형 인스턴스 그룹
  2. 동일 리전 내 여러 영역에 배포하는 리전 관리형 인스턴스 그룹
    · 애플리케이션의 부하를 여러 영역에 분산시켜 보다 높은 가용성 제공
    · 자연 재해 등의 문제로 특정 영역에서 문제가 발생하더라도 높은 가용성 유지

  • 관리형 인스턴스 그룹의 인스턴스들은 디폴트 네트워크에 배치가 되며 리전 범위에서 임의의 IP 주소가 할당된다.

  • 더 작은 IP 범위를 사용하고자 한다면, 커스텀 모드 VPC 네트워크와 서브넷을 만든 다음 인스턴스 템플릿에 지정하여 그룹의 IP 범위를 제한 할 수 있다.


  • 컨테이너를 이용하여 애플리케이션의 배포를 간소화할 수 있다.
    인스턴스 템플릿에 컨테이너 이미지를 지정한 다음 이 템플릿을 사용하여 관리형 인스턴스 그룹을 만들면 도커가 포함된 컨테이너 최적화 OS로 각 인스턴스가 생성되고, 그룹의 각 인스턴스에서 컨테이너가 자동으로 시작

  • 높은 속도보다 비용이 중요한 작업의 경우, 인스턴스 그룹에서 선점형 VM 인스턴스를 사용하여 작업 부하 비용을 절감할 수 있다.
  1. 선점형 인스턴스는 최대 24시간 동안 지속되며, 정상적으로 선점된다.
  2. 선점형 인스턴스는 언제든 삭제될 수 있지만 선점 가능한 용량을 다시 사용할 수 있게 되면 자동 복구를 통해 인스턴스가 복구된다.



5.2. 비관리형 인스턴스 그룹

  • 임의로 다른 구성을 가진 인스턴스를 추가하거나 제거할 수 있다.

  • Auto Scaling, 자동 복구, Rolling Update 지원, 인스턴스 템플릿 사용은 제공하지 않는다.

  • 비관리형 인스턴스 그룹은 가용성이 높고 확장 가능한 작업 부하를 배포하는 데는 적합하지 않다.









6. 전역(Global), 지역(Region)과 영역(Zone)

  • GCP 리소스는 전 세계 여러 위치에서 호스팅 된다.

  • 위치는 전역(Global)과 지역(Region), 그 지역에 있는 여러 영역(Zone)으로 구성

  • 모든 Compute Engine 리소스는 전역, 지역, 영역 리소스

  1. 이미지는 전역 리소스

  2. 영구 디스크는 지역 또는 영역 리소스

  3. 리소스 범위에 따라 다른 리소스에서 해당 리소스에 액세스할 수 있는 범위가 결정된다.

  4. 전역 리소스는 모든 지역 또는 영역의 리소스에서 액세스할 수 있어서 서로 다른 영역의 VM 인스턴스가 동일한 전역 이미지를 사용할 수 있다.

  5. 지역 리소스는 동일한 지역 내의 리소스에서만 액세스할 수 있다.
    · 지역 고정 외부 IP 주소는 동일한 지역 내의 리소스에서만 액세스 할 수 있는 식이다.
    · 시스템 설계시 사용하고자 하는 리소스가 어떤 범위의 리소스인지 고려한다면, 좀 더 나은 시스템 설계를 하는 데 도움이 된다.



6.1. 전역 리소스 (Global Resources)

  • 동일한 프로젝트 내의 모든 영역에 있는 모든 리소스가 액세스할 수 있다.

  • 전역 리소스를 만들 때는 범위 사용을 지정하지 않아도 된다.


○ 주소 (Address)

전역 정적 외부 IP 주소는 전역 리소스이며 HTTP(S), SSL Proxy, TCP Proxy와 같은 전역 부하 분산 장치에 사용할 수 있다.


○ 이미지 (Image)

모든 인스턴스 또는 디스크 리소스에서 사용할 수 있다.


○ 스냅샷 (Snapshots)

영구 디스크 스냅샷은 스냅샷과 동일한 프로젝트 내의 모든 디스크에서 사용할 수 있다.


○ 인스턴스 템플릿 (Instance templates)

전역 리소스이지만, 인스턴스 템플릿에서 영역 리소스를 지정할 수 있으며, 이 경우 영역 리소스가 있는 영역으로 템플릿 사용이 제한됩니다.


○ VPC 네트워크 (VPC Network)

VPC 네트워크는 전역 리소스이지만, 개별 서브넷은 지역 리소스이다.


○ 방화벽 (Firewalls)

단일 VPC 네트워크에 적용되지만, 패킷이 다른 네트워크에서 방화벽에 도달할 수 있기 때문에 전역 리소스로 간주


○ 경로 (Routes)

  • 경로는 이용하면 라우터가 로컬 영역 네트워크 내에서 트래픽을 전달하는 방식과 유사하게 특정 IP 범위로 향하는 트래픽 경로를 지정할 수 있다.

  • 경로는 GCP 프로젝트 내의 VPC 네트워크에 적용되며 전역 리소스로 간주


○ 전역 작업 (Global operations)

전역 리소스에서 작업을 이행하는 경우 전역 작업으로 간주



6.2. 지역 리소스 (Region Resources)

동일한 지역 내의 모든 리소스가 액세스할 수 있다.


○ 주소 (Address)

지역 고정 외부 IP 주소는 지역 리소스이며 주소와 동일한 지역에 있는 인스턴스에서만 사용할 수 있다.


○ 서브넷 (Subnets)

지역적으로 네트워크를 서브넷으로 구분하고 인스턴스의 내부 IP 주소가 할당되는 서브넷으로 제어


○ 지역 관리형 인스턴스 (Regional managed instance groups)

여러 영역에 걸쳐 있는 동종 인스턴스 모음


○ 지역 영구 디스크 (Regional persistent disks)

동일한 지역 내의 두 영역 간에 데이터를 영구 저장하고 복제할 수 있다.


○ 지역 작업 (Regional operations)

지역 내에 있는 리소스에서 작업을 이행하는 경우 해당 작업이 지역별 작업으로 간주



6.3. 영역 리소스 (Zone Resources)

  • 영역에서 호스팅 되는 리소스

  • 해당 영역에서 고유하며 동일한 영역의 다른 리소스에서만 사용할 수 있다.


○ 인스턴스 (Instances)

가상 머신 인스턴스는 영역 내에 상주해야 하며, 같은 영역 내의 리소스 또는 전역 리소스에 액세스할 수 있다.


○ 영구 디스크 (Persistent disks)

  • 같은 영역 내의 다른 인스턴스에서 액세스한다.

  • 디스크와 동일한 영역에 있는 인스턴스에만 디스크를 연결할 수 있다.


○ 머신 유형 (Machine types)

  • 영역별 리소스로 인스턴스와 디스크는 동일한 영역에 있는 머신 유형만 사용할 수 있다.

○ 영역 관리형 인스턴스 그룹 (Zonal managed instance groups)

  • 인스턴스 템플릿을 사용하여 단일 영역 내에 동일한 인스턴스 그룹을 만든다.

○ 영역별 작업 (Per-zone operations)

  • 영역 내에 있는 리소스에서 작업을 이행하는 경우 해당 작업이 영역별 작업으로 간주된다.






7. Compute Engine 부하 분산






8. Cloud Load Balancing






9. Auto Scaling



TIP!

Visual Studio Code의 Remote-SSH 확장 기능을 설치하면 확장 터미널이 생성된다.
원격 탐색기의 설정에서 서버 주소와 SSH 포트 번호(기본 22번)를 입력해야 한다
SSH는 "Secure Shell"의 약자다. VM 인스턴스를 생성하면 기본적으로 모든 인바운드 트래픽이 차단되지만,
HTTP(80번), HTTPS(443번)와 함께 방화벽 규칙에서 22번 포트를 열어 SSH 접속을 허용한다.

0개의 댓글