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

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

多用户访问集群

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

在本主题中,Amazon ParallelCluster用户是指计算实例的系统用户。示例为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 的 EC2 实例进行访问。有关更多信息,请参阅安装活动目录管理工具.

如果您计划使用Amazon ParallelCluster在没有互联网接入的单个子网中,请参阅Amazon ParallelCluster在无法访问 Internet 的单一子网中以了解其他要求。

创建有效的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 AD通过 LDAP。

必需的具体定义Amazon Managed Microsoft AD通过 LDAP 配置:

获取您的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

要将此配置用于简单 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,而不是单独使用 LDAP。TLS/SSL 可确保对连接进行加密。

  • 这些区域有:DirectoryService/DomainAddr属性值与中的条目相匹配DnsIpAddrs列表来自describe-directories输出。

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

  • 这些区域有: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 域集成的集群

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

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

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

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

Amazon Managed Microsoft AD密码将在 42 天后过期。有关更多信息,请参阅管理以下应用程序的密码策略Amazon Managed Microsoft AD在里面Amazon Directory Service管理指南. 如果您的密码过期,则必须重置密码才能恢复集群访问权限。有关更多信息,请参阅 如何重置用户密码和过期密码

注意

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

有关更多信息,请参阅 排除多用户与 Active Director

运行 MPI 任务

正如 SchedMD 中所建议的那样,应使用 Slurm 作为 MPI 引导方法来启动 MPI 作业。想要了解更多有关信息,请参阅官方Slurm 文档或者你的 MPI 库的官方文档。

例如,在中IntelMPI 官方文档,你知道在运行 StarCCM 作业时,必须通过导出环境变量将 Slurm 设置为流程编排器I_MPI_HYDRA_BOOTSTRAP=slurm.

注意

已知问题

如果你的 MPI 应用程序依赖 SSH 作为生成 MPI 任务的机制,则可能会在Slurm 中的已知错误这会导致目录用户名被错误地解析为 “nobody”。

要么将您的应用程序配置为使用 Slurm 作为 MPI 引导方法,要么参阅用户名解析的已知问题有关更多详细信息和可能的解决方法,请查看 “疑难解答” 部分。

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

Amazon ParallelCluster通过与集成,支持多用户访问Amazon Directory Service通过轻型目录访问协议 (LDAP) 或 TLS/SSL (LDAPS) 上的 LDAP。

以下示例演示了如何创建集群配置以与Amazon Managed Microsoft AD通过 LDAP (S)。

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

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

通过 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:

使用的集群配置文件示例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