您可以下载 Horizon Edge Gateway 并将其部署到 Amazon Web Services (AWS) 中的 Horizon 8 联合部署中,以便与 Horizon Cloud 配对。如果要为 Horizon 8 on Amazon WorkSpaces Core 部署 Horizon Edge,也可以使用这个相同的过程。
请按以下步骤为使用联合架构在 AWS 解决方案中部署的 Edge 下载并部署 Horizon Edge Gateway 设备。
按照这些相同的步骤为 Horizon 8 on Amazon WorkSpaces Core 下载并部署用于 Edge 部署的 Horizon Edge Gateway 设备。
在联合架构中或要在 Amazon WorkSpaces Core 上部署 Horizon 8 Edge,必须在 Horizon Cloud 中将 Horizon Edge Gateway 部署到 Edge 环境内的本机 Amazon Elastic Computer Cloud (EC2) 基础架构中。
必备条件
您必须满足以下必备条件,然后才能继续。
-
确认您满足 Horizon 8 Edge 部署入门中所述的与 Horizon Edge Gateway 相关的必备条件。
-
确认您满足使相应的目标 URL 可访问以在 Horizon 8 环境中部署 Horizon Edge Gateway 中所述的条件,以便使用 Horizon Edge Gateway 将 Horizon 8 Pod 与 Horizon Cloud 配对。
-
确认您使用的是相应版本的 Horizon Edge Gateway。请参阅 Omnissa 产品互操作性列表。
-
Horizon Edge Gateway 虚拟设备必须访问 Internet 才能与 Horizon Control Plane 进行通信。如果您的环境要求对要访问 Internet 的已部署设备使用代理服务器和代理配置,则在对 Horizon Edge Gateway 设备使用代理设置时,请确认您已查看与代理相关的信息、已知限制以及已知问题。
-
如果想要在通过 configure-edge-gateway.sh 脚本配对 Edge 时使用代理,必须先运行以下命令,若 ProxySSL 已启用,则指定为 true,否则指定为 false:
/opt/horizon/bin/configure-edge-gateway.sh -p 'Pairing_Code' -x -i 'IP_or FQDN_of Proxy' -r 'Proxy_Port' -m 'Proxy_User_Name' -a 'Proxy_Password' -s 'true_or_false'请参阅以下注释中的代理相关信息。
**注意:**更新 Edge 中的代理配置。
/opt/horizon/bin/configure-edge-gateway.sh --configure-proxy --proxy-host 127.0.0.1 --proxy-port 3128 --proxy-username 'exampleUsername' --proxy-password 'examplePassword'要了解更多选项,请使用
-h选项运行该脚本,如下所示。/opt/horizon/bin/configure-edge-gateway.sh -h -
许多步骤都必须使用命令行来执行。但是,有些部署步骤既可以使用 AWS 管理控制台来执行,也可以使用 AWS 命令行界面 (Command Line Interface,CLI) 来执行。有关使用 Amazon EC2 环境的详细信息,请参阅 Amazon Elastic Compute Cloud 文档,网址为 https://docs.aws.amazon.com/ec2/index.html。在后续步骤中,通常会建议需要参考的特定类型的 Amazon Elastic Compute Cloud 文档。
步骤
-
按照添加和部署 Horizon 8 Edge 页面上相应过程中间部分获取 Horizon Edge Gateway 设备二进制文件的步骤,下载 Horizon Edge Gateway 磁盘映像。对屏幕上的所有提示做出响应。
Horizon Edge Gateway 磁盘映像/设备以 VMDK 文件形式提供。将 VMDK 文件下载到本地系统。
**注意:**下载最新版本的 Horizon Edge Gateway 磁盘映像。我们建议您使用最新版本的 Edge 网关设备。有关版本信息,请参阅 Omnissa 产品互操作性列表。
将下载的二进制文件保存到要将二进制文件部署到所需虚拟化平台的位置,然后返回到此步骤序列以继续执行所需的配对过程。
将磁盘映像文件上载到 Amazon EC2 环境之前,必须先创建一个 Amazon S3 存储桶。
-
在 Amazon EC2 环境中创建 Amazon S3 存储桶。有关详细说明,请参阅 Amazon Elastic Compute Cloud 文档。
-
将下载的 VMDK 文件上载到 Amazon S3 存储桶。您可以使用 AWS 管理控制台或 AWS 命令行界面 (CLI) 执行此步骤。
-
(AWS 管理控制台)登录到 AWS 管理控制台以访问 Amazon EC2 环境。转到 S3 服务,选择之前创建的桶,然后将 VMDK 文件上载到该桶。
-
(AWS CLI) 访问 AWS CLI 并运行以下命令。
aws s3 cp <file-path-to-VMDK-file> <S3URI>有关运行
cp命令的详细信息,请参阅 Amazon Elastic Compute Cloud 文档。
在 AWS 管理控制台中,VMDK 文件列在对象选项卡中。
-
-
创建一个服务角色和一个策略,并将该策略连接到该角色。
-
创建此过程所需的三个新 JSON 文件中的第一个文件。
此 JSON 文件用于存储服务角色信息。根据需要命名此文件。在此过程中,此文件的示例文件名为
trust-policy.json。以下文本是 JSON 文件内容的示例。
{ "Version":"2022-10-17", "Statement":[ { "Sid":"", "Effect":"Allow", "Principal":{ "Service":"vmie.amazonaws.com" }, "Action":"sts:AssumeRole", "Condition":{ "StringEquals":{ "sts:ExternalId":"vmimport" } } } ] } -
创建一个服务角色并为其指定您选择的名称,然后将此角色信息存储在新的 JSON 文件中。
例如,使用 CLI 运行如下命令。
以下命令是一个一般示例。
aws iam create-role --role-name <role-name> --assume-role-policy-document <file-path>以下示例命令会将占位符
<role-name>替换为具体的示例 vmimport,并将占位符<file-path>替换为具体的示例 trust-policy.json。aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json有关运行
create-role命令的详细信息,请参阅 Amazon Elastic Compute Cloud 文档。 -
创建此过程所需的三个新 JSON 文件中的第二个文件。
提供要将 VMDK 文件上载到的存储桶的名称,例如 <bucket-name>,即下面的示例中使用的名称。
此 JSON 文件用于将新策略与新角色相连接。根据需要命名此文件。在此过程中,此文件的示例文件名为
role-policy.json。以下文本是示例
role-policy.json文件的内容示例。{ "Version":"2022-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::<bucket-name>" ] }, { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::<bucket-name>/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] } -
创建一个策略,将该策略连接到新角色,并将它们存储到新创建的 JSON 文件中。
例如,使用 CLI 运行如下命令。
以下命令是一个一般示例。
aws iam put-role-policy --role-name <role-name> --policy-name <policy-name> --policy-document <file-path>以下具体示例将占位符 <role-name> 替换为一个名为
vmimport的特定策略示例,将占位符 <policy-name> 替换为先前命名的特定角色示例(名称也为vmimport),并将占位符 <file-path> 替换为先前命名的特定 JSON 文件示例,即role-policy.json。aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json有关运行
put-role-policy命令的详细信息,请参阅 Amazon Elastic Compute Cloud 文档。
-
-
从导入的 VMDK 文件导入快照。
-
创建此过程所需的三个新 JSON 文件中的第三个文件。
在此文件中包含以下信息。
-
存储桶名称,如下面的示例中使用的 <bucket-name>。
-
上载到 Amazon S3 存储桶的 VMDK 文件的文件名,如下面的示例中使用的 <vmdk-file-name-uploaded-to-S3>。
此 JSON 文件用于存储导入的 VMDK 文件的快照。根据需要命名此文件。在此过程中,此文件的示例文件名为
container.json。以下文本是
container.json文件内容的示例。{ "Description": "Adapter-VM", "Format": "vmdk", "UserBucket": { "S3Bucket": "<bucket-name>", "S3Key": "<vmdk-file-name-uploaded-to-S3>" } } -
-
运行相应命令,以将快照从导入的 VMDK 文件导入到新创建的 JSON 文件中。
使用 CLI 运行以下类型的命令。
aws ec2 import-snapshot --role-name <role-name> --description <description> --disk-container <file-path>有关运行
import-snapshot命令的详细信息,请参阅 Amazon Elastic Compute Cloud 文档。以下命令是
import-snapshot命令的具体示例,其中,role-name参数是可选的且未使用,描述为"Adapter-VM",容器文件名为container.json。aws ec2 import-snapshot --description "Adapter-VM" --disk-container file://container.jsonimport-snapshot命令可能需要几分钟才能完成。但是,在运行该命令后,该命令会创建输出,其中包含可用于跟踪任务进度的ImportTaskId行。下面是一个示例输出。{ "ImportTaskId": "import-snap-05b4c84af4xxxxxxx", "Description": "Adapter-VM", "SnapshotTaskDetail": { "StatusMessage": "pending", "UserBucket": { "S3Bucket": "awsbucket", "S3Key": "edge-gw-2.3.3.0-22720582.ec2.vmdk" }, "Progress": "0", "Status": "active", "Description": "Adapter-VM", "DiskImageSize": 0.0 } } -
记下
import-snapshot命令输出中的ImportTaskId值。
-
-
要跟踪
import-snapshot任务的进度并获取快照 ID,请运行以下命令。aws ec2 describe-import-snapshot-tasks --import-task-ids <import-task-id>将
<import-task-id>占位符替换为 import-snapshot 命令输出中列出的值。上述示例输出中列出的示例值为import-snap-05b4c84af4xxxxxxx。有关运行describe-import-snapshot-tasks命令的详细信息,请参阅 Amazon Elastic Compute Cloud 文档。describe-import-snapshot-tasks命令会提供可指示import-snapshot任务进度的输出,并在任务完成时提供注册映像所需的快照 ID。例如:"Progress": "43"。输出中的行,此行指示import-snapshot任务的进度百分比。在此示例中,任务已完成 43%。"Status": "completed"。输出中的行,此行指示import-snapshot任务已完成。"SnapshotId": "snap-06d42e043bxxxxxxx"。输出中的行,任务完成后将包含此行。对于此示例,快照 ID 为snap-06d42e043bxxxxxxx。
-
记下
describe-import-snapshot-tasks命令输出中的快照 ID。 -
要注册快照映像,请运行
register-image命令。aws ec2 register-image --region us-west-2 --name <image-name> --architecture x86_64 --root-device-name '/dev/sda1' --virtualization-type hvm --ena-support --block-device-mappings DeviceName=/dev/sda1,Ebs={SnapshotId=<SnapshotId>}其中,必须为每个选项(例如,
--region、--architecture等)提供特定于您部署的响应。有关运行register-image命令的详细信息,请参阅 Amazon Elastic Compute Cloud 文档。以下信息特定于
--name选项和SnapshotId参数。--name- 根据字符串限制提供映像名称。SnapshotId- 提供describe-import-snapshot-tasks命令输出中的快照 ID。register-image命令提供的输出中包含 Amazon 计算机映像 (Amazon Machine Image, AMI) 的 ID。下面是一个典型的register-image输出示例。
{ "ImageId": "ami-0721ee000321c4685" }register-image命令输出中指示的 AMI 也会显示在 AWS 管理控制台的 AMI 列表中。 -
要支持创建和配置 Horizon Edge Gateway AMI 实例,请准备类似于以下示例的启动脚本。
#!/bin/bash /opt/horizon/bin/configure-adapter.py --sshEnable echo -e '<password>\n<password>' | passwd admin echo -e '<password>\n<password>' | passwd ccadmin echo 'cs_ip cs_fqdn' >> /etc/hosts在该示例中,启动脚本支持以下配置:
- 启用对 Horizon Edge Gateway 设备的 SSH 访问。
- 在设备上创建具有指定密码 (\n) 的 admin 用户帐户。确保您定义了强密码。强密码至少为 8 个字符,并且必须包含一个或多个数字、大写和小写字母以及特殊字符。
- 在设备上创建具有指定密码 (\n) 的 ccadmin 用户帐户。确保您定义了强密码。强密码至少为 8 个字符,并且必须包含一个或多个数字、大写和小写字母以及特殊字符。
- 将连接服务器主机名 (cs_fqdn) 解析为连接服务器 IP 地址 (cs_ip)。 您必须在下一步中启动 Horizon Edge Gateway AMI 实例时将此脚本添加到 user-data 中。
-
启动 Horizon Edge Gateway 的 AMI 实例。
**注意:**要确保实例提供足够的功能,请使用 c5.2xlarge 或更高型号。
您可以使用 AWS 管理控制台或 CLI 启动实例。不论使用哪种方式启动实例,都需使用
register-image命令输出中提供的 Amazon 计算机映像 (AMI) 的 ID,并将您在上一步中准备的启动脚本添加到 user-data 中。**注意:**您必须在此时添加启动脚本,因为 user-data 仅在 AMI 实例的首次引导序列中执行。
要使用 CLI,请参阅 Amazon Elastic Compute Cloud 文档以了解有关运行
run-instances命令的详细信息。要使用 AWS 管理控制台,请参阅 Amazon Elastic Compute Cloud 文档以了解相关详细信息,例如有关如何使用“启动实例”向导启动实例的信息。
如果选择使用 AWS 管理控制台启动实例,请按映像 ID 找到新的 AMI,选择该 AMI,然后单击启动。接下来,您可以继续按照向导提供部署的详细信息。
-
在 Horizon Edge Gateway AMI 启动后,编辑该 AMI 实例的配置并移除启动脚本。
-
通过 SSH 连接到 Horizon Edge Gateway 虚拟机 AWS 实例。
要使用 CLI 或 AWS 管理控制台,请参阅 Amazon Elastic Compute Cloud 文档,了解有关连接到 实例的详细信息。我们建议使用 SSH 以便可以复制粘贴配对密钥。
如需了解相关信息,请参阅为 Horizon Edge 启用 SSH 访问。
如需了解相关信息,另请参阅 AWS 产品文档中的连接到您的 Linux 实例和使用 EC2 Instance Connect 连接到您的 Linux 实例。
-
使用以下命令格式运行配对 Edge 脚本,其中,pairing_code 是从添加和部署 Horizon 8 Edge 中所述的步骤 9 屏幕截图中复制的配对代码。
sudo su - /opt/horizon/bin/configure-edge-gateway.sh -p <pairing_code> -
为了提高安全性,请考虑在完成这些步骤后停用 SSH。
-
返回到 Horizon Universal Console 以完成 Horizon Connection Server 详细信息的配置。请参阅添加和部署 Horizon 8 Edge。
此页面对您有帮助吗?