ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Google Cloud] VM인스턴스 배치 정책
    Public Cloud/Google Cloud 2022. 8. 3. 16:10

    개요

    구글 클라우드는 AWS와 다르게 인스턴스 배치 정책이 존재합니다.

    인스턴스 배치정책이란 가상머신이 실제 물리서버에 배치되는 정책입니다.

    구글 클라우드에서는 두가지 방법으로 정책을 만들 수 있습니다.

    설정 관련하여 가이드 문서[1]에 자세하게 설명되어 있습니다.

     

    1. 분산 정책 

    - VM을 서로 다른 물리머신에 배치하는 정책으로 같은 머신에 있어 장애가 발생할 수 있는 서버에 적용하는 정책입니다.

    예를 들면 가상머신에 DBMS를 올려서 사용할 경우 분산 정책이 필요할 수 있습니다.

     

    2. 압축 정책

    - VM 간의 네트워크 지연시간을 줄이기 위해 가까이 두려는 정책입니다.

     

     

    분산 배치정책 설정 방법

    기본적으로 gcloud 설정이 완료된 상태로 설명을 하겠습니다.

    대문자로 표기된 부분은 직접 입력을 합니다.

    gcloud compute resource-policies create group-placement POLICY_NAME \
        --availability-domain-count DOMAIN_COUNT \
        --region REGION \
        --project PROJECT_ID
    • POLICY_NAME: 새 정책 이름입니다.
    • DOMAIN_COUNT: 이 정책이 VM을 구분하는 데 사용할 호스트 하드웨어 및 물리적 네트워크의 고유한 집합 수입니다.
    • REGION: 이 정책을 사용하는 VM 인스턴스를 만들려는 리전입니다.
    • PROJECT_ID: 프로젝트 ID입니다.

    문서에 설정방법에 대해 자세히 설명되어 있으나 DOMAIN_COUNT부분에 대해서는 설명이 되어 있지 않습니다.

     

    DOMAIN_COUNT는 실제 물리머신의 수라고 이해하시면 됩니다. 

    카운터는 1부터 8까지 가능하며 8이 넘어가는 경우 아래와 같이 오류 메시지가 표시됩니다.

    ERROR: (gcloud.compute.resource-policies.create.group-placement) Could not fetch resource:
     - Invalid value for field 'resource.groupPlacementPolicy': '{  "availabilityDomainCount": 10}'. Availability domain count should be no greater than {8}

     

    [정책 생성]

    $ gcloud compute resource-policies create group-placement test-policy \
        --availability-domain-count 2 \
        --region asia-northeast3 \
        --project test-porjcet

     

    [정책 생성 확인]

    $ gcloud compute resource-policies list --project test-porjcet
    NAME         DESCRIPTION  REGION                                                                                     CREATION_TIMESTAMP
    test-policy               https://www.googleapis.com/compute/v1/projects/test-project/regions/asia-northeast3  2022-08-02T23:24:30.053-07:00

     

    [정책 정보 확인]

    $ gcloud compute resource-policies describe test-policy --region asia-northeast3 --project test-project
    creationTimestamp: '2022-08-02T23:24:30.053-07:00'
    groupPlacementPolicy:
      availabilityDomainCount: 2
    id: '******8670333******'
    kind: compute#resourcePolicy
    name: test-policy
    region: https://www.googleapis.com/compute/v1/projects/test-project/regions/asia-northeast3
    selfLink: https://www.googleapis.com/compute/v1/projects/test-project/regions/asia-northeast3/resourcePolicies/test-policy
    status: READY

     

    정책을 생성하였으면 이제 정책을 VM에 적용해야 합니다.

    정책 적용 방법은 신규 생성시 VM에 적용하는 방법과 기존에 생성된 VM에 적용하는 방법 두가지가 있습니다.

    생성시에 정책을 적용하는 방법도 있지만 다른 관리툴을 사용하여 VM을 생성하는 경우가 많아 기존 VM에 적용하는 방법으로 설명하겠습니다.

     

    $ gcloud compute resource-policies create group-placement POLICY_NAME \
        --collocation COLLOCATED \
        --region REGION \
        --project PROJECT_ID
    • POLICY_NAME: 새 정책 이름입니다.
    • REGION: 이 정책을 사용하는 VM 인스턴스를 만들려는 리전입니다.
    • PROJECT_ID: 프로젝트 ID입니다.

     

    [VM 정책적용]

    $ gcloud compute instances add-resource-policies test-vm \
        --zone asia-northeast3-a \
        --resource-policies test-policy \
        --project test-project

    실행되고 있는 2대의 VM에 각각 적용을 하였습니다.

    먼저 적용된 VM에 정책이 적용되고 두번째 적용하는 VM의 같은 물리머신에 있다면 라이브 마이그레이션이 됩니다.[2]

     

     

    결론

    압축배치의 경우 한대의 머신에 같이 VM이 배치되어 다수의 VM이 호스트 에러가 발생할 수 있는 경우가 있기 때문에 압축 배치는 많이 사용하지 않을 것 같습니다. 반대로 분산 정책은 VM에 직접 DBMS를 사용하는 경우가 많이 있어 정책을 사용하면 좋을 것 같습니다.

     

     

    참고자료

    [1] https://cloud.google.com/compute/docs/instances/define-instance-placement#spread

    [2] https://cloud.google.com/compute/docs/instances/live-migration?hl=ko 

Copyright 2020. bluewins All Rights Reserved.