融合 HyperPod 集群与 Active Directory 实现无缝多用户登录
作者:Tomonori Shimomura Giuseppe Angelo Porcelli Monidipa Chakraborty Satish Pasumarthi 日期:2024年4月22日在 Amazon SageMaker 上发布, Amazon SageMaker HyperPod, 最佳实践, 专家 (400), 技术 HOWTO永久链接
关键要点
Amazon SageMaker HyperPod 可加速基础模型FM训练并简化集群管理。多用户环境通过 Linux 用户和组机制实现,避免彼此工作干扰。利用 LDAP 和 AWS 管理的 Microsoft Active Directory 实现集中的用户和权限管理。方案包含创建 VPC、子网、安全组及 NLB,并导入 SSL/TLS 证书。Amazon SageMaker HyperPod 是专为加速基础模型FM训练而设计的,简化了管理和优化大型训练计算集群时的复杂工作。使用 SageMaker HyperPod,您可以不间断地进行数周或数月的 FM 训练。
通常,HyperPod 集群是由多个用户使用的,包括机器学习ML研究人员、软件工程师、数据科学家和集群管理员。他们会编辑自己的文件,运行自己的作业,并希望不干扰彼此的工作。为了实现这种多用户环境,您可以利用 Linux 的用户和组机制,通过生命周期脚本静态创建多个用户。但是,这种方法的问题在于,用户和组设置在集群中的多个实例之间会重复配置,导致在新团队成员加入时难以保持一致性。
为了解决这一痛点,我们可以使用 轻量级目录访问协议 (LDAP) 以及 LDAPS 来与像 AWS Managed Microsoft AD 这样的目录服务集成。通过使用目录服务,您可以集中维护用户和组及其权限。
在本文中,我们将介绍如何将 HyperPod 集群与 AWS 管理的 Microsoft AD 集成,并解释如何实现一个拥有集中维护目录的无缝多用户登录环境。
解决方案概述
这个解决方案使用以下 AWS 服务和资源:
SageMaker HyperPod,用于创建集群AWS Managed Microsoft AD,用于创建管理目录弹性负载均衡 (ELB) 用于在目录服务前创建 网络负载均衡器 (NLB)AWS 证书管理器 (ACM) 用于导入和维护 LDAP over SSL/TLS (LDAPS) 连接的 SSL/TLS 证书Amazon 弹性计算云 (Amazon EC2) 用于创建 Windows 计算机以管理目录中的用户和组我们还使用 AWS CloudFormation 来部署一个堆栈,以创建 HyperPod 集群的前置条件:VPC、子网、安全组和 Amazon FSx for Lustre 卷。
以下图表说明了高层次的解决方案架构。
在这个方案中,HyperPod 集群实例使用 LDAPS 协议通过 NLB 连接到 AWS Managed Microsoft AD。我们通过在 NLB 上安装证书来实现 TLS 终止。为了在 HyperPod 集群实例中配置 LDAPS,生命周期脚本会安装和配置 系统安全服务守护程序 (SSSD)一种用于 LDAP/LDAPS 的开源客户端软件。
前置条件
本文假设您已经知道如何创建一个没有 SSSD 的基本 HyperPod 集群。如需有关如何创建 HyperPod 集群的详细信息,请参考 开始使用 SageMaker HyperPod 和 HyperPod 工作坊。
另外,在设置步骤中,您将使用 Linux 机器生成自签名证书并获取 AD 读取用户的模糊密码。如果您没有 Linux 机器,可以创建一个 EC2 Linux 实例或使用 AWS CloudShell。
创建 VPC、子网和安全组
按照 所有者账户 部分的说明进行操作。您将创建一个 CloudFormation 堆栈并创建 VPC、子网、安全组和 FSx for Lustre 卷等前置资源。在部署 CloudFormation 堆栈时,需要创建一个主子网和一个备用子网,因为 AWS Managed Microsoft AD 至少需要两个子网,并且应位于不同的可用区。
为了简单起见,在本文中,我们为 HyperPod 集群和目录服务使用相同的 VPC、子网和安全组。如果您需要在集群与目录服务之间使用不同的网络,请确保安全组和路由表已配置,以便彼此能够通信。
创建 AWS Managed Microsoft AD 目录服务
完成以下步骤来设置您的目录:
在 目录服务控制台 中,在导航窗格中选择 Directories 。选择 设置目录。对于 目录类型,选择 AWS Managed Microsoft AD。选择 下一步。对于 版本,选择 标准版。对于 目录 DNS 名称,输入您所选的目录 DNS 名称例如,hyperpodabc123com。对于 管理员密码,设定密码并保存以备后用。选择 下一步。在 网络 部分,指定您创建的 VPC 和两个私有子网。选择 下一步。查看配置和定价,选择 创建目录。创建目录的过程会开始。请等待状态从 创建中 变为 活动,这可能需要 2030 分钟。
当状态变为 活动 时,打开目录的详细信息页面,记下 DNS 地址以备后用。在目录服务前创建 NLB
按照以下步骤创建 NLB:
在 Amazon EC2 控制台,在导航窗格中选择 目标组 。选择 创建目标组。创建一个目标组,指定以下参数:在 选择目标类型 中,选择 IP 地址。在 目标组名称 中,输入 LDAP。在 协议:端口 中,选择 TCP 并输入 389。在 IP 地址类型 中,选择 IPv4。在 VPC 中,选择 SageMaker HyperPod VPC您通过 CloudFormation 模板创建的。在 健康检查协议 中,选择 TCP。选择 下一步。在 注册目标 部分,注册目录服务的 DNS 地址作为目标。在 端口 中,选择 如下待定。
这些地址在 审查目标 部分被标记为 待定 状态。
选择 创建目标组。在 负载均衡器控制台 中,选择 创建负载均衡器。在 网络负载均衡器 下,选择 创建。使用以下参数配置 NLB:在 负载均衡器名称 中,输入一个名称例如,nlbds。在 方案 中,选择 内部。在 IP 地址类型 中,选择 IPv4。十大免费加速器4 在 VPC 中,选择 SageMaker HyperPod VPC您通过 CloudFormation 模板创建的。5 在 映射 下,选择两个私有子网及其 CIDR 范围您通过 CloudFormation 模板创建的。6 在 安全组 中,选择 CfStackNameSecurityGroupXYZXYZ您通过 CloudFormation 模板创建的。在 监听器和路由 部分,指定以下参数:在 协议 中,选择 TCP。在 端口 中,输入 389。在 默认操作 中,选择名称为 LDAP 的目标组。
在此,我们添加了 LDAP 的监听器。随后我们将添加 LDAPS。
选择 创建负载均衡器。请等待状态从 配置中 切换到 活动,此过程可能需要 35 分钟。
当状态变为 活动 时,打开已配置 NLB 的详细信息页面,并记下 DNS 名称 (xyzxyzelbregionnameamazonawscom) 以备后用。创建自签名证书并将其导入到证书管理器
按照以下步骤创建自签名证书:
在您的 Linux 环境本地笔记本、EC2 Linux 实例或 CloudShell中,运行以下 OpenSSL 命令以创建自签名证书和私钥:
bash openssl genrsa 2048 gt ldapskey openssl req new key ldapskey out ldapsservercsr
系统会提示您输入将包含在证书请求中的信息。您要输入的内容称为“区分名称”或 DN。文件中包含许多字段,但您可以留空某些字段。
text国家名称2个字母代码[AU] US州/省名称全名[SomeState] Washington地区名称例如城市[]:Bellevue组织名称例如公司[Internet Widgits Pty Ltd] CorpName组织单位名称例如部门[]OrgName公用名例如服务器 FQDN 或您的名称[]nlbdsabcd1234elbregionamazonawscom电子邮件地址 []your@emailaddresscom
请为以下“额外”属性输入,以便与您的证书请求一起发送。
text挑战密码 []可选公司名称 []
bash openssl x509 req sha256 days 365 in ldapsservercsr signkey ldapskey out ldapscrt

证书请求自签名成功。
textsubject=C = US ST = Washington L = Bellevue O = CorpName OU = OrgName CN = nlbdsabcd1234elbregionamazonawscom emailAddress = your@emailaddresscom
bash chmod 600 ldapskey
在 证书管理器控制台,选择 导入。
输入证书主体和私钥,分别从 ldapscrt 和 ldapskey 的内容中获取。选择 下一步。添加任何可选标签,然后选择 下一步 。查看配置并选择 导入。![证书导入审核屏幕](https//d2908q01vomqb2cloudfrontnet/f1
发表评论