MIG에 스테이트풀(Stateful) IP 주소 구성


관리형 인스턴스 그룹(MIG)에 스테이트풀(Stateful) IP 주소를 구성하면 그룹의 VM 인스턴스가 자동 복구, 업데이트, 재생성될 때 IP 주소가 보존됩니다.

내부 및 외부 IPv4 주소를 보존할 수 있습니다. MIG의 각 VM 인스턴스에 IP 주소를 자동으로 할당하거나 특정 IP 주소를 할당하도록 구성할 수 있습니다.

시작하기 전에

  • 스테이트풀(Stateful) MIG를 사용하는 경우스테이트풀(Stateful) MIG 작동 방식을 검토합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      로컬 개발 환경에서 이 페이지의 Terraform 샘플을 사용하려면 gcloud CLI를 설치 및 초기화한 다음 사용자 인증 정보로 애플리케이션 기본 사용자 인증 정보를 설정하세요.

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. If you're using a local shell, then create local authentication credentials for your user account:

        gcloud auth application-default login

        You don't need to do this if you're using Cloud Shell.

      자세한 내용은 다음을 참조하세요: Set up authentication for a local development environment.

      REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

제한사항

스테이트풀(Stateful) IP 주소를 사용하는 MIG에는 다음과 같은 제한사항이 있습니다.

  • IPv6 주소는 지원되지 않습니다.

  • 내부 IP 주소는 기존 네트워크와 같이 서브네트워크가 없는 네트워크에서 지원되지 않습니다.

스테이트풀(Stateful) 구성(스테이트풀(Stateful) MIG)을 사용하는 MIG에는 다음 제한사항이 있습니다.

  • MIG에 스테이트풀(Stateful) 구성이 있는 경우 자동 확장을 사용할 수 없습니다.
  • 자동화된 순차적 업데이트를 사용하려면 RECREATE에 대해 대체 메서드를 설정해야 합니다.
  • 스테이트풀(Stateful) 리전 MIG의 경우 사전 재배포를 중지(재배포 유형을 NONE으로 설정)하여 자동 교차 영역 재배포에 의한 스테이트풀(Stateful) 인스턴스 삭제를 방지해야 합니다.
  • 모든 인스턴스 구성을 사용하여 인스턴스 템플릿 속성을 재정의하는 경우 어떤 인스턴스별 구성에서도 이러한 속성을 지정할 수 없으며 마찬가지로 그룹의 전체 인스턴스 구성에서 이러한 속성을 지정할 수 없습니다.

가격 책정

외부 IP 주소는 네트워킹 가격 책정에 따라 요금이 청구됩니다.

스테이트풀(Stateful) IP 주소를 사용하는 경우

인스턴스의 IP 주소를 보존하면 다음과 같은 상황에서 유용합니다.

  • 할당된 IP 주소가 고정 상태를 유지해야 하는 애플리케이션입니다(예: Kafka).
  • 애플리케이션의 구성이 특정 IP 주소에 따라 달라집니다(예: DNS 서버).
  • 다른 애플리케이션을 포함한 사용자가 전용 고정 IP 주소를 통해 서버에 액세스합니다(예: 파일 서버).
  • 네트워크 구성을 변경하지 않고 기존 워크로드를 마이그레이션해야 합니다.

그룹의 모든 VM에 대한 스테이트풀(Stateful) IP 주소 구성

MIG의 모든 VM에 스테이트풀(Stateful) IP 주소를 구성하면 다음과 같은 상황에서 유용합니다.

  • 할당된 IP 주소가 고정 상태를 유지하는 애플리케이션입니다. 하지만 애플리케이션에서 특정 인스턴스에 특정 IP 주소를 할당할 필요는 없습니다. 인스턴스 생성 시 IP 주소를 자동으로 할당할 수 있습니다.
  • 다른 애플리케이션을 포함한 사용자가 애플리케이션을 배포한 후 게시하는 고정 IP 주소를 통해 서버에 액세스합니다.
  • 인스턴스 생성 시 자동 할당되는 고정 IP 주소를 보존하면서 인스턴스 자동 복구와 자동 업데이트의 이점을 활용하고 싶습니다.

그룹의 기존 및 향후 VM 인스턴스에서 고정 내부 또는 외부 IP 주소를 유지하려면 스테이트풀(Stateful) 정책에서 구성하면 됩니다.

스테이트풀(Stateful) IP 주소 구성을 그룹의 스테이트풀(Stateful) 정책에 추가하면 MIG에서 다음과 같이 구성을 적용합니다.

  • 새 인스턴스의 경우 MIG가 고정 IP 주소를 자동으로 할당하고 예약합니다.
  • 기존 인스턴스의 경우 MIG에서 해당하는 고정 IP 주소를 예약하여 사용 중인 임시 인스턴스를 내부 또는외부 IP 주소를 고정 주소로 승격합니다.
  • 외부 IP 주소가 없는 기존 인스턴스에서는 MIG가 고정 IP 주소를 할당 및 예약하고 다음 기본값을 사용하여 해당하는 네트워크 인터페이스에 액세스 구성을 추가합니다.

    "accessConfigs": [
      {
        "kind": "compute#accessConfig",
        "name": "External NAT",
        "natIP": "XX.XX.XX.XX",
        "networkTier": "PREMIUM",
        "type": "ONE_TO_ONE_NAT"
      }
    ]
    

MIG는 고정 IP 주소를 예약하기 위해 주소 리소스를 만듭니다.

MIG 생성 시 스테이트풀(Stateful) 주소 구성

Google Cloud 콘솔, gcloud CLI, Terraform 또는 REST를 사용합니다.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 프로젝트를 선택하고 계속을 클릭합니다.

  3. 인스턴스 그룹 만들기를 클릭합니다.

  4. 새 관리형 인스턴스 그룹(스테이트풀(Stateful))을 선택합니다.

  5. 인스턴스 그룹의 이름을 지정합니다.

  6. 인스턴스 템플릿을 선택합니다.

  7. 인스턴스 수에서 관리형 인스턴스 그룹에 포함할 인스턴스의 수를 지정합니다.

  8. 스테이트풀(Stateful) 구성에서 스테이트풀(Stateful)로 설정할 외부 IP 및 내부 IP를 확장합니다.

    1. 스테이트풀(Stateful)에서 를 선택합니다.
    2. 영구 인스턴스 삭제 시 드롭다운에서 VM 인스턴스가 삭제될 때 스테이트풀(Stateful) IP 주소에서 수행할 작업을 선택합니다. 사용 가능한 옵션은 다음과 같습니다.
      • IP 분리: (기본값) 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지합니다.
      • IP 삭제: 인스턴스가 인스턴스 그룹에서 영구 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.
    3. 스테이트풀(Stateful) 구성을 마친 후 완료를 클릭합니다.
  9. 만들기를 클릭합니다.

gcloud

MIG를 만들 때 인스턴스 템플릿의 네트워크 인터페이스에서 스테이트풀(Stateful)이어야 하는 IP 주소를 지정하려면 gcloud compute instance-groups managed create 명령어와 함께 다음 플래그 중 하나 이상을 사용합니다.

  • --stateful-internal-ip: 특정 네트워크 인터페이스의 내부 IP 주소를 스테이트풀(Stateful)로 표시합니다.
  • --stateful-external-ip: 특정 네트워크 인터페이스의 외부 IP 주소를 스테이트풀(Stateful)로 표시합니다.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template INSTANCE_TEMPLATE \
    --size SIZE \
    --instance-redistribution-type NONE \
    --stateful-internal-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 만들려는 MIG의 이름입니다.
  • INSTANCE_TEMPLATE: 새 인스턴스를 만들 때 사용할 인스턴스 템플릿의 이름입니다.
  • SIZE: 이 그룹에 필요한 초기 인스턴스 수입니다.
  • NI_NAME: (선택사항) 네트워크 인터페이스 이름입니다. 제공하지 않으면 enabled 옵션이 필요하고 이름이 nic0인 기본 네트워크 인터페이스가 기본적으로 간주됩니다. 네트워크 인터페이스가 여러 개 있는 경우 각 네트워크 인터페이스의 각 IP에 이 플래그를 지정할 수 있습니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 규정합니다. 사용 가능한 옵션은 다음과 같습니다.

    • never: (기본값) 절대로 고정 IP 주소를 삭제하지 마세요. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • on-permanent-instance-deletion: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

예시

기본 및 커스텀 네트워크에 대한 고정 내부 IP 주소 및 기본 네트워크에 대해서만 고정 외부 IP 주소를 사용하는 VM 인스턴스의 리전 그룹을 만들어야 합니다. 주소를 자동으로 할당하되 인스턴스 자동 복구, 업데이트, 재생성 이벤트에서도 이 주소를 보존해야 합니다. 인스턴스 구성을 node-template이라는 인스턴스 템플릿에 저장합니다.

그룹을 만들려면 다음 명령어를 실행합니다.

gcloud compute instance-groups managed create example-group \
    --region us-east1 \
    --template node-template \
    --base-instance-name node \
    --instance-redistribution-type NONE \
    --size 3 \
    --stateful-internal-ip interface-name=nic0,auto-delete=on-permanent-instance-deletion
    --stateful-internal-ip interface-name=nic1,auto-delete=on-permanent-instance-deletion
    --stateful-external-ip enabled,auto-delete=on-permanent-instance-deletion

nic0nic1 네트워크 인터페이스의 내부 IP와 nic0 네트워크 인터페이스의 외부 IP는 그룹의 모든 인스턴스에서 스테이트풀(Stateful)로 구성됩니다. 그룹은 각 인스턴스의 고정 내부 및 외부 IP 주소를 자동으로 예약합니다. auto-delete 플래그가 on-permanent-instance-deletion으로 설정되어 있으므로 연결된 인스턴스 또는 전체 그룹을 삭제하면 그룹에서 고정 IP 주소 예약을 자동으로 삭제합니다.

nic0nic1 네트워크 인터페이스의 내부 IP와 nic0 네트워크 인터페이스의 외부 IP가 스테이트풀(Stateful)로 구성되었는지 확인하려면 다음 명령어를 실행하세요.

gcloud compute instance-groups managed describe example-group \
    --zone us-east1-c

다음과 유사한 결과가 출력됩니다.

baseInstanceName: node
...
name: example-group
...
statefulPolicy:
  preservedState:
    internalIPs:
      nic0:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
      nic1:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
    externalIPs:
      nic0:
        autoDelete: ON_PERMANENT_INSTANCE_DELETION
...

그룹의 스테이트풀(Stateful) 정책에서 nic0nic1 네트워크 인터페이스의 내부 IP와 nic0 네트워크 인터페이스의 외부 IP를 영구 인스턴스 삭제 시 고정 IP 예약을 삭제하는 규칙을 사용하여 스테이트풀(Stateful)로 선언하는 것을 볼 수 있습니다.

Terraform

MIG의 각 VM에 대해 원하는 머신 유형, 부팅 디스크 이미지, 네트워크, 기타 VM 속성을 지정하는 인스턴스 템플릿을 아직 만들지 않았으면 인스턴스 템플릿을 만듭니다.

MIG를 만들 때 인스턴스 템플릿의 네트워크 인터페이스에서 스테이트풀(Stateful)이어야 하는 IP 주소를 지정하려면 다음 블록 중 하나 또는 여러 개를 사용합니다.

  • stateful_internal_ip: 특정 네트워크 인터페이스의 내부 IP 주소를 스테이트풀(Stateful)로 표시합니다.
  • stateful_external_ip: 특정 네트워크 인터페이스의 외부 IP 주소를 스테이트풀(Stateful)로 표시합니다.

다음 샘플은 리전 MIG를 만들 때 스테이트풀(Stateful) IP 주소를 구성합니다. 샘플에 사용된 리소스에 관한 자세한 내용은 google_compute_region_instance_group_manager 리소스를 참조하세요.

resource "google_compute_region_instance_group_manager" "default" {
  name               = "example-group"
  base_instance_name = "node"
  target_size        = 3
  region             = "us-east1"

  version {
    instance_template = google_compute_instance_template.default.id
    name              = "primary"
  }
  update_policy {
    type                         = "OPPORTUNISTIC"
    minimal_action               = "REFRESH"
    instance_redistribution_type = "NONE"
    max_unavailable_fixed        = 3
  }
  stateful_internal_ip {
    interface_name = "nic0"
    delete_rule    = "ON_PERMANENT_INSTANCE_DELETION"
  }
  stateful_internal_ip {
    interface_name = "nic1"
    delete_rule    = "ON_PERMANENT_INSTANCE_DELETION"
  }
  stateful_external_ip {
    interface_name = "nic0"
    delete_rule    = "ON_PERMANENT_INSTANCE_DELETION"
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

REST

MIG를 만들 때 인스턴스 템플릿의 네트워크 인터페이스에서 스테이트풀(Stateful)이어야 하는 IP 주소를 지정하려면 instanceGroupManagers.insert 또는 regionInstanceGroupManagers.insert 메서드의 요청 본문에서 statefulPolicy 필드에 이를 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers

{
  "name": "INSTANCE_GROUP_NAME",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE"
    }
  ],
  "targetSize": SIZE,
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      },
      "externalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  }
}

다음을 바꿉니다.

  • PROJECT: 요청의 프로젝트 ID입니다.
  • REGION: 리전 MIG의 경우 그룹이 위치한 리전입니다. 영역 MIG의 경우 regions/REGIONzones/ZONE으로 바꾸고 MIG가 위치한 영역을 지정합니다.
  • NAME: 만들려는 MIG의 이름입니다.
  • INSTANCE_TEMPLATE: 새 인스턴스를 만들 때 사용할 인스턴스 템플릿의 이름입니다.
  • SIZE: 이 그룹에 필요한 초기 인스턴스 수입니다.
  • NI_NAME: (선택사항) 네트워크 인터페이스 이름입니다. 제공하지 않으면 enabled 옵션이 필요하고 이름이 nic0인 기본 네트워크 인터페이스가 기본적으로 간주됩니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 설명합니다. 사용 가능한 옵션은 다음과 같습니다.

    • NEVER: (기본값) 고정 IP 주소를 삭제하지 않습니다. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • ON_PERMANENT_INSTANCE_DELETION: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

예시

기본 및 커스텀 네트워크에 대한 고정 내부 IP 주소 및 기본 네트워크에 대해서만 고정 외부 IP 주소를 사용하는 VM 인스턴스의 리전 그룹을 만들어야 합니다. 주소를 자동으로 할당하되 인스턴스 자동 복구, 업데이트, 재생성 이벤트에서도 이 주소를 보존해야 합니다. 인스턴스 구성을 node-template이라는 인스턴스 템플릿에 저장합니다.

그룹을 만들려면 regionInstanceGroupManagers.insert 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers

{
  "name": "example-group",
  "baseInstanceName": "node",
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/node-template"
    }
  ],
  "targetSize": 3,
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" },
        "nic1": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
      "externalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
    }
  },
  "updatePolicy": {
    "instanceRedistributionType": "NONE"
  }
}

nic0nic1 네트워크 인터페이스의 내부 IP와 nic0 네트워크 인터페이스의 외부 IP는 그룹의 모든 인스턴스에서 스테이트풀(Stateful)로 구성됩니다. 그룹은 각 인스턴스의 고정 내부 및 외부 IP 주소를 자동으로 예약합니다. auto-delete 필드가 ON_PERMANENT_INSTANCE_DELETION으로 설정되어 있으므로 연결된 인스턴스 또는 전체 그룹을 삭제하면 그룹에서 고정 IP 주소 예약을 자동으로 삭제합니다.

regionInstanceGroupManagers.get 메서드를 사용하여 nic0nic1 네트워크 인터페이스의 내부 IP와 nic0 네트워크 인터페이스 내의 외부 IP가 새 regionInstanceGroupManagers 리소스의 스테이트풀(Stateful) 정책에 구성되어 있는지 확인합니다.

GET https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group

응답에 구성된 스테이트풀(Stateful) 정책이 포함됩니다.

{
  "name": "example-group",
  "baseInstanceName": "node",
  ...
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" },
        "nic1": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
      "externalIPs": {
        "nic0": {"autoDelete": "ON_PERMANENT_INSTANCE_DELETION" }
      }
    }
  }
  ...
}

그룹의 스테이트풀(Stateful) 정책에서 nic0nic1 네트워크 인터페이스의 내부 IP와 nic0 네트워크 인터페이스의 외부 IP를 영구 인스턴스 삭제 시 연관된 고정 IP 주소 예약을 삭제하는 규칙을 사용하여 스테이트풀(Stateful)로 선언하는 것을 볼 수 있습니다.

기존 MIG의 IP 주소에 대한 스테이트풀(Stateful) 구성 설정 및 업데이트

스테이트리스(Stateless) MIG(스테이트풀(Stateful) 구성이 없는 MIG)에서 워크로드를 실행하고 워크로드에 고정 IP 주소가 필요한 경우에는 관리형 VM 인스턴스에 이미 할당된 IP 주소를 스테이트풀(Stateful)로 구성할 수 있습니다. 이렇게 하면 기존 VM의 IP 주소가 인스턴스 자동 복구, 업데이트, 재생성 이벤트 시에도 보존됩니다. 선택적으로 인스턴스가 삭제된 후 고정 IP 주소 예약을 유지할 수 있습니다.

기존 MIG의 IP 주소에 스테이트풀(Stateful) 정책을 구성하면 다음을 수행할 수 있습니다.

  • 그룹에서 모든 기존 및 이후 인스턴스에 대해 IP 주소를 스테이트풀(Stateful)로 구성합니다. 이렇게 하면 모든 기존 인스턴스의 해당 임시 IP 주소가 고정 IP 주소로 승격됩니다.
  • IP 주소에 대한 기존 스테이트풀(Stateful) 구성을 업데이트합니다.

MIG는 스테이트풀(Stateful) 정책의 업데이트된 구성을 모든 인스턴스에 비동기식으로 자동 적용합니다. 스테이트풀(Stateful) 정책에서 IP 주소 구성을 업데이트해도 실행 중인 VM 인스턴스는 중단되지 않습니다. 자세한 내용은 스테이트풀(Stateful) 정책 업데이트 적용을 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 스테이트풀(Stateful) IP 주소를 지정할 인스턴스 그룹의 이름을 클릭합니다.

  3. 수정을 클릭하여 관리형 인스턴스 그룹을 수정합니다.

  4. 스테이트풀(Stateful) 구성에서 스테이트풀(Stateful)로 설정할 외부 IP 및 내부 IP를 확장합니다.

    1. 스테이트풀(Stateful)에서 를 선택합니다.
    2. 영구 인스턴스 삭제 시 드롭다운에서 VM 인스턴스가 삭제될 때 스테이트풀(Stateful) IP 주소에서 수행할 작업을 선택합니다. 사용 가능한 옵션은 다음과 같습니다.
      • IP 분리: (기본값) 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지합니다.
      • IP 삭제: 인스턴스가 인스턴스 그룹에서 영구 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.
    3. 스테이트풀(Stateful) 구성을 업데이트한 후 완료를 클릭합니다.
    4. 저장을 클릭하여 업데이트를 완료합니다.

gcloud

스테이트풀(Stateful)이어야 하는 IP 주소를 지정하거나 기존 MIG의 스테이트풀(Stateful) IP 구성을 업데이트하려면 gcloud compute instance-groups managed update 명령어와 함께 하나 이상의 --stateful-internal-ip 또는--stateful-external-ip 플래그를 사용합니다.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --stateful-internal-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip [enabled | interface-name=NI_NAME][,auto-delete=DELETE_RULE]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 업데이트할 MIG의 이름입니다.
  • NI_NAME: (선택사항) 네트워크 인터페이스 이름입니다. 제공하지 않으면 enabled 옵션이 필요하고 이름이 nic0인 기본 네트워크 인터페이스가 기본적으로 간주됩니다. 네트워크 인터페이스가 여러 개 있는 경우 각 네트워크 인터페이스의 각 IP에 이 플래그를 지정할 수 있습니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 규정합니다. 사용 가능한 옵션은 다음과 같습니다.

    • never: (기본값) 절대로 고정 IP 주소를 삭제하지 마세요. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • on-permanent-instance-deletion: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

지정된 IP 주소가 특정 네트워크 인터페이스의 스테이트풀(Stateful) 정책에서 이미 구성된 경우 이 명령어가 구성을 업데이트합니다.

예시

고정 외부 IP 주소를 통해 외부 사용자에게 example-fs-group이라는 스테이트풀(Stateful) MIG에서 실행되는 파일 서버를 노출해야 합니다. 그룹의 인스턴스에는 임시 외부 IP 주소가 사용됩니다. 외부 사용자가 게시된 IP 주소를 통해 서버에 계속 액세스할 수 있도록 인스턴스 자동 복구 및 업데이트 시 IP 주소를 보존해야 합니다. 또한 의도치 않게 그룹이 삭제되는 경우를 대비한 연속성을 위해 IP 주소를 예약해야 합니다.

다음 명령어로 외부 IP 주소를 스테이트풀(Stateful)로 정의하도록 MIG를 업데이트합니다.

gcloud compute instance-groups managed update example-fs-group \
    --stateful-external-ip enabled

그러면 그룹에서 nic0 네트워크 인터페이스의 임시 외부 IP 주소를 모든 관리형 인스턴스의 고정 IP 주소로 비동기식으로 승격합니다.

이제 인스턴스 자동 복구, 업데이트, 재생성 이벤트 시 외부 IP 주소가 보존됩니다. 지정되지 않은 auto-delete 규칙은 기본적으로 never로 설정되므로 연결된 고정 IP 주소 예약이 할당되지 않고 인스턴스 삭제 시 보존됩니다.

gcloud compute instance-groups managed describe example-fs-group 명령어를 실행하여 스테이트풀(Stateful) 외부 IP가 스테이트풀(Stateful) 정책에 구성되었는지 확인할 수 있습니다.

REST

스테이트풀(Stateful)이어야 하는 IP 주소를 지정하거나 기존 MIG의 스테이트풀(Stateful) IP 구성을 업데이트하려면 instanceGroupManagers.patch 또는 regionInstanceGroupManagers.patch 메서드를 사용합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      },
      "externalIPs": {
        "NI_NAME": {"autoDelete": "DELETE_RULE" }
      }
    }
  }
}

다음을 바꿉니다.

  • PROJECT: 요청의 프로젝트 ID입니다.
  • REGION: 리전 MIG의 경우 그룹이 위치한 리전입니다. 영역 MIG의 경우 regions/REGIONzones/ZONE으로 바꾸고 MIG가 위치한 영역을 지정합니다.
  • NAME: 만들려는 MIG의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 설명합니다. 사용 가능한 옵션은 다음과 같습니다.

    • NEVER: (기본값) 고정 IP 주소를 삭제하지 않습니다. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • ON_PERMANENT_INSTANCE_DELETION: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

지정된 IP 주소가 스테이트풀(Stateful) 정책에서 이미 구성된 경우 이 메서드가 구성을 패치합니다.

예시

고정 외부 IP 주소를 통해 외부 사용자에게 example-fs-group이라는 스테이트풀(Stateful) MIG에서 실행되는 파일 서버를 노출해야 합니다. 그룹의 인스턴스에는 임시 외부 IP 주소가 사용됩니다. 외부 사용자가 게시된 네트워크 인터페이스를 통해 서버에 계속 액세스할 수 있도록 인스턴스 자동 복구 및 업데이트 시 IP 주소를 보존해야 합니다. 또한 의도치 않게 그룹이 삭제되는 경우를 대비한 연속성을 위해 IP 주소를 예약해야 합니다.

MIG를 패치하여 외부 IP 주소를 스테이트풀(Stateful)로 정의합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-fs-group

{
  "statefulPolicy": {
    "preservedState": {
      "externalIPs": {
        "nic0": {"autoDelete": "NEVER" }
      }
    }
  }
}

그러면 그룹에서 nic0 네트워크 인터페이스의 임시 외부 IP 주소를 모든 관리형 인스턴스의 고정 IP 주소로 비동기식으로 승격합니다.

이제 인스턴스 자동 복구, 업데이트, 재생성 이벤트 시 외부 IP 주소가 보존됩니다. autoDelete 규칙이 NEVER로 설정되어 있으므로 연결된 고정 IP 주소 예약이 할당되지 않고 인스턴스 삭제 시 보존됩니다.

regionInstanceGroupManagers.get 메서드가 반환하는 regionInstanceGroupManagers 리소스를 보고 스테이트풀(Stateful) 정책에 외부 IP 주소가 구성되어 있는지 확인합니다.

스테이트풀(Stateful)이었던 IP 주소를 스테이트리스(Stateless)로 선언

스테이트풀(Stateful) IP 주소를 임시 주소로 구성해야 하는 이유는 다음과 같습니다.

  • 더 이상 고정 IP 주소를 사용하지 않도록 앱을 다시 구성하는 경우
  • IP를 실수로 스테이트풀(Stateful)로 구성해서 되돌리려는 경우

그룹의 스테이트풀(Stateful) 정책에서 스테이트풀(Stateful) IP 구성을 삭제하여 모든 관리형 인스턴스에서 특정 네트워크 인터페이스의 IP 주소를 임시 주소로 선언할 수 있습니다.

스테이트풀(Stateful) 정책에서 스테이트풀(Stateful) IP 구성을 삭제하면 MIG가 해당 그룹에 있는 모든 인스턴스의 예약된 상태로부터 자동으로 그리고 비동기식으로 IP 주소를 삭제합니다. 이 작업을 수행해도 실행 중인 VM은 중단되지 않습니다. IP 주소가 인스턴스에서 활성 상태로 유지되지만 더 이상 스테이트풀(Stateful)이 아닙니다. 인스턴스를 다시 만들거나 업데이트할 때 또는 인스턴스가 자동 복구될 때 MIG가 연결된 고정 IP 주소를 할당 해제하고 임시 주소를 자동 할당합니다. 고정 외부 IP 주소 예약을 더 이상 보존할 필요가 없으면 이제 이를 해제할 수 있습니다.

자세한 내용은 다음 문서를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. IP 주소의 스테이트풀(Stateful) 구성을 삭제할 인스턴스 그룹의 이름을 클릭합니다.

  3. 수정을 클릭하여 관리형 인스턴스 그룹을 수정합니다.

  4. 스테이트풀(Stateful) 구성에서 스테이트리스(Stateless)로 설정할 외부 IP 및 내부 IP를 확장합니다.

    1. 스테이트풀(Stateful) 옵션을 아니요로 변경합니다.
    2. 완료를 클릭합니다.
  5. 수정을 완료한 후 저장을 클릭합니다.

gcloud

MIG의 스테이트풀(Stateful) 정책에서 임시 주소로 만들 IP 주소를 지정하려면 gcloud compute instance-groups managed update 명령어와 함께 --remove-stateful-internal-ips 또는 --remove-stateful-external-ips 플래그를 사용합니다.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --remove-stateful-internal-ips NI_NAME[,NI_NAME,...] \
    --remove-stateful-external-ips NI_NAME[,NI_NAME,...]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 업데이트할 MIG의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.

기본값인 nic0이라는 기본 네트워크 인터페이스에서 스테이트풀(Stateful) IP 주소를 임시 IP 주소로 전환해야 하는 경우 다음 명령어를 사용해도 됩니다.

gcloud compute instance-groups managed update INSTANCE_GROUP_NAME \
    --stateful-internal-ip disabled \
    --stateful-external-ip disabled

예시

애플리케이션이 example-group이라는 MIG에 있는 VM 인스턴스의 게시된 고정 외부 IP 주소를 통해 사용자에게 노출되었습니다. MIG 앞에 부하 분산기를 배포하고 이를 통해 트래픽을 관리형 VM으로 라우팅하여 서비스를 다시 설계했습니다. 고정 외부 IP 주소를 더 이상 유지할 필요가 없으며 VM의 외부 IP 주소를 임시 주소로 만들려고 합니다.

MIG에 있는 VM의 스테이트풀(Stateful) 외부 IP 주소를 임시 주소로 만들려면 다음 명령어를 실행합니다.

gcloud compute instance-groups managed update example-group \
    --remove-stateful-external-ips nic0

MIG는 해당 그룹에 있는 모든 인스턴스의 보존 상태에서 nic0 네트워크 인터페이스의 고정 외부 IP 주소를 자동으로 그리고 비동기식으로 삭제합니다. 외부 IP 주소가 인스턴스에서 활성 상태로 유지되지만 더 이상 스테이트풀(Stateful)이 아닙니다. 인스턴스를 다시 만들거나 업데이트할 때 또는 인스턴스가 자동 복구될 때 MIG가 연결된 고정 IP 주소를 할당 해제하고 임시 주소를 자동 할당합니다. 고정 외부 IP 주소 예약을 더 이상 보존할 필요가 없으면 이제 이를 해제할 수 있습니다.

REST

MIG의 스테이트풀(Stateful) 정책에서 임시 주소로 만들 IP 주소를 지정하려면 instanceGroupManagers.patch 또는 regionInstanceGroupManagers.patch 메서드를 사용하여 MIG의 스테이트풀(Stateful) 정책에서 각 IP의 구성을 삭제합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME

{
  "statefulPolicy": {
    "preservedState": {
      "internalIPs": {
        "NI_NAME": null
      },
      "externalIPs": {
        "NI_NAME": null
      }
    }
  }
}

다음을 바꿉니다.

  • PROJECT: 요청의 프로젝트 ID입니다.
  • REGION: 리전 MIG의 경우 그룹이 위치한 리전입니다. 영역 MIG의 경우 regions/REGIONzones/ZONE으로 바꾸고 MIG가 위치한 영역을 지정합니다.
  • INSTANCE_GROUP_NAME: 만들려는 MIG의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.

예시

애플리케이션이 example-group이라는 MIG에 있는 VM 인스턴스의 게시된 고정 외부 IP 주소를 통해 사용자에게 노출되었습니다. MIG 앞에 부하 분산기를 배포하고 이를 통해 트래픽을 관리형 VM으로 라우팅하여 서비스를 다시 설계했습니다. 고정 외부 IP 주소를 더 이상 유지할 필요가 없으며 VM의 외부 IP 주소를 임시 주소로 만들려고 합니다.

MIG에 있는 VM의 스테이트풀(Stateful) 외부 IP 주소를 임시 주소로 만들려면 MIG를 패치합니다.

PATCH https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group

{
  "statefulPolicy": {
    "preservedState": {
      "externalIPs": {
        "nic0": null
      }
    }
  }
}

MIG는 해당 그룹에 있는 모든 인스턴스의 보존 상태에서 nic0 네트워크 인터페이스의 고정 외부 IP 주소를 자동으로 그리고 비동기식으로 삭제합니다. 외부 IP 주소가 인스턴스에서 활성 상태로 유지되지만 더 이상 스테이트풀(Stateful)이 아닙니다. 인스턴스를 다시 만들거나 업데이트할 때 또는 인스턴스가 자동 복구될 때 MIG가 연결된 고정 IP 주소를 할당 해제하고 임시 주소를 자동 할당합니다. 고정 외부 IP 주소 예약을 더 이상 보존할 필요가 없으면 이제 이를 해제할 수 있습니다.

MIG에서 VM에 개별적으로 스테이트풀(Stateful) IP 주소 구성

MIG의 VM에 스테이트풀(Stateful) IP 주소를 개별적으로 구성하면 다음과 같은 상황에서 유용합니다.

  • 자동 복구 및 자동 업데이트를 활용하기 위해 독립형 VM 인스턴스의 기존 워크로드를 스테이트풀(Stateful) MIG로 마이그레이션합니다(기존의 예약된 고정 IP 주소 가져오기).
  • 아키텍처 또는 워크로드 구성에 필요한 예약된 특정 고정 IP 주소를 할당합니다.

MIG에서 VM 생성 시 고정 IP 주소 구성

MIG에서 인스턴스를 개별적으로 만들 때 고정 IP 주소를 예약하고 특정 인스턴스에 할당할 수 있습니다. 이렇게 하면 아키텍처, 구성, 사용자가 특정 고정 IP 주소를 사용하는 상황에서 기존 독립형 VM에서 스테이트풀(Stateful) MIG로 스테이트풀(Stateful) 애플리케이션을 마이그레이션할 때 유용합니다.

MIG에서 인스턴스를 수동으로 만들고 고정 IP 주소를 제공하면 MIG가 다음 작업을 수행합니다.

  1. 제공된 IP 주소의 고정 내부 또는 외부 IP 주소 예약이 아직 없으면 이를 만듭니다.
  2. 제공된 인스턴스 이름 및 IP 주소를 사용해서 인스턴스 템플릿에서 인스턴스를 만듭니다.
  3. IP 주소에 대해 제공된 스테이트풀(Stateful) 구성을 사용하여 인스턴스별 구성을 만듭니다.

gcloud

사전 정의된 고정 IP 주소로 인스턴스를 만들려면 gcloud compute instance-groups managed create-instance 명령어와 함께 다음 플래그 중 하나 이상을 사용합니다.

  • --stateful-internal-ip: 특정 네트워크 인터페이스의 고정 내부 IP 주소를 설정합니다.
  • --stateful-external-ip: 특정 네트워크 인터페이스의 고정 외부 IP 주소를 설정합니다.
gcloud compute instance-groups managed create-instance INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: MIG 이름입니다.
  • INSTANCE_NAME: 만들려는 인스턴스의 이름입니다.
  • NI_NAME: (선택사항) 네트워크 인터페이스 이름입니다. 제공하지 않으면 nic0이라는 기본 네트워크 인스턴스 이름이 기본적으로 간주됩니다. 네트워크 인터페이스가 여러 개인 경우 각 네트워크 인터페이스의 각 IP에 이 플래그를 지정할 수 있습니다.
  • ADDRESS: (필수) 다음 형식 중 하나로 인스턴스에 할당할 고정 IP 주소입니다.

    • Address. 고정 IP 주소 예약의 URL(예: "projects/example-project/regions/us-east1/addresses/example-ip-name")입니다.
    • 리터럴 형식(예: "130.211.181.55")입니다.
      • 제공된 IP 주소가 아직 예약되지 않았으면 MIG가 자동으로 해당하는 IP 주소 예약을 생성합니다.
      • 제공된 IP 주소가 예약되었으면 MIG가 인스턴스에 예약을 할당합니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 규정합니다. 사용 가능한 옵션은 다음과 같습니다.

    • never: (기본값) 절대로 고정 IP 주소를 삭제하지 마세요. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • on-permanent-instance-deletion: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

예시

이름이 proxy-cluster인 MIG에서 실행되는 프록시 서버 클러스터에 VM 인스턴스를 하나 이상 추가해야 합니다. 이름이 proxy-node-03-ip인 고정 내부 IP 주소 예약을 만들었고 이를 새 노드에 할당해야 합니다. 이후에 노드를 삭제하도록 결정하더라도 IP 주소 예약을 보존해야 합니다.

다음 명령어를 실행하여 노드를 만듭니다.

gcloud compute instance-groups managed create-instance proxy-cluster \
    --instance proxy-node-03 \
    --stateful-internal-ip address="projects/example-project/regions/us-east1/addresses/proxy-node-03-ip",auto-delete=never

이 명령어는 proxy-node-03이라는 인스턴스를 만들고, proxy-node-03-ip라는 제공된 고정 내부 IP 주소를 인스턴스에 할당하며, 해당하는 -instance configuration에 IP의 스테이트풀(Stateful) 구성을 저장합니다. auto-delete 플래그가 never로 설정되어 있으므로 나중에 인스턴스를 삭제해도 IP가 예약된 상태로 유지됩니다.

Terraform

사전 정의된 고정 IP 주소로 VM을 만들려면 다음 블록 중 하나 이상을 사용합니다.

  • preserved_state.internal_ip: 특정 네트워크 인터페이스의 내부 IP 주소를 스테이트풀(Stateful)로 표시합니다.
  • preserved_state.external_ip: 특정 네트워크 인터페이스의 외부 IP 주소를 스테이트풀(Stateful)로 표시합니다.

다음 샘플은 리전 MIG에서 VM 생성 시 고정 IP 주소를 구성합니다. 샘플에 사용된 리소스에 관한 자세한 내용은 google_compute_region_per_instance_config 리소스를 참조하세요. 영역 MIG의 경우 google_compute_per_instance_config 리소스를 사용합니다.

resource "google_compute_region_per_instance_config" "default" {
  region_instance_group_manager = google_compute_region_instance_group_manager.default.name
  region                        = google_compute_region_instance_group_manager.default.region
  name                          = "proxy-node-03-ip"
  preserved_state {
    internal_ip {
      interface_name = "nic0"
      auto_delete    = "NEVER"
      ip_address {
        address = google_compute_address.default.id
      }
    }
  }
}

Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.

REST

MIG에 하나 이상의 인스턴스를 만들고, 커스텀 인스턴스 이름을 설정하고, 이러한 인스턴스에 사전 정의된 고정 IP 주소를 할당하려면 instanceGroupManagers.createInstances 또는 regionInstanceGroupManagers.createInstances 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/createInstances

{
  "instances": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        "externalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        ...
      }
    },
    ...
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID입니다.
  • NAME: MIG 이름입니다.
  • REGION: 리전 MIG의 경우 그룹이 위치한 리전입니다. 영역 MIG의 경우 regions/REGIONzones/ZONE으로 바꾸고 MIG가 위치한 영역을 지정합니다.
  • INSTANCE_NAME: 만들려는 인스턴스의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.
  • ADDRESS: (선택사항) 고정 IP 주소 예약의 URL 형식(예: "projects/example-project/regions/us-east1/addresses/example-ip-name")으로 인스턴스에 할당할 고정 IP 주소입니다. 고정 IP 주소를 할당할 때는 한 번에 하나의 필드(address 또는 literal)만 설정해야 합니다.
  • LITERAL: (선택사항) 리터럴 형식(예: "130.211.181.55")으로 인스턴스에 할당할 고정 IP 주소입니다. 고정 IP 주소를 할당할 때는 한 번에 하나의 필드(address 또는 literal)만 설정해야 합니다.
    • 제공된 리터럴 IP 주소가 아직 예약되지 않았으면 MIG가 자동으로 해당하는 IP 주소 예약을 생성합니다.
    • 제공된 리터럴 IP 주소가 예약되었으면 MIG가 인스턴스에 예약을 할당합니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 규정합니다. 사용 가능한 옵션은 다음과 같습니다.

    • NEVER: (기본값) 절대로 고정 IP 주소를 삭제하지 마세요. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • ON_PERMANENT_INSTANCE_DELETION: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

예시

이름이 proxy-cluster인 MIG에서 실행되는 프록시 서버 클러스터에 VM 인스턴스를 하나 이상 추가해야 합니다. 이름이 proxy-node-03-ip인 고정 내부 IP 주소 예약을 만들었고 이를 새 노드에 할당해야 합니다. 이후에 노드를 삭제하도록 결정하더라도 IP 주소 예약을 보존해야 합니다.

regionInstanceGroupManagers.createInstances 메서드를 호출하여 추가 인스턴스를 만듭니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/proxy-cluster/createInstances

{
  "instances": [
    {
      "name": "proxy-node-03",
      "preservedState" : {
        "internalIPs": {
          "nic0" : {
            "ipAddress": {
              "address": "projects/example-project/regions/us-east1/addresses/proxy-node-03-ip"
            },
            "autoDelete": "NEVER"
          }
        }
      }
    }
  ]
}

이 메서드는 proxy-node-03이라는 인스턴스를 만들고, proxy-node-03-ip라는 제공된 고정 내부 IP 주소를 인스턴스에 할당하며, 해당하는 -instance configuration에 IP의 스테이트풀(Stateful) 구성을 저장합니다. autoDelete 필드가 NEVER로 설정되어 있으므로 나중에 인스턴스를 삭제해도 IP가 예약된 상태로 유지됩니다.

MIG의 기존 VM에 고정 IP 주소 구성

개별적으로 관리형 인스턴스의 사전 정의된 고정 IP 주소를 설정하거나 스테이트풀(Stateful) IP 구성을 업데이트할 수 있습니다. 예를 들면 다음과 같습니다.

  • MIG의 기존 인스턴스에 고정 IP 주소를 할당합니다. 고정 외부 IP의 경우 이 작업을 실행하려면 인스턴스를 새로고침해야 하며 고정 내부 IP의 경우 인스턴스를 다시 만들어야 합니다.
  • 이미 할당된 고정 IP 주소의 삭제 규칙을 업데이트합니다. 이 작업은 실행 중인 인스턴스를 중단하지 않고 수행될 수 있습니다.

외부 스테이트풀(Stateful) IP를 구성하는 외부 IP 주소가 없는 기존 인스턴스에서는 MIG가 다음 기본값을 사용하여 해당하는 네트워크 인터페이스에 액세스 구성을 추가합니다.

"accessConfigs": [
  {
    "kind": "compute#accessConfig",
    "name": "External Nat",
    "natIP": "XX.XX.XX.XX",
    "networkTier": "PREMIUM",
    "type": "ONE_TO_ONE_NAT"
  }
]

gcloud

MIG에 있는 VM 인스턴스의 스테이트풀(Stateful) IP 주소를 개별적으로 구성하려면 연결된 인스턴스별 구성에서 스테이트풀(Stateful) IP 구성을 추가하거나 업데이트합니다.

인스턴스에 아직 인스턴스별 구성이 없다면 gcloud compute instance-groups managed instance-configs create 명령어와 함께 다음 플래그 중 하나 이상을 사용합니다.

  • --stateful-internal-ip: 특정 네트워크 인터페이스의 고정 내부 IP 주소를 설정합니다.
  • --stateful-external-ip: 특정 네트워크 인터페이스의 고정 외부 IP 주소를 설정합니다.
gcloud compute instance-groups managed instance-configs create INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    [--no-update-instance | --update-instance]
    [--instance-update-minimal-action MINIMAL_ACTION]

인스턴스에 대한 인스턴스별 구성이 이미 있다면 gcloud compute instance-groups managed instance-configs update 명령어와 함께 하나 이상의 --stateful-internal-ip 또는 --stateful-external-ip 플래그를 사용합니다.

gcloud compute instance-groups managed instance-configs update INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --stateful-internal-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    --stateful-external-ip address=ADDRESS[,interface-name=NI_NAME][,auto-delete=DELETE_RULE] \
    [--no-update-instance | --update-instance]
    [--instance-update-minimal-action MINIMAL_ACTION]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: MIG 이름입니다.
  • INSTANCE_NAME: 스테이트풀(Stateful) IP 주소를 구성할 인스턴스의 이름입니다.
  • NI_NAME: (선택사항) 네트워크 인터페이스 이름입니다. 제공하지 않으면 nic0이라는 기본 네트워크 인스턴스 이름이 기본적으로 간주됩니다. 네트워크 인터페이스가 여러 개인 경우 각 네트워크 인터페이스의 각 IP에 이 플래그를 지정할 수 있습니다.
  • ADDRESS: 다음 형식 중 하나로 인스턴스에 할당할 고정 IP 주소입니다.
    • Address. 고정 IP 주소 예약의 URL(예: "projects/example-project/regions/us-east1/addresses/example-ip-name")입니다.
    • 리터럴 형식입니다. 예를 들면 "130.211.181.55"입니다.
      • 제공된 IP 주소가 아직 예약되지 않았으면 MIG가 자동으로 해당하는 IP 주소 예약을 생성합니다.
      • 제공된 IP 주소가 예약되었으면 MIG가 인스턴스에 예약을 할당합니다.
    • 인스턴스의 인스턴스별 구성에 이미 주소가 정의되어 있는 경우 이 하위 플래그는 선택사항입니다. 그렇지 않으면 필수사항입니다.
    • 생략해도 구성된 주소는 변경되지 않습니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 규정합니다. 사용 가능한 옵션은 다음과 같습니다.

    • never: (기본값) 절대로 고정 IP 주소를 삭제하지 마세요. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • on-permanent-instance-deletion: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.
    • 생략하면 새 스테이트풀(Stateful) IP 구성에 기본값이 설정됩니다. 값은 기존 구성에서 변경되지 않습니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

  • --update-instance: (선택사항, Default.) 변경사항을 즉시 인스턴스에 적용합니다. --no-update-instance 플래그를 사용하면 변경사항이 적용되지 않고 나중에 인스턴스를 다시 만들거나 인스턴스에 업데이트를 적용할 때 적용됩니다.

  • MINIMAL_ACTION: (선택사항) 인스턴스에 인스턴스별 구성 업데이트를 적용할 때 최소한 지정된 작업은 수행합니다. --update-instance 플래그와 함께 사용해야 합니다. 값은 다음 중 하나여야 합니다.

    • none: 적용할 작업이 없습니다.
    • refresh: 인스턴스를 중지하지 않고 적용할 수 있는 업데이트를 적용합니다.
    • restart: 인스턴스를 중지했다가 다시 시작합니다.
    • replace: 인스턴스를 다시 만듭니다.

생략 시 업데이트에 필요한 중단이 가장 적은 작업이 사용됩니다.

예시

file-server라는 파일 서버 인스턴스가 있고 이 인스턴스는 fs-group이라는 스테이트풀(Stateful) MIG에서 단일 인스턴스입니다. 이 그룹은 스테이트풀(Stateful) 데이터 디스크가 구성된 해당 인스턴스별 구성을 포함합니다. 파일 서버는 내부적으로만 액세스 가능하지만 고정 IP 주소를 통해 외부에서 액세스해야 하는 사용자가 있습니다. file-server-ip 주소 예약을 만들어서 고정 외부 IP를 예약했습니다. 이제 이 IP를 파일 서버 인스턴스에 할당해야 합니다.

다음 명령어를 실행해서 파일 서버 인스턴스에 대해 스테이트풀(Stateful) 외부 IP를 구성합니다.

gcloud compute instance-groups managed instance-configs update fs-group \
    --instance file-server \
    --stateful-external-ip interface-name=nic0,address="projects/example-project/regions/us-east1/addresses/file-server-ip",auto-delete=never \
    --update-instance

이 명령은 다음을 수행합니다.

  1. file-server 인스턴스에 대해 인스턴스별 구성을 업데이트합니다.
    1. file-server-ip 주소 예약을 가리키는 스테이트풀(Stateful) 외부 IP 구성을 추가합니다.
    2. 기존 스테이트풀(Stateful) 데이터 디스크 구성을 변경하지 않은 채 유지합니다.
  2. --update-instance 플래그가 포함되어 있으므로 인스턴스별 구성 업데이트가 즉시 file-server 인스턴스에 적용됩니다. 인스턴스를 새로고침하고 file-server-ip 예약에서 고정 외부 IP 주소를 할당합니다.

REST

MIG에 있는 VM 인스턴스의 스테이트풀(Stateful) IP를 개별적으로 구성하려면 연결된 인스턴스별 구성에서 스테이트풀(Stateful) IP 구성을 추가하거나 업데이트합니다.

지정된 인스턴스에 인스턴스별 구성이 아직 없다면 하나 이상의 IP 주소에 스테이트풀(Stateful) 구성으로 instanceGroupManagers.updatePerInstanceConfigs 메서드 또는 regionInstanceGroupManagers.updatePerInstanceConfigs 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/updatePerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        "externalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

지정된 인스턴스에 이미 인스턴스별 구성이 있는 경우 하나 이상의 IP 주소에 스테이트풀(Stateful) 구성으로 instanceGroupManagers.patchPerInstanceConfigs 메서드 또는 regionInstanceGroupManagers.patchPerInstanceConfigs 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        "externalIPs": {
          "NI_NAME" : {
            "ipAddress": {
              "address": "ADDRESS",
              "literal": "LITERAL"
            },
            "autoDelete": "DELETE_RULE"
          },
          ...
        },
        ...
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID입니다.
  • NAME: MIG 이름입니다.
  • REGION: 리전 MIG의 경우 그룹이 위치한 리전입니다. 영역 MIG의 경우 regions/REGIONzones/ZONE으로 바꾸고 MIG가 위치한 영역을 지정합니다.
  • INSTANCE_NAME: (필수) 스테이트풀(Stateful) IP를 구성할 인스턴스의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.
  • ADDRESS: (선택사항) 고정 IP 주소 예약의 URL 형식(예: "projects/example-project/regions/us-east1/addresses/example-ip-name")으로 인스턴스에 할당할 고정 IP 주소입니다. 고정 IP 주소를 할당할 때는 한 번에 하나의 필드(address 또는 literal)만 설정해야 합니다.
  • LITERAL: (선택사항) 리터럴 형식으로 인스턴스에 할당할 고정 IP 주소입니다. 예를 들면 "130.211.181.55"입니다. 고정 IP 주소를 할당할 때는 한 번에 하나의 필드(address 또는 literal)만 설정해야 합니다.
    • 제공된 리터럴 IP 주소가 아직 예약되지 않았으면 MIG가 자동으로 해당하는 IP 주소 예약을 생성합니다.
    • 제공된 리터럴 IP 주소가 예약되었으면 MIG가 인스턴스에 예약을 할당합니다.
  • DELETE_RULE: (선택사항) VM 인스턴스가 영구적으로 삭제될 때 연결된 정적 주소 리소스에 수행할 작업을 규정합니다. 사용 가능한 옵션은 다음과 같습니다.

    • NEVER: (기본값) 절대로 고정 IP 주소를 삭제하지 마세요. 인스턴스 삭제 시 주소를 할당 해제하고 주소를 예약된 상태로 유지하세요.
    • ON_PERMANENT_INSTANCE_DELETION: 인스턴스가 인스턴스 그룹에서 영구적으로 삭제될 때(예: 인스턴스를 수동으로 삭제하거나 그룹 크기를 줄이는 경우) 고정 IP 주소 예약을 삭제합니다.
    • 생략하면 새 스테이트풀(Stateful) IP 구성에 기본값이 설정됩니다. 값은 기존 구성에서 변경되지 않습니다.

    삭제 규칙의 값에 관계없이 인스턴스 자동 복구, 업데이트, 재생성 작업 시 그룹에서 항상 스테이트풀(Stateful) IP 주소를 보존합니다.

  • FINGERPRINT: (선택사항) 지정된 구성의 지문입니다(이미 있는 경우). 낙관적 잠금에 사용됩니다. 디지털 지문이 제공된 것과 다르다면 마지막으로 읽은 이후 인스턴스별 구성이 변경되었다는 의미이므로 작업이 실패합니다. 최신 지문을 보려면 리전 또는 영역 MIG에 대한 listPerInstanceConfigs 메서드 출력을 참조하세요. fingerprint를 생략하면 작업이 지문 비교 없이 진행됩니다.

updatePerInstanceConfigspatchPerInstanceConfigs 메서드는 지정된 인스턴스별 구성을 업데이트하지만 연결된 관리형 인스턴스에 구성 업데이트를 적용하지 않습니다. 변경 사항은 MIG에게 인스턴스를 다시 만들거나 업데이트하도록 지시할 때 인스턴스에 적용됩니다. 업데이트를 수동으로 적용하여 변경사항을 인스턴스에 적용할 수 있습니다.

예시

file-server라는 파일 서버 인스턴스가 있고 이 인스턴스는 fs-group이라는 스테이트풀(Stateful) MIG에서 단일 인스턴스입니다. 이 그룹은 스테이트풀(Stateful) 데이터 디스크가 구성된 해당 인스턴스별 구성을 포함합니다. 파일 서버는 내부적으로만 액세스 가능하지만 고정 IP 주소를 통해 외부에서 액세스해야 하는 사용자가 있습니다. file-server-ip 주소 예약을 만들어서 고정 외부 IP를 예약했습니다. 이제 이 IP를 파일 서버 인스턴스에 할당해야 합니다.

file-server의 인스턴스별 구성을 새 스테이트풀(Stateful) 외부 IP로 업데이트하려면 patchPerInstanceConfigs 메서드를 호출합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/fs-group/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "file-server",
      "preservedState" : {
        "externalIPs": {
          "nic0" : {
            "ipAddress": {
              "address": "projects/example-project/regions/us-east1/addresses/file-server-ip"
            },
            "autoDelete": "NEVER"
          }
        }
      }
    }
  ]
}

이 메서드는 file-server 인스턴스의 인스턴스별 구성을 패치합니다.

  1. file-server-ip 주소 예약을 가리키는 스테이트풀(Stateful) 외부 IP 구성을 추가합니다.
  2. 기존 스테이트풀(Stateful) 데이터 디스크 구성을 변경하지 않은 채 유지합니다.

구성 업데이트는 아직 file-server VM 인스턴스에 적용되지 않습니다. 업데이트를 다시 만들거나 나중에 인스턴스에 업데이트를 적용할 때 MIG에서 구성 업데이트를 적용합니다.

인스턴스별 구성 업데이트를 file-server VM 인스턴스에 적용하려면 인스턴스의 regionInstanceGroupManagers.applyUpdatesToInstances 메서드를 호출합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/gs-group/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-b/instances/file-server"]
}

이 메서드는 file-server-ip 예약의 구성된 고정 외부 IP 주소를 관리형 인스턴스에 할당합니다. 이 메서드는 file-server 인스턴스를 새로고침하여 외부 IP 주소를 할당합니다.

스테이트풀(Stateful) IP 구성에서 autoDeleteNEVER로 설정되므로 나중에 인스턴스를 삭제해도 IP가 예약된 상태로 유지됩니다.

MIG의 기존 VM에서 고정 IP 주소 연결 해제

VM의 네트워크 인터페이스를 임시 주소로 만들어 기존 VM에서 고정 IP 주소를 연결 해제해야 할 수 있습니다. 이 기능은 다음과 같은 상황에서 유용합니다.

  • 더 이상 고정 IP 주소를 사용하지 않도록 앱을 다시 구성하는 경우
  • IP를 실수로 스테이트풀(Stateful)로 구성해서 되돌리려는 경우

연결된 인스턴스별 구성에서 IP의 스테이트풀(Stateful) 구성을 삭제하거나 다른 상태가 포함되어 있지 않다면 전체 인스턴스별 구성을 삭제하여 MIG의 기존 VM에서 고정 IP 주소를 연결 해제하고 개별 VM의 IP 주소를 임시 주소로 만들 수 있습니다. 변경사항을 적용할 경우 미치는 영향은 다음과 같습니다.

  • IP 주소가 인스턴스에서 활성 상태로 유지되지만 더 이상 스테이트풀(Stateful)이 아닙니다.
  • 인스턴스를 다시 만들거나 업데이트하거나 인스턴스가 자동 복구되면 MIG는 연결된 고정 IP 주소 예약을 할당 해제하고 임시 주소를 자동 할당합니다.
  • 할당 해제된 후 고정 IP 주소는 예약된 상태로 유지됩니다.

인스턴스별 구성에서 스테이트풀(Stateful) IP 구성을 삭제해도 명시적으로 선택하지 않는 한 실행 중인 VM 인스턴스는 중단되지 않습니다.

자세한 내용은 다음 문서를 참조하세요.

gcloud

연결된 인스턴스별 구성에서 스테이트풀(Stateful) IP 구성을 삭제하려면gcloud compute instance-groups managed instance-configs update 명령어와 함께 --remove-stateful-internal-ips 또는 --remove-stateful-external-ips 플래그를 사용합니다.

gcloud compute instance-groups managed instance-configs update INSTANCE_GROUP_NAME \
    --instance INSTANCE_NAME \
    --remove-stateful-internal-ips NI_NAME[,NI_NAME,...] \
    --remove-stateful-external-ips NI_NAME[,NI_NAME,...]
    [--no-update-instance | --update-instance] \
    [--instance-update-minimal-action MINIMAL_ACTION]

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: MIG의 이름입니다.
  • INSTANCE_NAME: (필수) 스테이트풀(Stateful) IP 구성을 삭제할 인스턴스의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.
  • --update-instance: (선택사항, Default.) 변경사항을 즉시 인스턴스에 적용합니다. --no-update-instance 플래그를 사용하면 변경사항이 적용되지 않고 나중에 인스턴스를 다시 만들거나 인스턴스에 업데이트를 적용할 때 적용됩니다.
  • MINIMAL_ACTION: (선택사항) 인스턴스에 인스턴스별 구성 업데이트를 적용할 때 최소한 지정된 작업은 수행합니다. 이 플래그는 --update-instance 플래그가 있어야만 사용할 수 있습니다. 값은 다음 중 하나여야 합니다.

    • none: 적용할 작업이 없습니다.
    • refresh: 인스턴스를 중지하지 않고 적용할 수 있는 업데이트를 적용합니다.
    • restart: 인스턴스를 중지했다가 다시 시작합니다.
    • replace: 인스턴스를 다시 만듭니다.

    생략 시 업데이트에 필요한 중단이 가장 적은 작업이 사용됩니다.

예시

애플리케이션이 example-group이라는 MIG에 있는 VM 인스턴스의 게시된 특정 고정 외부 IP 주소를 통해 사용자에게 노출되었습니다. MIG 앞에 부하 분산기를 배포하고 이를 통해 트래픽을 관리형 VM으로 라우팅하여 서비스를 다시 설계했습니다. 고정 외부 IP 주소를 더 이상 유지할 필요가 없으며 VM의 외부 IP 주소를 임시 주소로 만들려고 합니다.

MIG에 있는 VM의 스테이트풀(Stateful) 외부 IP 주소를 임시 주소로 만들려면 각 인스턴스(예: node-1)에 다음 명령어를 실행합니다.

gcloud compute instance-groups managed instance-configs update example-group \
    --instance node-1 \
    --remove-stateful-external-ips nic0 \
    --update-instance

이 명령은 다음을 수행합니다.

  1. node-1의 인스턴스별 구성에서 nic0 네트워크 인터페이스의 외부 IP 주소에 대한 스테이트풀(Stateful) 구성을 삭제합니다.
  2. --update-instance 플래그가 포함되었기 때문에 node-1 VM 인스턴스에 즉시 인스턴스별 구성 업데이트를 적용합니다. VM 인스턴스가 중단되지 않고 더 이상 스테이트풀(Stateful)이 아닌 동일 IP가 계속 사용됩니다. MIG는 관리형 인스턴스의 preservedStateFromConfig에서 고정 IP 예약에 대한 참조를 삭제하고 외부 IP 주소를 임시 주소로 취급합니다. MIG에서 이후 인스턴스 재생성, 업데이트 또는 자동 복구 이벤트 시 외부 IP를 자동 할당합니다.
  3. 할당 해제된 후에도 원래의 고정 IP가 예약된 상태로 유지됩니다. IP가 더 이상 필요하지 않다면 해제하면 됩니다.

REST

연결된 인스턴스별 구성에서 스테이트풀(Stateful) IP 구성을 삭제하려면 instanceGroupManagers.patchPerInstanceConfigs 메서드 또는 regionInstanceGroupManagers.patchPerInstanceConfigs 메서드를 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "internalIPs": {
          "NI_NAME" : null
        },
        "externalIPs": {
          "NI_NAME" : null
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

다음을 바꿉니다.

  • PROJECT_ID: 요청의 프로젝트 ID입니다.
  • NAME: MIG 이름입니다.
  • REGION: 리전 MIG의 경우 그룹이 위치한 리전입니다. 영역 MIG의 경우 regions/REGIONzones/ZONE으로 바꾸고 MIG가 위치한 영역을 지정합니다.
  • INSTANCE_NAME: (필수) 스테이트풀(Stateful) IP 구성을 삭제할 인스턴스의 이름입니다.
  • NI_NAME: (필수) 네트워크 인터페이스 이름입니다. 기본 네트워크 인터페이스는 이름이 nic0입니다. 네트워크 인터페이스가 여러 개 있으면 NI_NAMES를 여러 개 지정할 수 있습니다.
  • FINGERPRINT: (선택사항) 지정된 구성의 지문입니다(이미 있는 경우). 낙관적 잠금에 사용됩니다. 디지털 지문이 제공된 것과 다르다면 마지막으로 읽은 이후 인스턴스별 구성이 변경되었다는 의미이므로 작업이 실패합니다. 최신 지문을 보려면 리전 또는 영역 MIG에 대한 listPerInstanceConfigs 메서드 출력을 참조하세요. fingerprint를 생략하면 작업이 지문 비교 없이 진행됩니다.

patchPerInstanceConfigs 메서드는 지정된 인스턴스별 구성을 업데이트하지만 연결된 관리형 인스턴스에 구성 업데이트를 적용하지 않습니다. 변경 사항은 MIG에게 인스턴스를 다시 만들거나 업데이트하도록 지시할 때 인스턴스에 적용됩니다. 업데이트를 수동으로 적용하여 변경사항을 인스턴스에 적용할 수 있습니다.

예시

애플리케이션이 example-group이라는 MIG에 있는 VM 인스턴스의 게시된 특정 고정 외부 IP 주소를 통해 사용자에게 노출되었습니다. MIG 앞에 부하 분산기를 배포하고 이를 통해 트래픽을 관리형 VM으로 라우팅하여 서비스를 다시 설계했습니다. 고정 외부 IP 주소를 더 이상 유지할 필요가 없으며 VM의 외부 IP 주소를 임시 주소로 만들려고 합니다.

MIG에 있는 VM의 스테이트풀(Stateful) 외부 IP 주소를 임시 주소로 만들려면 각 인스턴스(예: node-1)에 다음 메서드를 실행하고 네트워크 인터페이스의 스테이트풀(Stateful) 구성에 null 값을 제공합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "node-1",
      "preservedState" : {
        "externalIPs": {
          "nic0" : null
        }
      }
    }
  ]
}

이 메서드는 node-1의 인스턴스별 구성에서 nic0 네트워크 인터페이스의 스테이트풀(Stateful) IP 주소에 대한 구성을 삭제합니다. 구성 업데이트는 아직 node-1 VM 인스턴스에 적용되지 않습니다. 다음 인스턴스 재생성 또는 업데이트 시 MIG에서 구성 업데이트를 적용합니다.

인스턴스별 구성 업데이트를 node-1 VM 인스턴스에 적용하려면 인스턴스의 regionInstanceGroupManagers.applyUpdatesToInstances 메서드를 실행합니다.

POST https://compute.googleapis.com/compute/v1/projects/example-project/regions/us-east1/instanceGroupManagers/example-group/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-c/instances/node-1"]
}

MIG가 node-1 인스턴스의 preservedStateFromConfig 필드에서 고정 IP 예약에 대한 참조를 삭제하고 IP 주소를 임시 주소로 취급합니다. MIG에서 이후 인스턴스 재생성, 업데이트 또는 자동 복구 이벤트 시 외부 IP를 자동 할당합니다.

할당 해제된 후에도 원래의 고정 IP가 예약된 상태로 유지됩니다. IP가 더 이상 필요하지 않다면 해제하면 됩니다.

스테이트풀(Stateful) 구성 삭제

MIG의 모든 VM에 대한 스테이트풀(Stateful) 정책에서 구성을 삭제하려면 다음 문서를 참조하세요.

MIG의 특정 VM에 대해 인스턴스별 구성에서 구성을 삭제하려면 다음 문서를 참조하세요.

사용하지 않는 고정 IP 주소 삭제

그룹에 있는 관리형 인스턴스의 스테이트풀(Stateful) IP 주소를 구성할 때 인스턴스가 영구적으로 삭제되면 연결된 고정 IP 주소 예약을 수동 또는 자동으로 해제할지 선택할 수 있습니다.

  • 영구 인스턴스 삭제 시 고정 IP 주소 예약을 자동으로 해제하려면 autoDelete 매개변수를 ON_PERMANENT_INSTANCE_DELETION으로 설정합니다.
  • 고정 IP 주소 예약을 수동으로 해제하려면 autoDelete 매개변수를 NEVER으로 설정합니다. 예를 들어 불필요한 요금을 방지하기 위해 사용되지 않은 고정 IP 주소 예약을 삭제하려면 다음 문서를 참조하세요.

연결된 IP 예약을 삭제하지 않도록 MIG에 지시한 경우 해당 인스턴스 또는 MIG가 삭제된 후에도 고정 IP 주소가 예약된 상태로 유지됩니다.

의견

스테이트풀(Stateful) MIG에 대한 사용 사례, 문제 또는 의견을 알고 싶습니다. Google팀(mig-discuss@google.com)에 의견을 공유해 주세요.

다음 단계