本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
多用户访问集群
学习实现和管理对单个集群的多用户访问权限。
在本主题中,Amazon ParallelCluster用户指计算实例的系统用户。一个例子是Amazon EC2 实例。ec2-user
Amazon ParallelCluster目前所有可用Amazon Web Services 区域的地Amazon ParallelCluster方都提供多用户访问支持。它可以与其他系统一起使用Amazon Web Services,包括适用 Amazon FSx for Lustre 和Amazon Elast ic Fil e System。
您可以使用Amazon Directory Service for Microsoft Active Directory或Simp le AD 来管理集群访问权限。请务必检查这些服务的Amazon Web Services 区域可用性。要设置集群,请指定Amazon ParallelCluster DirectoryService配置。 Amazon Directory Service目录可以连接到多个集群。这允许在多个环境中集中管理身份并提供统一的登录体验。
当您Amazon Directory Service用于Amazon ParallelCluster多用户访问时,您可以使用在目录中定义的用户凭据登录集群。这些凭证由用户名和密码组成。首次登录集群后,将自动生成用户 tsh 密钥。您无需密码即可使用它登录。
部署目录服务后,您可以创建、删除和修改集群的用户或组。使用Amazon Directory Service,可以在Amazon Web Services Management Console或使用 A ctive Directory 用户和计算机工具中执行此操作。此工具可从加入您的 Active Directory 的任何 EC2 实例访问。有关更多信息,请参阅安装 Active Directory 管理工具。
如果您计划Amazon ParallelCluster在无法访问互联网的单个子网中使用,Amazon ParallelCluster在无法访问 Internet 的单个子网中请参阅,了解其他要求。
创建Active
在创建集群之前,请务必创建 Active Directory (AD)。有关如何为集群选择 Active Directory 类型的信息,请参阅《Amazon Directory Service管理指南》中的选择类型。
如果目录为空,请添加具有用户名和密码的用户。有关更多信息,请参阅特定于 Simple A D Amazon Directory Service for Microsoft Active Directory的文档。
Amazon ParallelCluster要求每个 Active Directory 用户目录都位于该/home/$user
目录中。
使用 AD 域创建集群
本介绍部分介绍如何Amazon ParallelCluster通过轻型目录访问协议 (LDAP) 设置托管主动交付 (AD) 服务器。LDAP 是一种不安全的协议。对于生产系统,我们强烈建议使用 TLS 证书 (LDAPS),如以下LDAP (S) 群集配置示例Amazon Managed Microsoft AD部分所述。
通过在集群配置文件DirectoryService
部分指定相关信息,将您的集群配置为与目录集成。有关更多信息,请参阅DirectoryService配置部分。
您可以使用以下示例将您的集群与轻量级目录访问协议 (LDAP) 集成。Amazon Managed Microsoft AD
通过 LDAPAmazon Managed Microsoft AD 进行配置所需的特定定义:
-
必须将
ldap_auth_disable_tls_never_use_in_production
参数设置为 DirectoryService/True
下方AdditionalSssdConfigs。 -
您可以为 DirectoryService/指定控制器主机名或 IP 地址DomainAddr。
-
DirectoryService/DomainReadOnlyUser语法必须如下所示:
cn=ReadOnly,ou=Users,ou=CORP,dc=
corp
,dc=example
,dc=com
获取您的Amazon Managed Microsoft AD配置数据:
$
aws ds describe-directories --directory-id
"d-abcdef01234567890"
{ "DirectoryDescriptions": [ { "DirectoryId": "d-abcdef01234567890", "Name": "corp.example.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=example,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=example,dc=com AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True
要将此配置用于简单 AD,请更改DirectoryService
部分中的DomainReadOnlyUser
属性值:
DirectoryService: DomainName: dc=corp,dc=example,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=example
,dc=com
AdditionalSssdConfigs: ldap_auth_disable_tls_never_use_in_production: True
注意事项:
-
我们建议您通过 TLS/SSL(或 LDAPS)使用 LDAP,而不是单独使用 LDAP。TLS/SSL 确保连接已加密。
-
DirectoryService/DomainAddr属性值与
describe-directories
输出DnsIpAddrs
列表中的条目匹配。 -
我们建议您的集群使用位于 DirectoryService/DomainAddr指向的同一可用区内的子网。如果您使用推荐用于目录 VPC 的自定义动态主机配置协议 (DHCP) 配置,并且您的子网不在 DirectoryService/DomainAddr可用区内,则可用区之间的交叉流量是可能的。使用多用户 AD 集成功能不需要使用自定义 DHCP 配置。
-
DirectoryService/DomainReadOnlyUser属性值指定了必须在目录中创建的用户。默认情况下,此用户未创建。我们建议您不要授予该用户修改目录数据的权限。
-
DirectoryService/PasswordSecretArn属性值指向一个Amazon Secrets Manager密钥,其中包含您为 DirectoryService/DomainReadOnlyUser属性指定的用户密码。如果此用户的密码发生变化,请更新密钥值并更新集群。要更新集群以获取新的密钥值,必须使用
pcluster update-compute-fleet
命令停止计算队列,然后从集群头节点内运行以下命令。sudo /opt/parallelcluster/scripts/directory_service/update_directory_service_password.sh
有关另一个示例,另请参见集成 Active。
登录到与 AD 域集成的集群
如果您启用了 Active Delivery (AD) 域集成功能,则会在群集头节点上启用密码身份验证。AD 用户的主目录是在用户首次登录头节点或首次sudo-user切换到头节点上的 AD 用户时创建的。
未为集群计算节点启用密码身份验证。AD 用户必须使用 SSH 密钥登录计算节点。
默认情况下,SSH 密钥是在第一次 SSH 登录到头节点时在 AD 用户/${HOME}/.ssh
目录中设置的。可以通过在集群配置中将 DirectoryService/GenerateSshKeysForUsersboolean 属性设置为false
来禁用此行为。默认情况下,DirectoryService/设置GenerateSshKeysForUsers为true
。
如果Amazon ParallelCluster应用程序需要在群集节点之间使用无密码 SSH,请确保在用户的主目录中正确设置 SSH 密钥。
Amazon Managed Microsoft AD密码在 42 天后过期。有关更多信息,请参阅《管理指南》中的Amazon Managed Microsoft AD “Amazon Directory Service管理密码策略”。如果您的密码过期,则必须重置密码才能恢复集群访问权限。有关更多信息,请参阅如何重置用户密码和过期密码:
如果 AD 集成功能无法按预期运行,SSSD 日志可以提供有用的诊断信息来解决问题。这些日志位于群集节点的/var/log/sssd
目录中。默认情况下,它们还存储在集群的 Amazon CloudWatch 日志组中。
有关更多信息,请参阅排除与活动目录的多用户集成故障:
运行
正如 scheDMD 所建议的那样,使用Slurm作为 MPI 引导方法来引导 MPI 作业。有关更多信息,请参阅 Slurm 官方文档
例如,在 IntelMPI 官方文档I_MPI_HYDRA_BOOTSTRAP=slurm
。
已知问题
如果您的 MPI 应用程序依赖 SSH 作为生成 MPI 任务的机制,则可能会在 Slurm 中出现已知错误
要么将应用程序配置Slurm为使用 MPI 引导方法,要用户名解析的已知问题么参阅 “故障排除” 部分以了解更多详细信息和可能的解决方法。
LDAP (S) 群集配置示例Amazon Managed Microsoft AD
Amazon ParallelCluster通过与轻量级目录访问协议 (LDAP) 或基于 TLS/SSL 的 LDAP (LDAPS) 集成,支持多用户访问。Amazon Directory Service
以下示例演示如何创建集群配置以与 ovAmazon Managed Microsoft AD er (S) 集成。
您可以使用此示例将您的集群与 ovAmazon Managed Microsoft AD er LDAPS 集成,并进行证书验证。
带证书配置的 OVAmazon Managed Microsoft AD ER LDAPS 的具体定义:
-
DirectoryService对于带有证书验证的 LDAPS,LdapTlsReqCert必须将/设置为
hard
(默认)。 -
DirectoryService/LdapTlsCaCert必须指定您的授权证书 (CA) 证书的路径。
CA 证书是一个证书包,包含为 AD 域控制器颁发证书的整个 CA 链的证书。
您的 CA 证书和证书必须安装在群集节点上。
-
必须为 DirectoryService/指定控制器主机名 DomainAddr,而不是 IP 地址。
-
DirectoryService/DomainReadOnlyUser语法必须如下所示:
cn=ReadOnly,ou=Users,ou=CORP,dc=
corp
,dc=example
,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=example,dc=com DomainAddr: ldaps://win-abcdef01234567890.corp.example.com,ldaps://win-abcdef01234567890.corp.example.com PasswordSecretArn: arn:aws:secretsmanager:region-id:123456789012:secret:MicrosoftAD.Admin.Password-1234 DomainReadOnlyUser: cn=ReadOnly,ou=Users,ou=CORP,dc=corp,dc=example,dc=com LdapTlsCaCert: /etc/openldap/cacerts/corp.example.com.bundleca.cer LdapTlsReqCert: hard
在安装后脚本中添加证书和配置域控制器:
*#!/bin/bash* set -e AD_CERTIFICATE_S3_URI="s3://corp.example.com/bundle/corp.example.com.bundleca.cer" AD_CERTIFICATE_LOCAL="/etc/openldap/cacerts/corp.example.com.bundleca.cer" AD_HOSTNAME_1="win-abcdef01234567890.corp.example.com" AD_IP_1="192.0.2.254" AD_HOSTNAME_2="win-abcdef01234567890.corp.example.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.example.com Address: 192.0.2.254 Name: win-abcdef01234567890.corp.example.com Address: 192.0.2.254
从 Linux 实例中
$
nslookup
192.0.2.254
192.0.2.254.in-addr.arpa name = corp.example.com 192.0.2.254.in-addr.arpa name = win-abcdef01234567890.corp.example.com
您可以使用此示例将您的集群与 ovAmazon Managed Microsoft AD er LDAPS 集成,无需证书验证。
没有证书验证配置的 oAmazon Managed Microsoft AD ver LDAPS 的具体定义:
-
DirectoryService/LdapTlsReqCert必须设置为
never
。 -
可以为 DirectoryService/指定控制器主机名或 IP 地址DomainAddr。
-
DirectoryService/DomainReadOnlyUser语法必须如下所示:
cn=ReadOnly,ou=Users,ou=CORP,dc=
corp
,dc=example
,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=example,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=example,dc=com LdapTlsReqCert: never