이 튜토리얼에서는 H4D 머신 유형을 사용하는 관리형 인스턴스 그룹(MIG)을 만드는 방법을 보여줍니다. MIG는 동적 워크로드 스케줄러 flex-start 소비 모델을 사용하여 최대 7일 동안 컴퓨팅 리소스를 확보합니다.
MIG를 만들면 여러 가상 머신(VM)을 단일 항목으로 관리할 수 있습니다. MIG의 각 VM은 인스턴스 템플릿을 기반으로 합니다. 그룹의 VM을 자동으로 관리함으로써 MIG는 고가용성과 확장성을 제공합니다. MIG에 대해 자세히 알아보려면 관리형 인스턴스 그룹을 참조하세요.
HPC VM 및 HPC 클러스터 생성 옵션에 대해 알아보려면 HPC 클러스터 생성 개요를 참조하세요.
이 튜토리얼은 단기 워크로드를 위해 상호 연결된 HPC 인스턴스 그룹을 만드는 데 관심이 있는 HPC 엔지니어, 플랫폼 관리자 및 운영자, 데이터 및 MPI 전문가를 대상으로 합니다. 결과 인스턴스는 인스턴스 관리 또는 작업 예약에 조정자를 사용하지 않습니다.
선택사항: 선점형 할당량 요청
MIG에 추가된 VM 인스턴스는 리전 할당량을 사용합니다. VM 인스턴스, 인스턴스 그룹, CPU, 디스크 할당량을 영역에 관계없이 리전의 모든 VM 인스턴스에서 사용할 수 있습니다.
Flex-start를 사용할 때 할당량은 표준 할당량 또는 선점형 할당량일 수 있습니다.
- 표준 할당량: 프로젝트에 선점형 할당량이 없고 선점형 할당량을 요청한 적이 없는 경우 인스턴스 리소스는 표준 할당량을 사용합니다.
- 선점형 할당량: 선점형 할당량을 요청하면 임시 리소스에 별도의 할당량을 제공하여 할당량 가용성을 향상시킬 수 있습니다. 하지만 Compute Engine이 리전에 선점형 할당량을 부여하면 모든 관련 리소스에서 선점형 할당량만 사용합니다. 이 할당량이 소진된 경우 VM 리소스에 대한 추가 선점형 할당량을 요청해야 합니다.
할당량 조정 요청에 설명된 단계에 따라 선점 가능한 할당량을 요청할 수 있습니다.
필요한 할당량 유형
인스턴스 그룹을 사용하려면 그룹에서 사용하는 모든 리소스에 사용 가능한 할당량(예: CPU 할당량)과 그룹 리소스 자체에 사용 가능한 할당량을 확보해야 합니다. H4D 인스턴스의 경우 인스턴스에서 사용하는 머신 유형에 따라 다음 할당량 유형이 사용될 수 있습니다.
리소스 | 표준 할당량 | 선점형 할당량 |
---|---|---|
CPU | CPUS_PER_VM_FAMILY |
Preemptible CPUs |
로컬 SSD | Local SSD per machine family (GB) |
Preemptible Local SSDs (GB) |
이 튜토리얼에서 리소스를 만들려면 다음 추가 리전별 할당량이 필요할 수 있습니다.
- 영역(단일 영역) 관리형 인스턴스 그룹;
Instance group managers
및Instance groups
Google Cloud Hyperdisk:
Hyperdisk Balanced Capacity (GB)
Hyperdisk Balanced Throughput (MB/s)
Hyperdisk Balanced IOPS
선택사항: VPC 네트워크 만들기
명시적으로 사용 중지하지 않는 한, 각 프로젝트에는 인스턴스에 네트워크 연결을 제공하는 데 사용할 수 있는 기본 네트워크가 있습니다. VM을 만들 때는 VPC 네트워크 및 서브넷을 지정할 수 있습니다. 이 구성을 생략하면 기본 네트워크 및 서브넷이 사용됩니다.
H4D 인스턴스는 Cloud RDMA를 사용하도록 구성할 수 있습니다. Cloud RDMA는 Compute Engine 인스턴스 간의 원격 직접 메모리 액세스(RDMA)를 지원하는 IRDMA 네트워크 드라이버를 사용하여 지연 시간이 짧고 안정적인 메시지 기능을 지원합니다.
이 튜토리얼의 경우:
- Cloud RDMA를 사용하도록 H4D 인스턴스를 구성하려면 이 섹션의 단계를 완료합니다.
- Cloud RDMA를 사용하지 않으려면 이 섹션을 건너뛰고 대신 기본 네트워크를 사용하면 됩니다.
RDMA 지원 인스턴스에는 최소 2개의 네트워크 인터페이스(NIC)가 필요합니다.
- NIC 유형
GVNIC
: 일반 VM-VM 및 VM-인터넷 통신을 위해 TCP/IP 및 인터넷 트래픽에gve
드라이버를 사용합니다. - NIC 유형
IRDMA
: 인스턴스 간 Cloud RDMA 네트워킹에 IDPF/iRDMA 드라이버를 사용합니다.
Cloud RDMA를 사용하는 인스턴스는 IRDMA
인터페이스를 하나만 가질 수 있습니다. 인스턴스당 최대 8개의 GVNIC
네트워크 인터페이스를 추가하여 총 10개의 NIC를 사용할 수 있습니다.
인스턴스에서 사용할 Falcon VPC 네트워크를 설정하려면 문서화된 안내를 따르거나 제공된 스크립트를 사용하면 됩니다.
안내 가이드
네트워크를 만들려면 다음 안내를 수행하면 됩니다.
GVNIC
네트워크 인터페이스의 호스트 네트워크를 만들려면 VPC 네트워크 만들기 및 관리를 참조하세요.GVNIC
네트워크 인터페이스를 하나만 구성하는 경우 기본 VPC 네트워크와 인스턴스와 동일한 리전에 있는 자동 서브넷을 사용할 수 있습니다.IRDMA
네트워크 인터페이스용 네트워크를 만들려면 RDMA 네트워크 프로필로 VPC 네트워크 만들기를 참조하세요. RDMA 네트워크의 최대 전송 단위(MTU)의 기본값인8896
을 사용합니다.
스크립트
인스턴스당 최대 9개의 GVNIC
네트워크 인터페이스와 1개의 IRDMA
네트워크 인터페이스를 만들 수 있습니다. 각 네트워크 인터페이스는 별도의 네트워크에 연결되어야 합니다. 네트워크를 만들려면 다음 스크립트를 사용하면 됩니다. 이 스크립트는 GVNIC
용 네트워크 2개와 IRDMA
용 네트워크 1개를 만듭니다.
- 선택사항: 스크립트를 실행하기 전에 RDMA 네트워크 프로필을 나열하여 사용 가능한 프로필이 있는지 확인합니다.
gcloud beta compute network-profiles list
다음 코드를 복사하여 Linux 셸 창에서 실행합니다.
#!/bin/bash # Set the number of GVNIC interfaces to create. You can create up to 9. NUM_GVNIC=NUMBER_OF_GVNIC # Create standard VPC (networks and subnets) for the GVNIC interfaces for N in $(seq 0 $(($NUM_GVNIC - 1))); do gcloud compute networks create GVNIC_NAME_PREFIX-net-$N \ --subnet-mode=custom gcloud compute networks subnets create GVNIC_NAME_PREFIX-sub-$N \ --network=GVNIC_NAME_PREFIX-net-$N \ --region=REGION \ --range=10.$N.0.0/16 gcloud compute firewall-rules create GVNIC_NAME_PREFIX-internal-$N \ --network=GVNIC_NAME_PREFIX-net-$N \ --action=ALLOW \ --rules=tcp:0-65535,udp:0-65535,icmp \ --source-ranges=10.0.0.0/8 done # Create SSH firewall rules gcloud compute firewall-rules create GVNIC_NAME_PREFIX-ssh \ --network=GVNIC_NAME_PREFIX-net-0 \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=IP_RANGE # Optional: Create a firewall rule for the external IP address for the # first GVNIC network interface gcloud compute firewall-rules create GVNIC_NAME_PREFIX-allow-ping-net-0 \ --network=GVNIC_NAME_PREFIX-net-0 \ --action=ALLOW \ --rules=icmp \ --source-ranges=IP_RANGE # Create a network for the RDMA over Falcon network interface gcloud beta compute networks create RDMA_NAME_PREFIX-irdma \ --network-profile=ZONE-vpc-falcon \ --subnet-mode custom # Create a subnet for the RDMA network gcloud beta compute networks subnets create RDMA_NAME_PREFIX-irdma-sub \ --network=RDMA_NAME_PREFIX-irdma \ --region=REGION \ --range=10.2.0.0/16 # offset to avoid overlap with GVNIC subnet ranges
다음을 바꿉니다.
NUMBER_OF_GVNIC
: 만들 GVNIC 인터페이스 수입니다. 1~9 사이의 숫자를 지정합니다.GVNIC_NAME_PREFIX
: GVNIC NIC 유형을 사용하는 표준 VPC 네트워크 및 서브넷에 사용할 이름 프리픽스입니다.REGION
: 네트워크를 만들려는 리전입니다. 이 리전은 RDMA 네트워크를 만들 때--network-profile
플래그에 지정된 영역과 일치해야 합니다. 예를 들어 영역을europe-west4-b
로 지정하면 리전은europe-west4
입니다.IP_RANGE
: SSH 방화벽 규칙에 사용할 VPC 네트워크 외부의 IP 주소 범위입니다. 모든 IPv4 또는 IPv6 소스 대신 액세스를 허용해야 하는 특정 IP 주소 범위를 지정하는 것이 좋습니다.0.0.0.0/0
또는::/0
을 소스 범위로 사용하지 마세요. Google Cloud외부 소스를 포함한 모든 IPv4 또는 IPv6 소스의 트래픽이 허용되기 때문입니다.RDMA_NAME_PREFIX
: IRDMA NIC 유형을 사용하는 VPC 네트워크 및 서브넷에 사용할 이름 프리픽스입니다.ZONE
: 네트워크와 컴퓨팅 인스턴스를 만들 영역입니다.us-central1-a
또는europe-west4-b
를 사용합니다.
선택사항: VPC 네트워크 리소스가 성공적으로 생성되었는지 확인하려면 Google Cloud 콘솔에서 네트워크 설정을 확인합니다.
- Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
- 목록에서 이전 단계에서 만든 네트워크를 검색합니다.
- 서브넷, 방화벽 규칙, 기타 네트워크 설정을 보려면 네트워크 이름을 클릭합니다.
인스턴스 템플릿 만들기
Flex-start 소비 옵션을 사용하려면 빈 MIG를 만든 다음 MIG에 대한 크기 조절 요청을 만듭니다. 요청된 용량을 사용할 수 있게 되면 Compute Engine에서 이를 프로비저닝하고 MIG에 인스턴스를 만듭니다. 최대 7일 동안 리소스를 획득합니다.
MIG의 각 인스턴스에 대한 인스턴스 및 소비 속성을 지정하려면 다음 메서드 중 하나를 사용하여 인스턴스 템플릿을 만듭니다.
gcloud
리전 인스턴스 템플릿을 만들려면 gcloud beta compute instance-templates create
명령어를 사용합니다.
gcloud beta compute instance-templates create INSTANCE_TEMPLATE_NAME \ --machine-type=MACHINE_TYPE \ --image-family=IMAGE_FAMILY \ --image-project=IMAGE_PROJECT \ --instance-template-region=REGION \ --boot-disk-type=hyperdisk-balanced \ --boot-disk-size=DISK_SIZE \ --scopes=cloud-platform \ --network-interface=nic-type=GVNIC, \ network=GVNIC_NAME_PREFIX-net-0, \ subnet=GVNIC_NAME_PREFIX-sub-0, \ stack-type=STACK_TYPE, \ address=EXTERNAL_IPV4_ADDRESS \ --network-interface=nic-type=GVNIC, \ network=GVNIC_NAME_PREFIX-net-1, \ subnet=GVNIC_NAME_PREFIX-sub-1,no-address \ --network-interface=nic-type=IRDMA, \ network=RDMA_NAME_PREFIX-irdma, \ subnet=RDMA_NAME_PREFIX-irdma-sub, \ stack-type=IPV4_ONLY,no-address \ --reservation-affinity=none \ --instance-termination-action=DELETE \ --max-run-duration=RUN_DURATION \ --maintenance-policy=TERMINATE \ --provisioning-model=FLEX_START
다음을 바꿉니다.
INSTANCE_TEMPLATE_NAME
: 인스턴스 템플릿의 이름MACHINE_TYPE
: 인스턴스에 사용할 H4D 머신 유형입니다.IMAGE_FAMILY
: 사용할 OS 이미지의 이미지 계열로 바꿉니다. 지원되는 운영체제 목록은 지원되는 운영체제를 참조하세요.IMAGE_PROJECT
: OS 이미지의 프로젝트 ID로 바꿉니다.REGION
: 인스턴스 템플릿을 만들 리전입니다. 사용할 머신 유형이 제공되는 리전을 지정합니다.DISK_SIZE
: 부팅 디스크의 크기(GiB)입니다.GVNIC_NAME_PREFIX
: gVNIC 인터페이스용 표준 VPC 네트워크 및 서브넷을 만들 때 사용한 이름 프리픽스입니다.기본 네트워크를 사용하는 경우
nic-type
필드가GVNIC
로 설정된 단일--network-interface
필드만 포함합니다. 또한 이 네트워크 인터페이스의network
및subnetwork
설정을 생략합니다.STACK_TYPE
: (선택사항) gVNIC 인터페이스에 사용할 스택 유형입니다.IPV4_ONLY
또는IPV4_IPV6
를 지정합니다. 값을 지정하지 않으면 기본적으로IPV4_ONLY
가 사용됩니다.EXTERNAL_IPV4_ADDRESS
: (선택사항) gVNIC 네트워크 인터페이스에 사용할 고정 외부 IPv4 주소입니다. 이전에 외부 IPv4 주소를 예약했어야 합니다. 다음 중 하나를 수행합니다.- 서브넷에서 유효한 IPv4 주소를 지정합니다.
- 네트워크 인터페이스에 외부 IP 주소를 갖지 않도록 하려면
no-address
플래그를 사용하세요. - 네트워크 인터페이스에 임시 외부 IP 주소가 수신되도록 하려면
address=''
를 지정합니다.
GVNIC 네트워크 인터페이스의 외부 IPv6 주소를 지정하려면
--external-ipv6-address
플래그를 대신 사용합니다.RDMA_NAME_PREFIX
: IRDMA 네트워크 인터페이스의 VPC 네트워크 및 서브넷을 만들 때 사용한 이름 프리픽스입니다.H4D 인스턴스에서 Cloud RDMA를 사용하지 않는 경우 IRDMA 인터페이스의
--network-interface
필드를 생략합니다.RUN_DURATION
: 요청된 인스턴스를 실행할 기간. 각각d
,h
,m
,s
를 사용하여 일, 시, 분 또는 초 순서로 값 형식을 지정해야 합니다. 예를 들어 30분의 경우30m
을, 1일 2시간 3분 4초의 경우1d2h3m4s
를 지정합니다. 값은 10분~7일 사이여야 합니다.
REST
리전 인스턴스 템플릿을 만들려면 beta regionInstanceTemplates.insert
메서드에 POST
요청을 보냅니다.
POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceTemplates { "name":"INSTANCE_TEMPLATE_NAME", "properties":{ "disks":[ { "boot":true, "initializeParams":{ "diskSizeGb":"DISK_SIZE", "diskType":"hyperdisk-balanced", "sourceImage":"projects/IMAGE_PROJECT/global/images/family/IMAGE_FAMILY" }, "mode":"READ_WRITE", "type":"PERSISTENT" } ], "machineType":"MACHINE_TYPE", "networkInterfaces": [ { "network": "GVNIC_NAME_PREFIX-net-0", "subnetwork": "GVNIC_NAME_PREFIX-sub-0", "accessConfigs": [ { "type": "ONE_TO_ONE_NAT", "name": "External IP", "natIP": "EXTERNAL_IPV4_ADDRESS" } ], "stackType": "IPV4_ONLY", "nicType": "GVNIC", }, { "network": "GVNIC_NAME_PREFIX-net-1", "subnetwork": "GVNIC_NAME_PREFIX-sub-1", "stackType": "IPV4_ONLY", "nicType": "GVNIC", }, { "network": "RDMA_NAME_PREFIX-irdma", "subnetwork": "RDMA_NAME_PREFIX-irdma-sub", "stackType": "IPV4_ONLY", "nicType": "IRDMA", } ], , "reservationAffinity": { "consumeReservationType": "NO_RESERVATION" }, "scheduling": { "instanceTerminationAction": "DELETE", "maxRunDuration": { "seconds": RUN_DURATION }, "onHostMaintenance": "TERMINATE", "provisioningModel": "FLEX_START" } } }
다음을 바꿉니다.
INSTANCE_TEMPLATE_NAME
: 인스턴스 템플릿의 이름MACHINE_TYPE
: 인스턴스에 사용할 머신 유형입니다. H4D 머신 유형을 지정합니다. 자세한 내용은 H4D 머신 유형을 참조하세요.IMAGE_FAMILY
: 사용할 OS 이미지의 이미지 계열로 바꿉니다. 지원되는 운영체제 목록은 지원되는 운영체제를 참조하세요.IMAGE_PROJECT
: OS 이미지의 프로젝트 ID로 바꿉니다.REGION
: 인스턴스 템플릿을 만들 리전입니다. 사용할 머신 유형이 제공되는 리전을 지정합니다. 리전에 대한 자세한 내용은 리전 및 영역을 참조하세요.DISK_SIZE
: 부팅 디스크의 크기(GiB)입니다.GVNIC_NAME_PREFIX
: gVNIC 인터페이스용 표준 VPC 네트워크 및 서브넷을 만들 때 사용한 이름 프리픽스입니다.기본 네트워크를 사용하는 경우
nic-type
필드가GVNIC
로 설정된 단일--network-interface
필드만 포함합니다. 또한 이 네트워크 인터페이스의network
및subnetwork
설정을 생략합니다.EXTERNAL_IPV4_ADDRESS
: (선택사항) gVNIC 네트워크 인터페이스에 사용할 고정 외부 IPv4 주소입니다. 이전에 외부 IPv4 주소를 예약했어야 합니다.GVNIC 네트워크 인터페이스의 외부 IPv6 주소를 지정하려면
--external-ipv6-address
플래그를 대신 사용합니다.RDMA_NAME_PREFIX
: IRDMA 네트워크 인터페이스의 VPC 네트워크 및 서브넷을 만들 때 사용한 이름 프리픽스입니다.H4D 인스턴스에서 Cloud RDMA를 사용하지 않는 경우 IRDMA 인터페이스의
--network-interface
필드를 생략합니다.RUN_DURATION
: 요청된 인스턴스를 실행할 기간(초)입니다. 값은600
(600초(10분))~604800
(604,800초(7일)) 사이여야 합니다.
인스턴스 템플릿을 만든 후 템플릿을 확인하여 ID를 확인하고 인스턴스 속성을 검토할 수 있습니다.
크기 조절 요청이 있는 MIG 만들기
요청된 모든 Flex-start 인스턴스를 동시에 만들려면 MIG를 만든 후 이 섹션에 설명된 대로 MIG에서 크기 조절 요청을 만드세요.
MIG 만들기
MIG를 만들려면 다음 옵션 중 하나를 선택합니다.
gcloud
다음과 같이 영역 또는 리전 MIG를 만듭니다.
-
영역 MIG를 만들려면 다음과 같이
instance-groups managed create
명령어를 사용합니다.gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --default-action-on-vm-failure=do-nothing \ --zone=ZONE
-
리전 MIG를 만들려면 다음과 같이
instance-groups managed create
명령어를 사용합니다.gcloud compute instance-groups managed create MIG_NAME \ --template=INSTANCE_TEMPLATE_URL \ --size=0 \ --default-action-on-vm-failure=do-nothing \ --zones=ZONE \ --target-distribution-shape=any-single-zone \ --instance-redistribution-type=none
REST
다음과 같이 영역 또는 리전 MIG를 만듭니다.
- 영역 MIG를 만들려면 다음과 같이
instanceGroupManagers.insert
메서드에POST
요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "targetSize": 0, "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }
- 리전 MIG를 만들려면 다음과 같이
regionInstanceGroupManagers.insert
메서드에POST
요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "name": "MIG_NAME", "targetSize": 0, "distributionPolicy": { "targetShape": "ANY_SINGLE_ZONE", "zones": [ { "zone": "projects/PROJECT_ID/zones/ZONE" } ] }, "updatePolicy": { "instanceRedistributionType": "NONE" }, "instanceLifecyclePolicy": { "defaultActionOnFailure": "DO_NOTHING" } }
크기 조절 요청 만들기
MIG에서 크기 조절 요청을 만들려면 다음 옵션 중 하나를 선택합니다.
gcloud
다음과 같이 크기 조절 요청을 만듭니다.
-
영역 MIG에서 크기 조절 요청을 만들려면 다음과 같이
instance-groups managed resize-requests create
명령어를 사용합니다.gcloud compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --zone=ZONE
- 리전 MIG에서 크기 조절 요청을 만들려면 다음과 같이 베타
instance-groups managed resize-requests create
명령어를 사용합니다.gcloud beta compute instance-groups managed resize-requests create MIG_NAME \ --resize-request=RESIZE_REQUEST_NAME \ POPULATION_METHOD \ --region=REGION
REST
다음과 같이 영역 또는 리전 MIG에서 크기 조절 요청을 만듭니다.
- 영역 MIG에서 크기 조절 요청을 만들려면 다음과 같이
instanceGroupManagerResizeRequests.insert
메서드에 대해POST
요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }
- 리전 MIG에서 크기 조절 요청을 만들려면 다음과 같이
beta.regionInstanceGroupManagerResizeRequests.insert
메서드에 대해POST
요청을 수행합니다.POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/MIG_NAME/resizeRequests { "name": "RESIZE_REQUEST_NAME", POPULATION_METHOD }