使用 NICE EnginFrame 和 NICE DCV 会话管理器设置自动缩放虚拟桌面基础架构 (VDI) - AWS Prescriptive Guidance

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

使用 NICE EnginFrame 和 NICE DCV 会话管理器设置自动缩放虚拟桌面基础架构 (VDI)

由 Dario La Porta 和 Salvatore Maccarone (AWS) 编写

代码存储库:elastic-vdi-infrastructure

环境:PoC 或试点

技术:高性能计算;基础设施

AWS 服务:AWS CDK;AWS;Amazon EC2 Auto Scaling CloudFormation;Elastic Load Balancing (ELB)

Summary

NICE DCV 是一种高性能远程显示协议,可帮助您在不同的网络条件下将远程桌面和应用程序从任何云或数据中心流式传输到任何设备。借助 NICE DCV 和 Amazon Elastic Compute Cloud (Amazon EC2),您可以在 EC2 实例上远程运行图形密集型应用程序,并将其用户界面流式传输到更简单的远程客户端计算机。这消除了对昂贵的专用工作站的需要,以及在云和客户端计算机之间传输大量数据的需要。

此模式建立了一个功能齐全、自动扩缩的 Linux 和 Windows 虚拟桌面基础架构(VDI),可通过基于 Web 的用户界面进行访问。VDI 解决方案为研发 (R&D) 用户提供易于访问且高性能的用户界面,用于提交图形密集型分析请求并远程审查结果。

先决条件和限制

先决条件

  • 一个有效的 Amazon Web Services account。

  • 管理员权限和一组访问密钥。

  • AWS Cloud Development Kit (AWS CDK) Toolkit,已安装并配置 有关更多信息,请参阅安装 AWS CDK

  • AWS 命令行界面(AWS CLI),已为您的 AWS 安装并配置。有关更多信息,请参阅安装或更新最新版本的 AWS CLI

  • Python,已安装并配置。有关更多信息,请参见源版本(Python 网站)。

  • 一个或多个可用的虚拟私有云 (VPC)。

  • 两个或多个 Elastic IP 地址可用。有关默认限制的更多信息,请参阅 Elastic IP 地址限制

  • 对于 Linux EC2 实例,请设置 Secure Shell (SSH) 密钥对。有关更多信息,请参阅密钥对和 Linux 实例

产品版本

  • AWS CDK 版本 2.26.0 或更高版本

  • Python,版本 3.8 或更高版本。

架构

目标架构

下图显示了该 VDI 解决方案的不同组件。根据适用于 Windows 和 Linux NICE EnginFrame DCV 实例的 Amazon EC2 Auto Scaling 群组,用户与 NICE 互动,启动亚马逊 EC2 实例。

适用于私有子网中 Windows 和 Linux VDI 的应用程序负载均衡器和自动扩缩组。

自动化和扩缩

此模式包含的代码创建自定义 VPC、公有和私有子网、互联网网关、NAT 网关、应用程序负载均衡器、安全组和 IAM policy。AWS 还 CloudFormation 用于创建由 Linux 和 Windows NICE DCV 服务器组成的舰队。

工具

Amazon Web Services

  • AWS Cloud Development Kit (AWS CDK) 是一个软件开发框架,可帮助您在代码中定义和预调配 Amazon Web Services Cloud 基础设施。

  • AWS CloudFormation 可帮助您设置 AWS 资源,快速一致地配置这些资源,并在 AWS 账户和区域的整个生命周期中对其进行管理。

  • NICE DCV 是一种高性能远程显示协议,可帮助您在不同的网络条件下将远程桌面和应用程序流从任何云或数据中心传送到任何设备。在这种模式下,它提供了一种带宽高效的体验,可远程传输高性能计算(HPC)3D 图形。

  • NICE DCV Session Manager 可帮助您在一组 NICE DCV 服务器实例集上创建和管理 NICE DCV 会话的生命周期。

  • NICE EnginFrame 是一个高级的前端 Web 界面,用于访问云端的技术和科学应用程序。

代码存储库

此模式的代码可在带有 NICE EnginFrame 和 NICE DCV 会话管理器存储库的 Auto Scaling VDI 解决方案中找到。

操作说明

任务描述所需技能

克隆存储库。

克隆含代码的存储库。

git clone https://github.com/aws-samples/elastic-vdi-infrastructure.git
云架构师

安装必要 AWS CDK 库。

安装 AWS CDK 库。

cd elastic-vdi-infrastructure python3 -m venv .venv source .venv/bin/activate pip3 install -r requirements.txt
云架构师

更新参数。

  1. 在选定的文本编辑器中打开 app.py 文件。

  2. 替换以下必需参数的 CHANGE_ME值:

  3. (可选)修改以下参数的值,为您的环境自定义解决方案:

    • ec2_type_enginframe— EnginFrame 实例类型

    • ec2_type_broker — Session Manager Broker 实例类型

    • ebs_enginframe_size— 实例的亚马逊 Elastic Block Store (Amazon EBS) 卷的大小 EnginFrame

    • ebs_broker_size — 会话管理器代理实例的 EBS 卷大小

    • TagName and TagValue— 资源的账单标签

    • efadmin_uid— EnginFrame 管理员 (efadmin) 用户的唯一标识符

    • linux_shared_storage_size— OpenZFS 大小(以字节为单位)

    • Shared_Storage_Linux — 共享存储的挂载点

    • Enginframe_installer— 的下载链接 EnginFrame

    • Session_Manager_Broker_Installer — Session Manager Broker 的下载链接

  4. 保存并关闭 app.py 文件。

云架构师

部署解决方案。

按序列执行以下命令。

cdk bootstrap cdk deploy Assets-Stack Parameters-Stack cdk deploy Elastic-Vdi-Infrastructure

部署完成后,会返回以下两个输出:

  • Elastic-Vdi-Infrastructure.EnginFrameURL— EnginFrame 门户网站的 HTTPS 地址

  • Elastic-Vdi-InfrastruSecretEFadminPassword— 包含 efadmin 用户密码的密钥的 Amazon 资源名称(ARN)

记下这些值。您稍后将在此模式中使用这些值。

云架构师

部署 Linux 服务器实例集。

  1. 登录 AWS 管理控制台,然后打开CloudFormation 控制台

  2. 选择创建堆栈,然后选择使用新资源

  3. cloudformation_files 文件夹中,选择.yaml 文件。dcv-linux-fleet

  4. 指定堆栈详细信息页面上,定义以下参数:

    • 堆栈名称 — 堆栈的名称。

    • DcvFleet— NICE DCV 车队的名称。请勿将此值留空或使用空格。

    • InstanceType— 队列的实例类型。

    • RootVolumeSize— Linux EC2 实例的根卷大小。

    • MinSize— 应可用且未运行任何 DCV 会话的最小节点数。例如,如果您输入 2,则解决方案将从 2 个节点开始。当用户创建会话时,可用节点的数量减少到 1,解决方案会创建另一个节点以保持最小值。

    • MaxSize— 队列中节点的最大数量。如果已达到最大会话限制,则用户无法开始新会话。

    • BillingTagName— 用于计费的标签名称。此标签名称必须与用于 Windows 堆栈的名称存在不同。

    • BillingTagValue— 用于计费的标签值。

  5. 完成堆栈创建向导,然后选择提交开始创建堆栈。

云架构师

部署 Windows 服务器实例集。

  1. 登录 AWS 管理控制台,然后打开CloudFormation 控制台

  2. 选择创建堆栈,然后选择使用新资源

  3. cloudformation_files 文件夹中,选择.yaml 文件。dcv-windows-fleet

  4. 指定堆栈详细信息页面上,定义以下参数:

    • 堆栈名称 — 堆栈的名称。

    • DcvFleet— NICE DCV 车队的名称。请勿将此值留空或使用空格。

    • InstanceType— 队列的实例类型。

    • RootVolumeSize— Windows EC2 实例的根卷大小。

    • MinSize— 应可用且未运行任何 DCV 会话的最小节点数。

    • MaxSize— 队列中节点的最大数量。

    • BillingTagName— 用于计费的标签名称。此标签名称必须与用于 Linux 堆栈的名称存在不同。

    • BillingTagValue— 用于计费的标签值。

  5. 完成堆栈创建向导,然后选择提交开始创建堆栈。

云架构师
任务描述所需技能

检索 EnginFrame 管理员密码。

EnginFrame 管理账户名为 efadmin,密码作为机密存储在 AWS Secrets Manager 中。密钥的 ARN 是动态生成,并在 AWS CDK 部署的输出中可见。

  1. 在上一篇操作说明中,在部署解决方案说明中,在 Elastic-Vdi-Infrastructure.SecretEFadminPassword 输出下方,找到生成的密钥的 ARN。

  2. 执行以下操作之一,找回密钥:

云架构师

访问门 EnginFrame 户。

  1. 在上一篇长篇故事中,在 “部署解决方案” 故事中,在Elastic-Vdi-Infrastructure.EnginFrameURL输出下方,找到 EnginFrame 门户的 HTTPS 地址。

  2. 在 Web 浏览器中,键入门户的 HTTPS 地址。

  3. 输入 efadmin 用户的凭证。

云架构师

启动 Windows 会话。

  1. 在 EnginFrame 门户网站的菜单中,选择 Windows 桌面

  2. 当系统提示您以 Windows 管理员身份登录时,请输入与 efadmin 用户相同的密码。

  3. 确认 Windows 会话成功启动。

云架构师

启动 Linux 会话。

  1. 在 EnginFrame 门户网站的菜单中,选择 Linux 桌面

  2. 当系统提示您登录时,输入 efadmin 用户的凭证。

  3. 确认 Linux 会话成功启动。

云架构师
任务描述所需技能

删除堆栈。

在 AWS CloudFormation 控制台中,删除 Windows 和 Linux 服务器队列的堆栈。有关更多信息,请参阅删除堆栈

云架构师

删除基础设施。

使用以下 AWS CDK 命令删除已部署的基础设施。

cdk destroy --all
云架构师

故障排除

问题解决方案

部署未完成,因为它已经中断。

按照清理说明中的说明进行操作,然后重复此模式以再次部署环境。

相关资源