多个用户访问群集 - Amazon ParallelCluster
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

多个用户访问群集

学习如何实施和管理对单个集群的多个用户访问权限。

在本主题中,Amazon ParallelClusteruser 是指计算实例的系统用户。一个示例是ec2-user为了AmazonEC2 实例。

Amazon ParallelCluster在所有Amazon Web Services 区域哪里Amazon ParallelCluster当前可用。与其他人一起使用Amazon服务,包括Amazon FSx for LustreAmazon Elastic File System.

您可以使用Amazon Directory Service for Microsoft Active Directory要么Simple AD以管理群集访问权限。要设置集群,请指定Amazon ParallelCluster DirectoryService配置。Amazon Directory Service目录可以连接到多个集群。这样就可以跨多个环境集中管理身份和统一的登录体验。

当您使用Amazon Directory Service为了Amazon ParallelCluster多次访问权限,您可以使用目录中定义的用户凭据登录集群。此类证书包含用户名和密码。首次登录集群后,系统会自动生成用户 SSH 密钥。你可以使用它在没有密码的情况下登录。

部署目录服务后,您可以创建、删除和修改群集的用户或组。与Amazon Directory Service,您可以在Amazon Web Services Management Console或者通过使用Active Directory 用户和计算机工具。可从加入 Active Directory 的任何 EC2 实例访问此工具。有关更多信息,请参阅 。安装 Active Directory 管理工具.

如果您计划使用Amazon ParallelCluster在无法访问互联网的单个子网中,请参阅Amazon ParallelCluster在单个子网中,无法访问 Internet以获取其他要求。

创建 Active Directory

在创建群集之前,请确保创建 Active Directory (AD)。有关如何为集群选择 Active Directory 类型的信息,请参阅选择哪一个中的Amazon Directory Service管理指南.

如果目录为空,请添加具有用户名和密码的用户。有关更多信息,请参阅特定于的文档Amazon Directory Service for Microsoft Active Directory要么Simple AD.

注意

Amazon ParallelCluster要求每个 Active Directory 用户目录都位于/home/$user目录。

使用 AD 域创建集群

警告

本介绍部分介绍如何设置Amazon ParallelCluster通过 LDAP 使用托管 AD 服务器。LDAP 是不安全的协议。对于生产系统,我们强烈建议使用 TLS 证书 (LDAPS),如示例Amazon Managed Microsoft AD通过 LDAP (S) 群集配置接下来的部分。

配置集群以与目录集成,方法是在DirectoryService集群配置文件的部分。有关更多信息,请参阅 。DirectoryService配置部分。

您可以使用以下示例将集群与Amazon Managed Microsoft ADLDAP。

需要的特定定义Amazon Managed Microsoft AD通过 LDAP 配置:

  • 你必须设置ldap_auth_disable_tls_never_use_in_production到的参数TrueAdditionalSssdConfigs.

  • 您可以指定控制器主机名或 IP 地址DomainAddr.

  • DomainReadOnlyUser语法必须如下:

    cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com

获取您的Amazon Managed Microsoft AD配置数据:

$ aws ds describe-directories --directory-id "d-abcdef01234567890"
{ "DirectoryDescriptions": [ { "DirectoryId": "d-abcdef01234567890", "Name": "corp.pcluster.com", "DnsIpAddrs": [ "203.0.113.225", "192.0.2.254" ], "VpcSettings": { "VpcId": "vpc-021345abcdef6789", "SubnetIds": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890" ], "AvailabilityZones": [ "region-idb", "region-idd" ] } } ] }

的群集配置Amazon Managed Microsoft AD:

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-1234567890abcdef0 Ssh: KeyName: pcluster Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: dc=corp,dc=pcluster,dc=com DomainAddr: ldap://203.0.113.225,ldap://192.0.2.254 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True

要将此配置用于 Simple AD,请更改DomainReadOnlyUser中的属性值DirectoryService部分:

DirectoryService: DomainName: dc=corp,dc=pcluster,dc=com DomainAddr: ldap://203.0.113.225,ldap://192.0.2.254 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:SimpleAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnlyUser,cn=Users,dc=corp,dc=pcluster,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True

注意事项:

  • 我们建议您通过 TLS/SSL(或 LDAPS)而不是单独使用 LDAP。TLS/SSL 确保连接已加密。

  • 这些区域有:DomainAddr属性值与DnsIpAddrs列表中describe-directories输出。

  • 我们建议您的群集使用与DomainAddr指向。如果您使用自定义动态主机配置协议 (DHCP) 配置建议用于目录 VPC 和子网不是位于DomainAddr可用区,可用区之间的跨流量是可能的。使用自定义 DHCP 配置不是使用多用户 AD 集成功能所必需的。

  • 这些区域有:DomainReadOnlyUser属性值指定必须在目录中创建的用户。这个用户不是默认情况下创建。建议您不要授予此用户修改目录数据的权限。

  • 这些区域有:PasswordSecretArn属性价值指向Amazon Secrets ManagerSecret,其中包含您为DomainReadOnlyUser财产。如果此用户的密码更改,请更新密码值并更新群集实例上的配置。在更新实例之前,请确保停止集群的计算队列。或者,您可以在任何活动的群集节点上运行以下命令,首先从头节点开始。

    sudo cinc-client \ --local-mode \ --config /etc/chef/client.rb \ --log_level auto \ --force-formatter \ --no-color \ --chef-zero-port 8889 \ --json-attributes /etc/chef/dna.json \ --override-runlist aws-parallelcluster-config::directory_service

有关另一个示例,请参阅通过 LDAP 集成 Active Directory.

登录到与 AD 域集成的集群

如果启用 AD 域集成功能,则在群集头节点上启用密码身份验证。AD 用户的主目录是在用户第一次登录头节点或者 sudo-user 首次切换到头节点上的 AD 用户时创建的。

未为群集计算节点启用密码身份验证。AD 用户必须使用 SSH 密钥登录才能计算节点。

默认情况下,SSH 密钥在 AD 用户中设置/${HOME}/.ssh在第一个 SSH 中登录到头节点的目录。可以通过设置禁用此行为GenerateSshKeysForUsers布尔值属性false在群集配置中。默认情况下,将 GenerateSshKeysForUsers 设置为 true

如果Amazon ParallelCluster应用程序需要群集节点之间的无密码 SSH,确保 SSH 密钥已在用户的主目录中正确设置。

注意

如果 AD 集成功能无法按预期工作,则 SSSD 日志可以提供有用的诊断信息来解决问题。这些日志位于/var/log/sssd群集节点上的目录。默认情况下,它们也存储在集群的 Amazon 中CloudWatch日志组。

有关更多信息,请参阅 排查多用户与 Active Directory 集成的

运行 MPI 任务

正如 SchedMD 中所建议的那样,MPI 作业应该通过使用 Surm 作为 MPI 引导方法来引导。有关更多信息,请参阅官方Surm 文档或者你的 MPI 库的官方文档。

例如,在IntelMPI 官方文档,你了解到在运行 StarCCM 作业时,必须通过导出环境变量将 Surm 设置为进程管弦乐队I_MPI_HYDRA_BOOTSTRAP=slurm.

注意

已知问题

在 MPI 应用程序依赖 SSH 作为生成 MPI 作业的机制的情况下,可能会在Surm 中的已知错误这会导致目录用户名的分辨率错误为 “无人”。

要么将您的应用程序配置为使用 Surm 作为 MPI 引导方法,或者请参阅用户名解析的已知问题请参阅故障排除部分了解更多详细信息和可能的解决方法。

示例Amazon Managed Microsoft AD通过 LDAP (S) 群集配置

Amazon ParallelCluster通过与Amazon Directory Service通过轻量目录访问协议 (LDAP) 或 LDAP (LDAPS)。

以下示例说明如何创建集群配置以与Amazon Managed Microsoft AD通过 LDAP。

您可以使用此示例将集群与Amazon Managed Microsoft AD通过 LDAPS 进行证书验证。

的具体定义Amazon Managed Microsoft AD通过 LDAPS 使用证书配置:

  • LdapTlsReqCert必须设置为hard(默认值)用于带证书验证的 LDAPS。

  • LdapTlsCaCert必须指定授权证书 (CA) 证书的路径。

    CA 证书是一个证书捆绑包,其中包含为 AD 域控制器颁发证书的整个 CA 链的证书。

    您的 CA 证书和证书必须安装在群集节点上。

  • 必须指定控制器主机名DomainAddr,而不是 IP 地址。

  • DomainReadOnlyUser语法必须如下:

    cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com

用于在 LDAPS 上使用 AD 的集群配置文件示例:

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-1234567890abcdef0 Ssh: KeyName: pcluster Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess CustomActions: OnNodeConfigured: Script: s3://aws-parallelcluster/scripts/pcluster-dub-msad-ldaps.post.sh Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 Iam: AdditionalIamPolicies: - Policy: arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess CustomActions: OnNodeConfigured: Script: s3://aws-parallelcluster-pcluster/scripts/pcluster-dub-msad-ldaps.post.sh DirectoryService: DomainName: dc=corp,dc=pcluster,dc=com DomainAddr: ldaps://win-abcdef01234567890.corp.pcluster.com,ldaps://win-abcdef01234567890.corp.pcluster.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com LdapTlsCaCert: /etc/openldap/cacerts/corp.pcluster.com.bundleca.cer LdapTlsReqCert: hard

在安装后脚本中添加证书并配置域控制器:

*#!/bin/bash* set -e AD_CERTIFICATE_S3_URI="s3://corp.pcluster.com/bundle/corp.pcluster.com.bundleca.cer" AD_CERTIFICATE_LOCAL="/etc/openldap/cacerts/corp.pcluster.com.bundleca.cer" AD_HOSTNAME_1="win-abcdef01234567890.corp.pcluster.com" AD_IP_1="192.0.2.254" AD_HOSTNAME_2="win-abcdef01234567890.corp.pcluster.com" AD_IP_2="203.0.113.225" # Download CA certificate mkdir -p $(dirname "${AD_CERTIFICATE_LOCAL}") aws s3 cp "${AD_CERTIFICATE_S3_URI}" "${AD_CERTIFICATE_LOCAL}" chmod 644 "${AD_CERTIFICATE_LOCAL}" # Configure domain controllers reachability echo "${AD_IP_1} ${AD_HOSTNAME_1}" >> /etc/hosts echo "${AD_IP_2} ${AD_HOSTNAME_2}" >> /etc/hosts

您可以从加入到域的实例中检索域控制器主机名,如以下示例所示。

从 Windows 实例

$ nslookup 192.0.2.254
Server: corp.pcluster.com Address: 192.0.2.254 Name: win-abcdef01234567890.corp.pcluster.com Address: 192.0.2.254

从 Linux 实例中

$ nslookup 192.0.2.254
192.0.2.254.in-addr.arpa name = corp.pcluster.com 192.0.2.254.in-addr.arpa name = win-abcdef01234567890.corp.pcluster.com

您可以使用此示例将集群与Amazon Managed Microsoft AD在 LDAPS 上,没有证书验证。

的具体定义Amazon Managed Microsoft AD通过 LDAPS 没有证书验证配置:

  • LdapTlsReqCert 必须设置为 never

  • 可以指定控制器主机名或 IP 地址DomainAddr.

  • DomainReadOnlyUser语法必须如下:

    cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com

用于使用的示例集群配置文件Amazon Managed Microsoft AD通过 LDAPS 没有证书验证:

Region: region-id Image: Os: alinux2 HeadNode: InstanceType: t2.micro Networking: SubnetId: subnet-1234567890abcdef0 Ssh: KeyName: pcluster Scheduling: Scheduler: slurm SlurmQueues: - Name: queue1 ComputeResources: - Name: t2micro InstanceType: t2.micro MinCount: 1 MaxCount: 10 Networking: SubnetIds: - subnet-abcdef01234567890 DirectoryService: DomainName: dc=corp,dc=pcluster,dc=com DomainAddr: ldaps://203.0.113.225,ldaps://192.0.2.254 PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=pcluster,dc=com LdapTlsReqCert: never