亚马逊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 映像

  1. 登录 AWS 控制台。
  2. 转到 AppStream 2.0、映像、启动映像生成器
  3. 选择 AWS 提供的官方基础映像,例如 AppStream-WinServer2019-09-18-2019,并指定您需要的配置参数。
  4. 选中配置网络中的默认 Internet 接入选项 这是 ParallelCluster 安装和升级的必需操作。
  5. 创建映像生成器实例,当它运行后作为管理员连接该实例。

步骤 2.安装 ParallelCluster

此程序先将 Python 安装在其自己的文件夹中,然后使用它安装 ParallelCluster。这是更加简洁和整齐的选项,不会修改现有的 Python 安装。

  1. 从 python.org 下载您偏好的 Python Windows 安装程序。
  2. 将 Python 安装在独立文件夹中,例如 C:\python38,指定:
    1. 为所有用户安装
    2. 包括 pip
  3. 转到安装有 Python 的目录。
  4. 运行 python -m pip install aws-parallelcluster

步骤 3.发布命令行

现在,我们已在运行 ParallelCluster,我们可以向用户提供 pcluster 命令,并构建相关的 AppStream 2.0 映像。

  1. 提供正常用户权限以运行 pcluster 并读取其配置。这一步可通过多种方式执行:例如,将角色授权给用户或映像,或者共享凭据、创建临时凭据或将其嵌入到自定义封套脚本或可执行文件中。在此例中,我们将文件夹 C:\Users\ImageBuilderAdmin\.aws 和 .parallelcluster 复制到默认用户主文件夹:C:\Users\Default 和 C:\Users\DefaultProfileUser
  2. 添加任何需要的应用程序。您可能想添加 Putty 之类的 ssh 客户端以连接到 ParallelCluster 节点。确保您也发布了它,如下文所述。
  3. 向发布的应用程序添加命令提示符。双击 AppStream 2.0 会话桌面上的映像助手图标,向它添加 Windows 命令提示符。 可执行文件的位置是:C:\Windows\system32\cmd.exe。指定每个用户都可以访问的文件夹作为工作目录,例如新建文件夹并设置为 C:\temp
  4. 按照映像助手的说明测试和优化命令提示符,并构建 AppStream 2.0 映像。
    映像助手将会要求您作为测试用户登录,启动应用程序,并检查是否每个方面都运行良好。然后,它将完成快速优化程序,选择映像名称,最后让您审核应用程序发布设置。
    显示应用程序启动设置的 AppStream 映像助手对话框。

步骤 4.设置队列和堆栈

当 AppStream 2.0 映像完成后(映像不再为快照状态),您就可以建立队列

  1. 在 AWS 控制台中,转到 AppStream 2.0队列,并单击创建队列
  2. 选择映像步骤中,指定您刚构建的 AppStream 2.0 映像
  3. 配置队列步骤中,根据您的偏好设置会话持续时间以及其他参数。为了保持简洁明了,最好设置足以使用户启动、使用和处置其 ParallelCluster 实例的会话持续时间。当前最大会话持续时间为 5760 分钟(四天)。
  4. 配置网络步骤中,确保允许默认 Internet 接入,否则 ParallelCluster 将无法联系到 CloudFormation。

当列队已配置并正常运行后,即可创建堆栈

  1. 在 AWS 控制台中,转到 AppStream 2.0 → 堆栈,并单击创建堆栈
  2. 启用存储步骤中,您可能想允许用户会话访问 Amazon S3 存储桶;此 S3 位置可提供在 ParallelCluster 实例与 AppStream 2.0 会话之间共享对象/数据的简单途径。
    AppStream 自动为这种用途创建存储桶,并使用下面的格式以新存储桶名称预填充此选项:appstream2-<unique id>-<AWS region>-<AWS account id>
  3. 当堆栈创建流程完成后,您就可以单击它的条目并选择操作 创建流 URL,分享给一个或多个用户。
  4. 然后,用户可以从其浏览器或 AppStream 2.0 客户端建立连接,并选择命令提示符应用程序。现在,他们可以从各自的命令提示符中运行 pcluster 命令:
    ParallelCluster 命令提示符窗口和“选择文件夹”对话框。

步骤 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 主节点的 ssh 连接访问 S3 主文件夹

请注意:在 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 主文件夹。

参考

Amazon AppStream 2.0

AWS ParallelCluster

Amazon S3

AWS 命令行界面 (CLI)