이 튜토리얼에서는 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 }