비관리형 인스턴스 그룹 만들기

비관리형 인스턴스 그룹은 단일 영역, VPC 네트워크, 서브넷에 상주하는 가상 머신(VM)의 모음입니다. 비관리형 인스턴스 그룹은 개별 구성 설정 또는 조정이 필요한 VM을 그룹화하는 데 유용합니다.

일관된 구성 설정이 필요한 VM의 경우 인스턴스 템플릿관리형 인스턴스 그룹(MIG)을 사용할 수 있습니다. 가능하면 비관리형 인스턴스 그룹 대신 관리형 인스턴스 그룹을 사용하는 것이 좋습니다. 관리형 인스턴스 그룹을 만들려면 관리형 인스턴스 그룹 만들기를 참조하세요.

두 인스턴스 그룹 유형 중 하나를 Google Cloud 부하 분산기에 백엔드로 추가할 수 있습니다. 자세한 내용은 Cloud Load Balancing 개요를 참조하세요. Google Cloud에서 지원하는 인스턴스 그룹당 VM 수는 인스턴스 그룹당 VM 수를 참조하세요.

인스턴스 그룹에 대한 자세한 내용은 인스턴스 그룹 개요를 참조하세요.

시작하기 전에

비관리형 인스턴스 그룹 작업

그룹 만들기

비관리형 인스턴스 그룹은 관리형 인스턴스 그룹과 달리 공통의 인스턴스 템플릿을 공유하지 않는 고유한 VM을 모아둔 것에 불과합니다. 그룹을 만들고 개별 VM을 그룹에 추가하면 됩니다.

Console

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

    인스턴스 그룹 페이지로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다.
  3. 새 비관리형 인스턴스 그룹을 클릭합니다.
  4. 비관리형 인스턴스 그룹 이름을 입력합니다.
  5. 위치에서 리전과 영역을 선택합니다.
  6. 네트워크서브네트워크를 선택합니다.
  7. VM 인스턴스에서 이 그룹에 추가할 VM을 선택합니다.
  8. 만들기를 클릭합니다.

gcloud

새로운 비관리형 인스턴스 그룹을 만들려면 instance-group unmanaged create 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged create instance-group-name \
        --zone=zone
    

다음을 바꿉니다.

  • instance-group-name: 만들려는 그룹의 이름입니다.
  • zone: 그룹을 만들려는 영역입니다.

API

API로 비관리형 인스턴스 그룹을 만들려면 instanceGroups.insert 메서드를 사용하여 POST 요청을 보냅니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups

    {
       "name": "instance-group-name"
    }
    

다음을 바꿉니다.

  • instance-group-name: 만들려는 그룹의 이름입니다.
  • zone: 그룹을 만들려는 영역입니다.
  • project-id: 그룹이 포함된 프로젝트의 ID입니다.

gcloud 명령줄 도구나 API를 사용하여 새로운 비관리형 인스턴스 그룹을 만들 때 VM이 그룹에 자동으로 추가되지 않습니다. 수동으로 VM을 비관리형 인스턴스 그룹에 추가할 수 있습니다.

그룹 나열 및 설명

기존 비관리형 인스턴스 그룹의 목록을 가져옵니다.

Console

Cloud Console의 인스턴스 그룹 페이지에는 기존의 비관리형 인스턴스 그룹과 관리형 인스턴스 그룹이 나열됩니다.

인스턴스 그룹 페이지로 이동

gcloud

gcloud 명령줄 도구를 사용하여 프로젝트의 모든 비관리형 인스턴스 그룹을 나열하려면 instance-groups unmanaged list를 사용합니다.

    gcloud compute instance-groups unmanaged list
    

특정 비관리형 인스턴스 그룹에 대한 정보를 확인하려면 instance-group unmanaged describe 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged describe instance-group-name \
       --zone=zone
    

다음을 바꿉니다.

  • instance-group-name: 설명할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.

API

API를 사용하여 인스턴스 그룹을 나열하려면 instanceGroups.list 메서드를 사용하여 GET 요청을 보냅니다.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups
    

API를 사용하여 특정 비관리형 인스턴스 그룹에 대한 정보를 가져오려면 instanceGroups.get 메서드를 사용하여 GET 요청을 보냅니다.

    GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name
    

다음을 바꿉니다.

  • instance-group-name: 설명할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • project-id: 그룹이 포함된 프로젝트의 ID입니다.

그룹 삭제

관리형 인스턴스 그룹과 달리 비관리형 인스턴스 그룹은 삭제해도 그룹 내 VM은 삭제되지 않습니다. 비관리형 인스턴스 그룹을 삭제하면 VM의 논리 그룹만 삭제됩니다.

Google Cloud 부하 분산기의 백엔드인 인스턴스 그룹을 삭제할 수 없습니다. 먼저 백엔드 서비스에서 백엔드를 삭제해야 합니다.

Console

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

    인스턴스 그룹 페이지로 이동

  2. 목록에서 비관리형 인스턴스 그룹을 1개 이상 선택합니다.
  3. 삭제를 클릭하여 그룹을 삭제합니다. 그룹은 삭제되지만 그룹 내 VM은 삭제되지 않습니다.

gcloud

비관리형 인스턴스 그룹을 삭제하려면 instance-groups unmanaged delete 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged delete instance-group-name \
        --zone=zone
    

다음을 바꿉니다.

  • instance-group-name: 삭제할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.

API

API를 사용하여 비관리형 인스턴스 그룹을 삭제하려면 instanceGroups.delete 메서드를 사용하여 DELETE 요청을 보냅니다.

    DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name
    

다음을 바꿉니다.

  • instance-group-name: 삭제할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • project-id: 그룹이 포함된 프로젝트의 ID입니다.

그룹 구성원

VM 추가

비관리형 인스턴스 그룹을 만든 후에는 VM을 그룹에 추가할 수 있습니다.

Console

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

    인스턴스 그룹 페이지로 이동

  2. 목록의 이름 열에서 VM을 추가할 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성과 이미 그룹에 속해 있는 VM의 목록이 나와 있는 페이지가 열립니다.
  3. 그룹 수정을 클릭하여 이 비관리형 인스턴스 그룹을 수정합니다.
  4. VM 인스턴스에서 그룹에 추가할 기존 VM을 1개 이상 선택합니다. 기존 VM과 동일한 영역, VPC 네트워크, 서브넷에 있는 VM만 선택할 수 있습니다.
  5. 저장을 클릭하여 새 VM을 그룹에 추가합니다.

gcloud

인스턴스를 비관리형 인스턴스 그룹에 추가하려면 instance-groups unmanaged add-instances 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged add-instances instance-group-name \
        --zone=zone \
        --instances=list-of-VM-names
    

다음을 바꿉니다.

  • instance-group-name: VM을 추가할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • list-of-VM-names: 동일한 영역, VPC 네트워크, 서브넷에 있는 VM의 쉼표로 구분된 목록입니다.

API

API를 사용하여 VM을 비관리형 인스턴스 그룹에 추가하려면 instanceGroups.addInstances 메서드를 사용하여 POST 요청을 보냅니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/addInstances

       {
          "instances": [
             {
             "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
             "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
             ....
             }
          ]
       }
    

다음을 바꿉니다.

  • instance-group-name: VM을 추가할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • project-id: 그룹이 포함된 프로젝트의 ID입니다.
  • instance-1-nameinstance-2-name: 그룹에 추가하려는 동일한 영역, VPC 네트워크, 서브넷에 있는 VM의 이름입니다.

VM 나열

비관리형 인스턴스 그룹에서 구성원 VM 목록을 검색할 수 있습니다.

Console

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

    인스턴스 그룹 페이지로 이동

  2. 목록의 이름 열에서 보려는 비관리형 인스턴스 그룹의 이름을 클릭합니다. 그룹에 포함된 인스턴스의 목록이 있는 페이지가 나타납니다.

gcloud

비관리형 인스턴스 그룹의 VM을 나열하려면 instance-group unmanaged list-instances 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged list-instances instance-group-name \
       --zone=zone
    

다음을 바꿉니다.

  • instance-group-name: 구성원을 나열할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.

API

API를 사용하여 비관리형 인스턴스 그룹의 VM을 나열하려면 instanceGroups.listInstances 메서드를 사용하여 POST 요청을 보냅니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/listInstances
    

다음을 바꿉니다.

  • instance-group-name: 구성원을 나열할 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • project-id: 그룹이 포함된 프로젝트의 ID입니다.

VM 삭제

비관리형 인스턴스 그룹에서 VM을 삭제할 수 있습니다. 인스턴스 그룹에서 VM을 삭제해도 VM 자체는 삭제되지 않습니다.

Console

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

    인스턴스 그룹 페이지로 이동

  2. 목록의 이름 열에서 VM을 삭제할 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성과 그룹에 포함된 VM의 목록이 나와 있는 페이지가 열립니다.
  3. 그룹에서 삭제할 VM을 목록에서 1개 이상 선택합니다.
  4. 그룹에서 삭제를 클릭합니다. 비관리형 인스턴스 그룹에서 삭제한 VM은 중지 또는 삭제되지 않는 한 계속 존재하며 실행됩니다.

gcloud

비관리형 인스턴스 그룹에서 VM을 삭제하려면 instance-groups unmanaged remove-instances 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged remove-instances instance-group-name \
        --zone=zone \
        --instances=list-of-VM-names
    

다음을 바꿉니다.

  • instance-group-name: 제거할 인스턴스가 포함된 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • list-of-VM-names: 그룹에서 삭제할 VM의 쉼표로 구분된 목록입니다.

API

API를 사용하여 비관리형 인스턴스 그룹에서 VM을 삭제하려면 instanceGroups.removeInstances 메서드를 사용하여 POST 요청을 보냅니다. 다음과 같이 VM 여러 개를 동시에 삭제할 수 있습니다.

    POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/removeInstances
    {
        "instances": [
            {
            "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-1-name",
            "instance": "https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-2-name",
            ....
            }
        ]
    }
    

다음을 바꿉니다.

  • instance-group-name: 제거할 인스턴스가 포함된 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • project-id: 그룹이 포함된 프로젝트의 ID입니다.
  • instance-1-nameinstance-2-name: 그룹에서 연결을 해제하려는 VM의 이름입니다.

이름이 지정된 포트 작업

이름이 지정된 포트는 포트 이름과 포트 번호를 나타내는 키-값 쌍입니다. Google Cloud 부하 분산기와 함께 사용됩니다. 프록시 역할을 수행하는 부하 분산기는 백엔드 서비스 구성에서 이름이 지정된 단일 포트를 구독합니다. 포트 이름은 각 인스턴스 그룹 백엔드의 이름이 지정된 포트 매핑에 따라 포트 번호로 변환됩니다.

예를 들어 백엔드 서비스가 http-port라는 포트를 구독할 수 있습니다. 백엔드 인스턴스 그룹에는 http-port:80이라는 포트가 있을 수 있습니다. 백엔드 인스턴스 그룹은 프로토콜(예: TCP)을 사용하여 포트 80에서 그룹의 VM으로 트래픽을 보내도록 부하 분산기에 지시합니다. 프로토콜은 부하 분산기의 백엔드 서비스에서 정의됩니다.

인스턴스 그룹 하나에 이름이 지정된 포트를 여러 개 정의할 수 있습니다. 하지만 부하 분산기의 백엔드 서비스는 이름이 지정된 포트 하나만 구독합니다. 동일한 백엔드 서비스의 백엔드 인스턴스 그룹이 서로 다른 이름이 지정된 포트 매핑을 사용할 수 있습니다. 예를 들어 이름이 지정된 포트 http-port를 구독하고 백엔드 인스턴스 그룹이 2개 있는 예시 백엔드 서비스를 살펴보겠습니다.

  • 이름이 지정된 포트가 http-port:80instance-group-a
  • 이름이 지정된 포트가 http-port:79instance-group-b

이 백엔드 서비스는 instance-group-a에서 VM의 트래픽을 포트 80으로 보내고, instance-group-b에서 VM의 트래픽을 포트 79로 보냅니다.

Console

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

    인스턴스 그룹 페이지로 이동

  2. 목록의 이름 열에서 이름이 지정된 포트를 지정할 인스턴스 그룹의 이름을 클릭합니다. 인스턴스 그룹 속성이 나와 있는 페이지가 열립니다.
  3. 그룹 수정을 클릭하여 이 비관리형 인스턴스 그룹을 수정합니다.
  4. 포트 이름 매핑(선택사항) 섹션에서 항목 추가를 클릭하고 포트 이름과 포트 번호를 입력합니다. 필요에 따라 이름이 지정된 다른 포트를 추가 또는 삭제합니다.
  5. 저장을 클릭하여 비관리형 인스턴스 그룹의 이름이 지정된 포트 목록을 업데이트합니다.

gcloud

비관리형 인스턴스 그룹에 이름이 지정된 포트를 추가하려면 instance-groups unmanaged set-named-ports 명령어를 사용합니다.

    gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
        --zone=zone \
        --named-ports=port-name:port-number,...
    

비관리형 인스턴스 그룹의 이름이 지정된 포트를 나열하려면 instance-group unmanaged get-named-ports를 사용합니다.

    gcloud compute instance-groups unmanaged get-named-ports instance-group-name \
        --zone=zone
    

gcloud 명령줄 도구를 사용하여 비관리형 인스턴스 그룹에서 이름이 지정된 모든 포트를 삭제하려면 비어 있는 이름이 지정된 포트 목록과 함께 nstance-groups unmanaged set-named-ports를 사용합니다.

    gcloud compute instance-groups unmanaged set-named-ports instance-group-name \
        --zone=zone \
        --named-ports=""
    

위의 모든 예시에서 다음을 바꿉니다(있는 경우).

  • instance-group-name: 인스턴스 그룹의 이름입니다.
  • zone: 그룹의 영역입니다.
  • port-nameport-number: 포트 이름과 번호는 선택한 이름과 포트 번호 간의 매핑을 나타냅니다. 여러 매핑을 쉼표로 구분하여 지정할 수 있습니다. 예를 들어 port-one:80,port-two:8080은 이름이 지정된 포트의 유효한 목록입니다.

API

  1. 인스턴스 그룹을 설명하고 지문을 기록합니다.

  2. API를 사용하여 이름이 지정된 포트를 추가하려면 instanceGroups.setNamedPorts 메서드를 사용하여 POST 요청을 보냅니다. 이름이 지정된 모든 포트를 삭제하려면 namedPorts를 비어 있는 목록으로 설정합니다.

        POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroups/instance-group-name/setNamedPorts
    
        {
            "fingerprint": "fingerprint",
            "namedPorts": [
                {
                "name": "port-name",
                "port": port-number
                },
                {
                "name": "port-name",
                "port": port-number
                },
                ....
            ]
        }
        

    다음을 바꿉니다.

    • instance-group-name: 인스턴스 그룹의 이름입니다.
    • zone: 그룹의 영역입니다.
    • project-id: 그룹이 포함된 프로젝트의 ID입니다.
    • port-nameport-number: 포트 이름과 번호는 선택한 이름과 포트 번호 간의 매핑을 나타냅니다.
    • fingerprint: 이전 단계의 지문입니다.
  3. 다시 인스턴스 그룹을 설명하고 구성된 이름이 지정된 포트를 기록합니다.

다음 단계