기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
ODCR(온디맨드 용량 예약)로 인스턴스 시작
온디맨드 용량 예약(ODCR)에서는 특정 가용 영역의 클러스터 Amazon EC2 인스턴스에 예약 용량을 제공합니다. 따라서 절감형 플랜
open
또는 targeted
ODCR을 구성할 수 있습니다. 개방형 ODCR은 ODCR 특성과 일치하는 모든 인스턴스를 포함합니다. 이러한 속성은 인스턴스 유형, 플랫폼 및 가용 영역입니다. 클러스터 구성에서 대상 ODCR을 명시적으로 정의해야 합니다. ODCR이 open
또는 targeted
인지 확인하려면 AWS CLI
Amazon EC2 describe-capacity-reservation
명령을 실행합니다.
클러스터 배치 그룹 온디맨드 용량 예약(CPG ODCR)이라고 하는 클러스터 배치 그룹에서 ODCR을 생성할 수도 있습니다.
여러 ODCR을 리소스 그룹으로 그룹화할 수 있습니다. 이는 클러스터 구성 파일에서 정의할 수 있습니다. 리소스 그룹에 대한 자세한 내용은 리소스 그룹 및 태그 사용 설명서의 리소스 그룹이란 무엇입니까?를 참조하세요.
에서 ODCR 사용 AWS ParallelCluster
AWS ParallelCluster 는 열린 ODCR을 지원합니다. 개방형 ODCR을 사용하는 경우 AWS ParallelCluster에서 아무 것도 지정할 필요가 없습니다. 클러스터의 인스턴스는 자동으로 선택됩니다. 기존 배치 그룹을 지정하거나 새 배치 그룹을 AWS ParallelCluster 생성할 수 있습니다.
클러스터 구성의 ODCR
AWS ParallelCluster 버전 3.3.0부터는 Amazon EC2 실행 인스턴스 재정의를 지정할 필요 없이 클러스터 구성 파일에서 ODCRs을 정의할 수 있습니다.
먼저 링크된 각 문서에 설명된 방법을 사용하여 용량 예약 및 리소스 그룹을 생성합니다. AWS CLI 메서드를 사용하여 용량 예약 그룹을 생성해야 합니다. 를 사용하는 경우 태그 기반 또는 스택 기반 리소스 그룹만 생성할 AWS Management Console수 있습니다. 용량 예약으로 인스턴스를 시작할 AWS CLI 때 태그 기반 및 스택 기반 리소스 그룹은 AWS ParallelCluster 또는에서 지원되지 않습니다.
용량 예약과 리소스 그룹을 생성한 후에는 다음 예제 클러스터 구성에 나온 것과 같이 SlurmQueues/CapacityReservationTarget 또는 SlurmQueues/ComputeResources/CapacityReservationTarget에 지정합니다. 빨간색으로 강조 표시된 값을
유효한 값으로 바꿉니다.
Image: Os:
os
HeadNode: InstanceType:head_node_instance
Networking: SubnetId:public_subnet_id
Ssh: KeyName:key_name
Scheduling: Scheduler:scheduler
SlurmQueues: - Name: queue1 Networking: SubnetIds: -private_subnet_id
ComputeResources: - Name: cr1 Instances: - InstanceType:instance
MaxCount:max_queue_size
MinCount:max_queue_size
Efa: Enabled: true CapacityReservationTarget: CapacityReservationResourceGroupArn:capacity_reservation_arn
주의
-
AWS ParallelCluster 버전 3.3.0부터는이 방법을 사용하지 않는 것이 좋습니다. 이 섹션은 이전 버전을 사용한 구현을 위한 참고 자료로 남아 있습니다.
-
이 방법는 Slurm을 사용한 다중 인스턴스 유형 할당과 호환되지 않습니다.
targeted
ODCRs에 대한 지원이 AWS ParallelCluster 3.1.1에 추가되었습니다. 이번 릴리스에는 EC2 RunInstances
파라미터를 재정의하고 AWS ParallelCluster에서 구성된 각 컴퓨팅 리소스에 사용할 예약에 대한 정보를 전달하는 메커니즘이 도입되었습니다. 이 메커니즘은 targeted
ODCR과 호환됩니다. 하지만 targeted
ODCR을 사용할 때는 run-instances
재정의 구성을 지정해야 합니다. 대상 ODCR은 AWS CLI Amazon EC2 run-instances
명령에 명시적으로 정의해야 합니다. ODCR이 인지 여부를 확인하거나 AWS CLI Amazon EC2 명령를 open
targeted
실행합니다describe-capacity-reservation
.
여러 ODCR을 리소스 그룹으로 그룹화할 수 있습니다. 이는 실행 인스턴스 재정의에서 동시에 여러 ODCR을 대상으로 하는 데 사용할 수 있습니다.
targeted
ODCR을 사용하는 경우 배치 그룹을 지정할 수 있습니다. 하지만 run-instances
재정의 구성도 지정해야 합니다.
에서 targeted
ODCR을 AWS 생성했거나 특정 예약 인스턴스 세트가 있다고 가정해 보겠습니다. 그러면 배치 그룹을 지정할 수 없습니다. 에서 구성된 규칙이 배치 그룹 설정과 충돌할 AWS 수 있습니다. 따라서 애플리케이션에 배치 그룹이 필요한 경우 CPG ODCR을 사용하세요. 두 경우 모두 run-instances
재정의 구성도 지정해야 합니다.
CPG ODCR을 사용하는 경우, run-instances
재정의 구성을 지정하고 클러스터 구성에서 동일한 배치 그룹을 지정해야 합니다.
에서 예약 인스턴스 사용 AWS ParallelCluster
예약 인스턴스는 용량 예약 (ODCR)과 다릅니다. 예약 인스턴스에는 2가지 유형이 있습니다. 리전 예약 인스턴스에서는 용량을 예약하지 않습니다. 영역 예약 인스턴스에서는 지정된 가용 영역에서 용량을 예약합니다.
리전 예약 인스턴스를 사용하는 경우 용량 예약이 없으므로 용량 부족 오류가 발생할 수 있습니다. 영역 예약 인스턴스를 사용하는 경우 용량을 예약한 것이지만 용량을 지정하는 데 사용할 수 있는 run-instances
API 파라미터가 없습니다.
예약 인스턴스는 모든 AWS ParallelCluster 버전에서 지원됩니다. 에서 아무것도 지정할 필요가 AWS ParallelCluster 없으며 인스턴스가 자동으로 선택됩니다.
영역 예약 인스턴스를 사용하는 경우 클러스터 구성에서 배치 그룹 사양을 생략하여 잠재적인 용량 부족 오류를 방지할 수 있습니다.
주의
-
AWS ParallelCluster 버전 3.3.0부터는이 방법을 사용하지 않는 것이 좋습니다. 이 섹션은 이전 버전을 사용한 구현을 위한 참고 자료로 남아 있습니다.
-
이 방법는 Slurm을 사용한 다중 인스턴스 유형 할당과 호환되지 않습니다.
클러스터 대기열에 구성된 각 컴퓨팅 리소스의 Amazon EC2 RunInstances
파라미터를 재정의할 수 있습니다. 이렇게 하려면 클러스터의 헤드 노드에 다음 코드 스니펫 콘텐츠로 /opt/slurm/etc/pcluster/run_instances_overrides.json
파일을 생성하세요.
-
${queue_name}
은 재정의를 적용할 대기열의 이름입니다. -
${compute_resource_name}
은 재정의를 적용할 컴퓨팅 리소스입니다. -
${overrides}
는 대기열과 인스턴스 유형의 특정 조합에 사용할RunInstances
재정의 목록이 포함된 임의의 JSON 객체입니다. 재정의 구문은 run_instancesboto3 호출에 설명된 것과 동일한 사양을 따라야 합니다.
{ "${queue_name}": { "${compute_resource_name}": { ${overrides} }, ... }, ... }
예를 들어, 다음 JSON은 my-queue
및 my-compute-resource
에서 구성된 p4d.24xlarge
인스턴스에 사용할 ODCR 그룹 group_arn
을 구성합니다.
{
"my-queue"
: {"my-compute-resource"
: { "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn":"group_arn"
} } } } }
이 JSON 파일이 생성되면 클러스터 조정을 담당하는 AWS ParallelCluster 데몬은 인스턴스 시작에 재정의를 자동으로 사용합니다. 지정된 파라미터가 인스턴스 프로비저닝에 사용되고 있는지 확인하려면 다음 로그 파일을 살펴보세요.
-
/var/log/parallelcluster/clustermgtd
(고정 용량용) -
/var/log/parallelcluster/slurm_resume.log
(동적 용량용)
파라미터가 정확하면 다음을 포함하는 로그 항목을 찾을 수 있습니다.
Found RunInstances parameters override. Launching instances with: <parameters_list>
주의
-
AWS ParallelCluster 버전 3.3.0부터는이 방법을 사용하지 않는 것이 좋습니다. 이 섹션은 이전 버전을 사용한 구현을 위한 참고 자료로 남아 있습니다.
-
이 방법은 Slurm을 사용하여 여러 인스턴스 유형 할당과 호환되지 않습니다.
-
그룹 용량까지 리소스 그룹을 생성합니다.
$
aws resource-groups create-group --name
EC2CRGroup
\ --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'참고
리소스 그룹은 다른 계정과 공유하는 리소스를 지원하지 않습니다.
대상 ODCR을 다른 계정과 공유하는 경우에는 리소스 그룹을 만들 필요가 없습니다. 3단계의 리소스 그룹 대신
CapacityReservationId
를 사용합니다.#!/bin/bash set -e # Override run_instance attributes cat > /opt/slurm/etc/pcluster/run_instances_overrides.json << EOF { "my-queue": { "my-compute-resource": { "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationId": "cr-abcdef01234567890" } } } } } EOF
리소스 그룹에 용량 예약을 추가합니다. 새 ODCR을 생성할 때마다 그룹 예약에 추가합니다.
를 계정 ID로,ACCOUNT_ID
를 용량 예약 ID로,를 AWS 리전 ID(예: us-east-1)PLACEHOLDER_CAPACITY_RESERVATION
로 바꿉니다.REGION_ID
$
aws resource-groups group-resources --region
REGION_ID
--groupEC2CRGroup
\ --resource-arns arn:aws:ec2:REGION_ID
:ACCOUNT_ID
:capacity-reservation/PLACEHOLDER_CAPACITY_RESERVATION
로컬 컴퓨터에서 정책 문서를 생성합니다.
를 계정 ID로 바꾸고를 AWS 리전 IDACCOUNT_ID
로 바꿉니다(예: us-east-1).REGION_ID
cat > policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "RunInstancesInCapacityReservation", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:
REGION_ID
:ACCOUNT_ID
:capacity-reservation/*", "arn:aws:resource-groups:REGION_ID
:ACCOUNT_ID
:group/*" ] } ] } EOF -
생성한 json 파일을 AWS 계정 사용하여에서 IAM 정책을 생성합니다.
$
aws iam create-policy --policy-name
RunInstancesCapacityReservation
--policy-document file://policy.json -
다음 설치 후 스크립트를 인스턴스에 로컬로 생성하고 이름을
postinstall.sh
로 지정합니다.
를 AWS 계정 ID로,를 AWS 리전 IDACCOUNT_ID
로 바꿉니다(예: us-east-1).REGION_ID
#!/bin/bash set -e # Override run_instance attributes cat > /opt/slurm/etc/pcluster/run_instances_overrides.json << EOF { "my-queue": { "my-compute-resource": { "CapacityReservationSpecification": { "CapacityReservationTarget": { "CapacityReservationResourceGroupArn": "arn:aws:resource-groups:
REGION_ID
:ACCOUNT_ID
:group/EC2CRGroup
" } } } } } EOFAmazon S3 버킷에 이미지 파일을 업로드합니다.
amzn-s3-demo-bucket
을 특정 S3 버킷 이름으로 바꿉니다.$
aws s3 mb s3://
amzn-s3-demo-bucket
aws s3 cp postinstall.sh s3://amzn-s3-demo-bucket
/postinstall.sh -
자리 표시자를 자체 값으로 대체하여 로컬 클러스터 구성을 생성합니다.
Region:
REGION_ID
Image: Os: alinux2 HeadNode: InstanceType: c5.2xlarge Ssh: KeyName:YOUR_SSH_KEY
Iam: S3Access: - BucketName:amzn-s3-demo-bucket
AdditionalIamPolicies: - Policy: arn:aws:iam::ACCOUNT_ID
:policy/RunInstancesCapacityReservation ## This post-install script is executed after the node is configured. ## It is used to install scripts at boot time and specific configurations ## In the script below we are overriding the calls to RunInstance to force ## the provisioning of our my-queue partition to go through ## the On-Demand Capacity Reservation CustomActions: OnNodeConfigured: Script: s3://amzn-s3-demo-bucket
/postinstall.sh Networking: SubnetId:YOUR_PUBLIC_SUBNET_IN_TARGET_AZ
Scheduling: Scheduler: slurm SlurmQueues: - Name: my-queue ComputeResources: - MinCount: 0 MaxCount: 100 InstanceType: p4d.24xlarge Name:my-compute-resource
Efa: Enabled: true Networking: ## PlacementGroup: ## Enabled: true ## Keep PG disabled if using targeted ODCR SubnetIds: -YOUR_PRIVATE_SUBNET_IN_TARGET_AZ
-
클러스터를 생성합니다.
다음 명령을 사용하여 클러스터를 생성합니다. 구성 파일 이름을
으로 바꾸고, 클러스터 이름을cluster-config.yaml
로 바꾸고cluster-dl
REGION_ID
를 사용자의 리전 ID(예: us-east-1)로 바꾸세요.$
pcluster create-cluster --cluster-configuration
cluster-config.yaml
--cluster-namecluster-dl
--regionREGION_ID
클러스터가 생성되면 헤드 노드에서 설치 후 스크립트가 실행됩니다. 스크립트는
run_instances_overrides.json
파일을 생성하고RunInstances
에 대한 호출을 재정의하여 온디맨드 용량 예약을 통해 파티션 프로비저닝을 강제로 진행합니다.클러스터 조정을 담당하는 AWS ParallelCluster 데몬은 시작된 새 인스턴스에 대해이 구성을 자동으로 사용합니다. 다음 로그 파일을 보면 지정된 파라미터가 인스턴스를 프로비저닝하는 데 사용되고 있는지 확인할 수 있습니다.
-
/var/log/parallelcluster/clustermgtd
(고정 용량용 - MinCount> 0
) -
/var/log/parallelcluster/slurm_resume.log
(동적 용량용)
파라미터가 정확하면 다음을 포함하는 로그 항목을 찾을 수 있습니다.
Found RunInstances parameters override. Launching instances with: <parameters_list>
-
RunInstances
재정의 업데이트
컴퓨팅 플릿을 중지하지 않고 언제든지 생성된 JSON 구성을 업데이트할 수 있습니다. 변경 사항이 적용된 후에는 모든 새 인스턴스가 업데이트된 구성으로 시작됩니다. 업데이트된 구성을 실행 중인 노드에 적용해야 하는 경우 인스턴스 종료를 강제하여 노드를 재활용하고가 해당 노드 AWS ParallelCluster 를 교체할 때까지 기다립니다. Amazon EC2 콘솔 또는 AWS CLI에서 인스턴스를 종료하거나 Slurm 노드를 DOWN
또는 DRAIN
상태로 설정하여 이 작업을 수행할 수 있습니다.
다음 명령을 사용하여 Slurm 노드를 DOWN
또는 DRAIN
으로 설정합니다.
$
scontrol update nodename=
my-queue-dy-my-compute-resource-1
state=down reason=your_reason
scontrol update nodename=my-queue-dy-my-compute-resource-1
state=drain reason=your_reason