亚马逊AWS官方博客
如何从 AppStream 2.0 运行 AWS ParallelCluster 并共享 S3 数据
高性能计算 (HPC) 集群管理员通常需要一种方法,使其用户能够快速而轻松地从普通 Windows 桌面创建 HPC 集群,同时确保安全性、隔离、可扩展和成本效益。这个重要的步骤可以融合到更广泛的用户工作流程中,或者 HPC 用户以可控的方式启动和监控其作业时所采用的既定程序中。
Amazon AppStream 2.0 是一种完全托管的安全应用程序流服务,可供您创建从 AWS 到 Web 浏览器的桌面应用程序流。 AWS ParallelCluster 是一种 AWS 支持的开源集群管理工具,可让您在 AWS 云中轻松地部署并管理 HPC集群。 Amazon S3 是一种对象存储服务,可提供行业领先的可扩展性、数据可用性、安全性和性能。
本博文阐述了如何从 AppStream 2.0 用户会话内运行 ParallelCluster,并提供了从这两种环境访问 S3 存储桶的示例。
解决方案概览
您可以通过构建安装有 Python 和 ParallelCluster 的 AppStream 2.0 映像,从 AppStream 2.0 流会话内运行 ParallelCluster。
要从 AppStream 2.0 流会话和 ParallelCluster 实例节点访问 S3 存储桶,只需在 AppStream 2.0 规模存储选项和 ParallelCluster 配置文件中指定相同的 S3 存储桶即可。
步骤 1.创建 AppStream 2.0 映像
- 登录 AWS 控制台。
- 转到 AppStream 2.0、映像、启动映像生成器。
- 选择 AWS 提供的官方基础映像,例如 AppStream-WinServer2019-09-18-2019,并指定您需要的配置参数。
- 选中配置网络中的默认 Internet 接入选项。 这是 ParallelCluster 安装和升级的必需操作。
- 创建映像生成器实例,当它运行后作为管理员连接该实例。
步骤 2.安装 ParallelCluster
此程序先将 Python 安装在其自己的文件夹中,然后使用它安装 ParallelCluster。这是更加简洁和整齐的选项,不会修改现有的 Python 安装。
- 从 python.org 下载您偏好的 Python Windows 安装程序。
- 将 Python 安装在独立文件夹中,例如 C:\python38,指定:
- 为所有用户安装
- 包括 pip
- 转到安装有 Python 的目录。
- 运行
python -m pip install aws-parallelcluster
。
步骤 3.发布命令行
现在,我们已在运行 ParallelCluster,我们可以向用户提供 pcluster
命令,并构建相关的 AppStream 2.0 映像。
- 提供正常用户权限以运行
pcluster
并读取其配置。这一步可通过多种方式执行:例如,将角色授权给用户或映像,或者共享凭据、创建临时凭据或将其嵌入到自定义封套脚本或可执行文件中。在此例中,我们将文件夹 C:\Users\ImageBuilderAdmin\.aws 和 .parallelcluster 复制到默认用户主文件夹:C:\Users\Default 和 C:\Users\DefaultProfileUser - 添加任何需要的应用程序。您可能想添加 Putty 之类的 ssh 客户端以连接到 ParallelCluster 节点。确保您也发布了它,如下文所述。
- 向发布的应用程序添加命令提示符。双击 AppStream 2.0 会话桌面上的映像助手图标,向它添加 Windows 命令提示符。 可执行文件的位置是:C:\Windows\system32\cmd.exe。指定每个用户都可以访问的文件夹作为工作目录,例如新建文件夹并设置为 C:\temp
- 按照映像助手的说明测试和优化命令提示符,并构建 AppStream 2.0 映像。
映像助手将会要求您作为测试用户登录,启动应用程序,并检查是否每个方面都运行良好。然后,它将完成快速优化程序,选择映像名称,最后让您审核应用程序发布设置。
步骤 4.设置队列和堆栈
当 AppStream 2.0 映像完成后(映像不再为快照状态),您就可以建立队列。
- 在 AWS 控制台中,转到 AppStream 2.0 → 队列,并单击创建队列。
- 在选择映像步骤中,指定您刚构建的 AppStream 2.0 映像。
- 在配置队列步骤中,根据您的偏好设置会话持续时间以及其他参数。为了保持简洁明了,最好设置足以使用户启动、使用和处置其 ParallelCluster 实例的会话持续时间。当前最大会话持续时间为 5760 分钟(四天)。
- 在配置网络步骤中,确保允许默认 Internet 接入,否则 ParallelCluster 将无法联系到 CloudFormation。
当列队已配置并正常运行后,即可创建堆栈:
- 在 AWS 控制台中,转到 AppStream 2.0 → 堆栈,并单击创建堆栈。
- 在启用存储步骤中,您可能想允许用户会话访问 Amazon S3 存储桶;此 S3 位置可提供在 ParallelCluster 实例与 AppStream 2.0 会话之间共享对象/数据的简单途径。
AppStream 自动为这种用途创建存储桶,并使用下面的格式以新存储桶名称预填充此选项:appstream2-<unique id>-<AWS region>-<AWS account id>
- 当堆栈创建流程完成后,您就可以单击它的条目并选择操作 → 创建流 URL,分享给一个或多个用户。
- 然后,用户可以从其浏览器或 AppStream 2.0 客户端建立连接,并选择命令提示符应用程序。现在,他们可以从各自的命令提示符中运行 pcluster 命令:
步骤 5.在 ParallelCluster 中启用 S3 访问
您可以在 ParallelCluster 配置文件的 [集群] 部分中使用下列选项,以允许 ParallelCluster 实例节点访问连接到 AppStream 2.0 的同一个 S3 存储桶:
授予对 S3 存储桶的只读访问权限:
s3_read_resource = arn:aws:s3:::appstream2-012345678910-eu-west-1-012345678910*
授予读写访问权限:
s3_read_write_resource = arn:aws:s3:::appstream2-012345678910-eu-west-1-012345678910*
ParallelCluster 用户通常将通过 ssh 连接到实例节点。登录后,他们就能够使用 AWS CLI s3 命令访问 S3 对象,例如:
sync
cp
mv
rm
例如:
请注意:在 ParallelCluster 配置中指定后面带星号的存储桶名称,还将允许您的 AWS CLI s3 命令使用子命令 ls 列出存储桶内容。
最终注意事项
- 创建 ParallelCluster 实例/集群后,它就完全从启动它的 AppStream 2.0 会话释放出来。 因此,举例来说,用户可以从第一个 AppStream 2.0 会话内创建 ParallelCluster 实例,然后关闭它并在另一个会话中处理同一个实例。
- ParallelCluster 是 AWS 支持的开源项目。如果您想贡献意见、发送反馈或问题,请参阅 ParallelCluster GitHub 问题。
小结
在本博文中,我阐述了如何:
- 在 AppStream 2.0 映像生成器内安装 ParallelCluster。
- 创建 AppStream 2.0 映像并使用它运行队列。
- 使用新创建的队列启动 AppStream 堆栈,将其关联到 S3 主文件夹并与其建立连接。
- 从会话内启动 ParallelCluster 实例,让它的节点访问相同的 S3 主文件夹。