亚马逊AWS官方博客
使用 AWS ParallelCluster UI 简化 HPC 集群构建、认证和运维管理
ParallelCluster UI 介绍
Amazon ParallelCluster UI 是专为 Amazon ParallelCluster 设计的一个 Web UI,可以轻松创建、更新、访问以及监控多个 ParallelCluster 集群,同时支持与多种用户管理服务集成,方便企业级客户统一用户认证。ParallelCluster UI 是使用 ParallelCluster API 构建的,因此与通过 API、CLI 或 Web UI 创建的任何 3.X 或更高版本的集群都完全兼容。
功能
- 在 ParallelCluster UI 上可以查看以下内容:
- 账户中使用 ParallelCluster 创建的集群列表(包括使用 API,CLI 或 Web UI 创建的集群)
- 列出集群的可用状态和详细信息
- 可用于监控的 Amazon CloudFormation 堆栈事件和 ParallelCluster 日志
- 在集群上运行的 Slurm 作业的状态(ParallelCluster UI 不支持 Amazon Batch)
- 可以用于构建集群的自定义镜像列表
- 用于创建集群的官方镜像列表
- 有权访问 ParallelCluster UI 的用户列表,可以添加和删除用户(标准 Amazon Cognito 版本支持,Microsoft Entra ID 版本与 Amazon IAM Identity Center 版本不支持在 UI 添加删除)
- 集群的成本监控信息
- 集群关键组件日志信息以及整体指标监控
- 简单易用的引导配置页面,无需学习集群模版的格式和规范,同时 UI 与 API 集成,自动获取账号下可用资源用以匹配配置参数,帮助快速创建和编辑(更新)集群。此外在集群部署之前可以执行集群配置 –dry run 验证。
- 在 Cluster 视图中通过 SSH 或使用 Amazon DCV 远程桌面登陆头节点,需在创建集群过程中根据提示勾选”添加 SSM 会话”及”DCV”,并在头节点上添加 SSM Managed Instance Core IAM policy 的 ARN。
成本
ParallelCluster UI 是建立在完全无服务器架构之上的,按 API 调用计费,典型使用情况下,每月的估计成本不到一美元。因此客户基本只需为集群调用的资源付费。
架构
标准架构
- 使用 Amazon WAF 允许白名单 IP 地址段的连接 API Gateway
- 使用 Amazon API Gateway 代理 HTTP requests
- 使用 Amazon Lambda 执行后端功能
- 使用 Amazon ECR 存储 Amazon Lambda 自定义运行时镜像,用于 Python 后端和 React 网站后端
- 使用 Amazon VPC 隔离并部署资源
- 使用 Amazon S3 存储 API 定义等
- 使用 Amazon IAM Identity Center ,或 Amazon Cognito , 或 Microsoft Entra ID 实现用户认证
中国区 ParallelCluster UI 架构(version 3.9.1)
由于中国区缺少 Amazon Cognito user pools,因此原有 PCUI 解决方案无法在中国区直接部署,需要使用针对中国区定制的方案模版,支持采用在海外区域部署的 Amazon Coginito,或中国区域部署的 Amazon IAM Identity Center、Microsoft Entra ID 实现用户认证。
使用 Amazon IAM Identity Center 作为用户认证方式
使用 Amazon Cognito 作为用户认证方式
中国区域使用 Microsoft Entra ID 作为用户认证方式
准备工作
如需获取代码,请联系亚马逊云科技架构师获取代码及安装模板。
安装教程
部署 Amazon API Gateway
登录亚马逊云科技中国区 Amazon CloudFormation 管理控制台
使用文件 parallelcluster-ui-api-gateway.yaml 创建 CloudFormation 堆栈
输入堆栈名字,将表单的其余部分留空或输入(可选)参数的值以自定义 ParallelCluster UI 构建的 API Gateway
选择提交。完成 ParallelCluster UI 部署的 API Gateway 大约需要 1-2 分钟
在堆栈详细信息中,选择 Outputs 页签并检查 ApiGatewayRestApi、RootResourceId 和 RedirectURL
创建了 proxy 的 Lambda
Amazon IAM Identity Center 配置
Amazon IAM Identity Center 可以通过配置多种身份源,如内置的 Amazon IAM Identity Center 目录、Active Directory 及其他第三方外部身份源等,从而管理用户和组对亚马逊云科技账户和应用程序的访问权限。
注意:Amazon Organizations 一次只能在一个亚马逊云科技区域支持 Amazon IAM Identity Center,可以选择自己账户下任意一个区域启用 Amazon IAM Identity Center, ParallelCluster UI 则可以部署到不同的账户和区域。
如下为在中国宁夏区域启用 Amazon IAM Identity Center 的参考配置。
SAML 2.0 是一种用于安全交换 SAML 断言的行业标准,它在 SAML 机构(称为身份提供商或 IdP)与 SAML 2.0 使用者(称为服务提供商或 SP)之间传递用户的相关信息。Amazon IAM Identity Center 使用这些信息为有权在访问门户中使用应用程序的用户提供联合单点登录访问权限。可以按照以下步骤配置 Amazon IAM Identity Center 以提供对 ParallelCluster UI 应用程序的单点登录访问权限。
创建 User 和 Group
创建 PCUI Admin 用户组
创建测试 user 并加入到 Group
用户添加完成后,会发送一封邮件给到用户,进行身份认证和密码修改
尝试使用用户名登录
登录完成
创建 SAML Application
登录亚马逊云科技 Amazon IAM Identity Center 管理控制台,选择应用程序 Application-Customer managed-Add application
在选择应用程序类型页面,选择“I have an application I want to set up”和 SAML 2.0,选择下一步
输入应用程序的显示名称和描述,下载 Amazon IAM Identity Center SAML 元数据文件,并记录 Amazon IAM Identity Center sign-in URL 和 Amazon IAM Identity Center sign-out URL,以备后续配置使用
在应用程序元数据下,选择手动输入元数据值。需要在部署 ParallelCluster UI 应用程序后再提供应用程序 ACS URL 和应用程序 SAML 受众的值,在这一步可以暂时填写符合规则的 ACS URL 和 SAML 受众,例如 https://pcui.com 和 pcui
选择提交,将进入刚刚添加的应用程序的详细信息页面
选择分配用户和组,选择允许访问 ParallelCluster UI 的用户及组,选择指定用户
在应用程序的详细信息页面右上角,选择操作,然后选择 Edit attribute mappings
在第一条默认属性 Subject 的第二个文本框中,输入${user:email},保持格式选择 unspecified 不变。通过这个配置,应用程序中的用户属性 Subject 将会映射到 Amazon IAM Identity Center 中的用户属性${user:email}
选择新增属性映射。
在第一个文本框中,输入应用程序属性 name,在第二个文本框中,输入${user:name},格式选择 unspecified。
重复上述两步,添加 email 和 groups 属性映射
- email — ${user:email} — unspecified
- groups — ${user:groups} — unspecified
选择保存更改。
部署 ParallelCluster UI
使用文件 infrastructure/parallelcluster-ui.yaml 创建 Amazon CloudFormation 堆栈
AuthType 选择 idc
输入 AdminsGroup,使用 JSON list 格式的管理员组列表,根据不同的身份源获取组 ID 的方式如下
AdminsGroup:[“0d02d342-7071-70cd-89d2-b54b7845d390”] 注意这里一定要是英文的引号
输入 PublicEcrImageUri, 根据 YAML file 默认填入,本示例中为 public.ecr.aws/pcui/parallelcluster-ui:2024.06.0
输入 ApiGatewayRestApi,使用 API Gateway 堆栈输出的 ApiGatewayRestApi
输入 RootResourceId,使用 API Gateway 堆栈输出的 RootResourceId
在 (Optional) External PCUI IAM Identity Center 中,输入配置 IAM Identity Center 时获取的数据:
- 在 IdentityCenterSSOUrl 中输入 IAM Identity Center 登录URL
- 在 IdentityCenterSLOUrl 中输入 IAM Identity Center 注销URL
- 打开 IAM Identity Center SAML 元数据文件,复制 ds:X509Certificate 标签中的内容,在 IdentityCenterCertificate 中输入复制的内容
- (Optional) ImageBuilder Custom VPC 处需要填写 Build ECR image 的 ec2 所在的 VPC 和 subnet,如
提交创建
此 Stack 创建 PCUI 所需的资源,会在指定的 VPC 和 Subnet 中启动一个 m5.large 的 Instance 进行 Docker image 的构建并推送到 ECR 镜像仓库,构建完成后会自 Terminate 实例
Build 完成的 Image 会推送到创建的 Private ECR repo
会创建 3 个 Lambda,一个 type 为 image,另 2 个为 Python3.9 的 Lambda
在堆栈详细信息中,选择输出并检查 ParallelClusterUIUrl
打开 Amazon IAM Identity Center 控制台。在 Amazon IAM Identity Center 应用程序中选择 ParallelCluster UI 应用程序。在应用程序的详细信息页面上,选择操作,然后选择编辑配置。
- 在应用程序元数据下,
- 在应用程序 ACS URL 文本框中输入”<ParallelClusterUIUrl 键值>/saml/acs”
- 在应用程序 SAML 受众文本框中输入” <ParallelClusterUIUrl 键值>/metadata/”
保存,至此,安装部署完成。
登录测试
复制 ParallelClusterUI Url 到浏览器的地址栏并回车,会自动跳转到 Amazon IAM Identity Center 的验证
验证用户名密码后,可以使用 Amazon IAM Identity Center User 正常访问 ParallelCluster UI
使用 ParallelCluster UI
前置工作:Amazon Lambda 所需 Amazon IAM role 权限策略设置
如需使用 ParallelCluster UI 创建集群资源,则需要保证 ParallelClusterLambdaRole 具备需要的权限策略,一般情况下,为了创建资源的便利,可以附件给 Lambda AdministratorAccess 的权限。也可以参考文档ParallelCluster 中的IAM权限设置,按需进行最小化权限的赋予。
使用 ParallelCluster UI 创建集群
登录 ParallelCluster UI,点击 Create cluster – step by step
Cluster properties
在 Cluster properties 部分,填写集群名称,选择 region,OS(如果不使用 custom AMI 的话,默认使用 official AMI),VPC
如果希望集群通过 Microsoft AD 进行多用户管理,需要将集群节点加入 AD,需要点击并配置,参考 DirectoryService 部分
这里需要注意 PasswordSecretArn 需要为“Domain Read Only User”在 Amazon Secrets Manager 创建一个“Other type of secret”并且只包含 password plaintext 的 secret,示例中用户名为“admin”
SlurmDB accouting 配置
注意:这里的 PasswordSecretArn 不能使用 rds 自己创建的 secret,因为 rds 自己创建的 secret 是包含 username 和 password 的格式
而这里的 PasswordSecretArn 需要自己创建一个“Other type of secret”并且只包含 admin password text 的 secret
Head node 设置
设置 Head Node 的类型,是否使用 DCV,网络和 KeyPair 的选择
注意:
- 如使用 Ubuntu 22.04, 默认不再支持 RSA keys by default,需要生成 ed25519 key 用于集群创建和登录
- 如果使用 SlurmDB accounting 功能,则需要在 IAM policies 给 Head node 附加包含 secretsmanager:DescribeSecret 的 policy
Slurm settings
Slurm settings 部分主要 Compute Node 节点设置
Storage
Storage 部分可以设置共享存储,用户可以选择新建或者使用现有的文件系统
Cluster configuration YAML file
最后可以通过 Dry run 进行测试配置文件是否合理,点击 Create 进行集群创建
连接到 ParallelCluster UI 集群
- 使用密钥对的 ssh 登录。在集群配置中的 HeadNode / KeyName 中指定私钥,通过 SSH 命令登录
- 使用 pcluster ssh 命令行界面(CLI)命令登录。在集群配置 HeadNode / KeyName 中指定私钥。有关更多信息,请参阅 pcluster ssh
- 在 ParallelCluster UI 界面点击 Shell 使用 SSM 会话连接到集群头节点。必须将 AmazonSSMManagedInstanceCore 托管策略添加到集群配置中的 HeadNode / ExtraIamPolicies 才能使用 SSM 会话进行连接
- 在 ParallelCluster UI 界面点击 DCV 使用 Amazon DCV 连接到集群头节点。有关更多信息,请参阅通过 DCV 连接到头节点
- 使用 ParallelCluster UI 时,还可以使用 UI 提供的 EC2 Connect 命令连接到集群头节点。有关更多信息,请参阅使用 EC2 Instance Connect 端点连接到实例
(可选)通过 Amazon WAF 结合 API Gateway 实现安全访问
从安全角度考虑,有些客户需要保证业务系统仅允许特定的公司网络地址段访问,可以在 regional API Gateway 前面添加 WAF rule,允许 VPC CIDR(纯私有网络)或 NAT Gateway IP。以下以允许带有 NAT 的 VPC 子网访问 API Gateway 为例。
首先确定 NAT Gateway 的 IP 地址,可以通过 Console 查询,如果使用防火墙作为 NAT 则为防火墙的 Public IP
创建 WAF 的 IP sets,使用 NAT Gateway 的 EIP 地址/32 的格式
创建 web ACL
添加资源中选择对应 ParallelClusterUI API Gateway 的名称
添加 rule,选择 my own rules and rule groups
Rule type 选择 IP set,IP address to use as the originating address 选择 Source IP Address, Action 选择 allow
Default web ACL action for requests that don’t match any rules 选择 block,即仅允许 IP set 的 ip 作为源地址访问
创建完成后进行测试,如果通过非 VPC IP 地址的客户端访问,显示 Forbidden
而使用通过 NAT Gateway 访问互联网的终端访问 API Gateway URL 访问成功,并可以使用 PCUI 成功创建集群,查看日志等操作
在后台的 sample request 可以看到 allow 和 block 的请求
结论
通过在亚马逊云科技中国区部署 Amazon ParallelCluster UI 解决方案,为 ParallelCluster 构建图形化 Web UI,大大简化 HPC 集群的创建、管理、监控等操作。并通过配置 Amazon IAM Identity Center 实现 ParallelCluster UI SAML 2.0 应用程序单点登录访问,以及使用 Amazon WAF 结合 Amazon API Gateway 实现仅允许白名单 IP 地址段的连接,确保了 ParallelCluster UI 的安全访问。
参考资料
Amazon ParallelCluster UI Introduction
Amazon ParallelCluster UI Workshop