创建集群 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建集群

如果您尚未退出 Amazon EC2 实例,请立即退出。

设置该环境是为了创建可以针对 Active Directory (AD) 对用户进行身份验证的集群。

创建简单的集群配置并提供与连接到 AD 相关的设置。想要了解更多信息,请参阅DirectoryService部分。

选择以下集群配置之一,然后将其复制到名为 ldaps_config.yamlldaps_nocert_config.yamlldap_config.yaml 的文件中。

建议您选择具有证书验证功能的 LDAPS 配置。如果选择此配置,则还必须将引导脚本复制到名为 active-directory.head.post.sh 的文件中。此外,您必须将其存储在配置文件中指示的 Amazon S3 存储桶中。

注意
必须更改以下组件。
  • KeyName: 您的一个 Amazon EC2 密钥对。

  • SubnetId / SubnetIds: CloudFormation 快速创建堆栈(自动教程)或 python 脚本(手动教程)输出中 IDs 提供的子网之一。

  • Region:您在其中创建 AD 基础架构的区域。

  • DomainAddr:此 IP 地址是您的 AD 服务的 DNS 地址之一。

  • PasswordSecretArn:包含 DomainReadOnlyUser 密码的密钥的 Amazon 资源名称 (ARN)。

  • BucketName:保存引导脚本的存储桶的名称。

  • AdditionalPolicies/Policy:读取域名认证政策的亚马逊资源名称 (ARN)。 ReadCertExample

  • CustomActions/OnNodeConfigured/Args:保存域名认证策略的密钥的 Amazon 资源名称 (ARN)。

为了提高安全性,我们建议使用 HeadNode/Ssh/AllowedIps 配置来限制对头节点的 SSH 访问。

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: keypair Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::123456789012:policy/ReadCertExample S3Access: - BucketName: amzn-s3-demo-bucket EnableWriteAccess: false KeyName: bootstrap/active-directory/active-directory.head.post.sh CustomActions: OnNodeConfigured: Script: s3://amzn-s3-demo-bucket/bootstrap/active-directory/active-directory.head.post.sh Args: - arn:aws:secretsmanager:region-id:123456789012:secret:example-cert-123abc - /opt/parallelcluster/shared/directory_service/domain-certificate.crt Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-t2-micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: corp.example.com DomainAddr: ldaps://corp.example.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234 DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsCaCert: /opt/parallelcluster/shared/directory_service/domain-certificate.crt LdapTlsReqCert: hard

引导脚本

创建引导程序文件后,在将其上传到 S3 存储桶之前,请运行chmod +x active-directory.head.post.sh以授予 Amazon ParallelCluster 运行权限。

#!/bin/bash set -e CERTIFICATE_SECRET_ARN="$1" CERTIFICATE_PATH="$2" [[ -z $CERTIFICATE_SECRET_ARN ]] && echo "[ERROR] Missing CERTIFICATE_SECRET_ARN" && exit 1 [[ -z $CERTIFICATE_PATH ]] && echo "[ERROR] Missing CERTIFICATE_PATH" && exit 1 source /etc/parallelcluster/cfnconfig REGION="${cfn_region:?}" mkdir -p $(dirname $CERTIFICATE_PATH) aws secretsmanager get-secret-value --region $REGION --secret-id $CERTIFICATE_SECRET_ARN --query SecretString --output text > $CERTIFICATE_PATH
注意
必须更改以下组件。
  • KeyName: 您的一个 Amazon EC2 密钥对。

  • SubnetId / SubnetIds: CloudFormation 快速创建堆栈(自动教程)或 python 脚本(手动教程)输出中的子网 IDs 之一。

  • Region:您在其中创建 AD 基础架构的区域。

  • DomainAddr:此 IP 地址是您的 AD 服务的 DNS 地址之一。

  • PasswordSecretArn:包含 DomainReadOnlyUser 密码的密钥的 Amazon 资源名称 (ARN)。

为了更好的安全状况,我们建议使用 HeadNode /Ssh/ AllowedIps 配置来限制对头节点的 SSH 访问。

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: keypair Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-t2-micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: corp.example.com DomainAddr: ldaps://corp.example.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234 DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsReqCert: never
注意
必须更改以下组件。
  • KeyName: 您的一个 Amazon EC2 密钥对。

  • SubnetId / SubnetIds: CloudFormation 快速创建堆栈(自动教程)或 python 脚本(手动教程)输出中 IDs 提供的子网之一。

  • Region:您在其中创建 AD 基础架构的区域。

  • DomainAddr:此 IP 地址是您的 AD 服务的 DNS 地址之一。

  • PasswordSecretArn:包含 DomainReadOnlyUser 密码的密钥的 Amazon 资源名称 (ARN)。

为了更好的安全状况,我们建议使用 HeadNode /Ssh/ AllowedIps 配置来限制对头节点的 SSH 访问。

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-abcdef01234567890 Ssh: KeyName: keypair Scheduling: Scheduler: slurm SlurmQueues: - Name: queue0 ComputeResources: - Name: queue0-t2-micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: dc=corp,dc=example,dc=com DomainAddr: ldap://192.0.2.254,ldap://203.0.113.237 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:ADSecretPassword-1234 DomainReadOnlyUser: cn=ReadOnlyUser,ou=Users,ou=CORP,dc=corp,dc=example,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True

使用以下命令创建集群。

$ pcluster create-cluster --cluster-name "ad-cluster" --cluster-configuration "./ldaps_config.yaml" { "cluster": { "clusterName": "pcluster", "cloudformationStackStatus": "CREATE_IN_PROGRESS", "cloudformationStackArn": "arn:aws:cloudformation:region-id:123456789012:stack/ad-cluster/1234567-abcd-0123-def0-abcdef0123456", "region": "region-id", "version": 3.14.1, "clusterStatus": "CREATE_IN_PROGRESS" } }