请按以下步骤为使用联合架构在 VMware Cloud on AWS 中部署的容器下载并部署 Horizon Cloud Connector 设备。在联合容器中,必须将 Horizon Cloud Connector 部署到容器环境内的本机 Amazon Elastic Computer Cloud (EC2) 基础架构中。

重要说明: 仅当您有权访问第一代控制平面中的第一代租户环境时,此信息才适用。如 知识库文章 92424 中所述,第一代控制平面已终止提供 (EOA)。有关详细信息,请参阅该文章。

有关 Horizon 容器部署架构的背景信息,请参阅第一代租户 - 具有第一代 Horizon Cloud 的 Horizon 容器部署架构

下面简要概述了将 Horizon Cloud Connector 部署到容器环境内的本机 Amazon EC2 基础架构中时所需执行的步骤。

  • 下载 VMDK 格式的 Horizon Cloud Connector 文件。
  • 在 Amazon EC2 上创建一个 Amazon Simple Storage Service (S3) 存储桶,并将设备 VMDK 文件上载到该桶。
  • 从上载的 VMDK 文件创建自定义映像。
  • 从自定义映像创建 Horizon Cloud Connector 虚拟机 (VM) 实例。
重要说明:Horizon Cloud Connector 部署到本机 Amazon EC2 基础架构时,默认情况下会停用以下 Horizon Cloud 服务。部署设备后,您可以选择 手动激活其中一个或多个服务
  • Cloud Monitoring Service
  • 云代理客户端服务
  • 映像区域服务

前提条件

过程

  1. 使用您的订阅电子邮件中提供的链接下载 Horizon Cloud Connector 磁盘映像。
    注: 要支持将设备部署到 Amazon EC2 环境中,必须下载版本 2.0 或更高版本的 Horizon Cloud Connector 磁盘映像。

    在使用您的 My VMware 帐户凭据登录到 my.vmware.com 后,Horizon Cloud Connector 磁盘映像会以 VMDK 文件的形式提供。将 VMDK 文件下载到本地系统。

    将磁盘映像文件上载到 Amazon EC2 环境之前,必须先创建一个 Amazon S3 存储桶。
  2. 在 Amazon EC2 环境中创建 Amazon S3 存储桶。有关详细说明,请参阅 Amazon Elastic Compute Cloud 文档。
  3. 将下载的 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 文件列在 对象选项卡中。
  4. 创建一个服务角色和一个策略,并将该策略连接到该角色。
    1. 创建此过程所需的三个新 JSON 文件中的第一个文件。
      此特定 JSON 文件用于存储服务角色信息。根据需要命名此文件。在此过程中,此文件的示例文件名为 trust-policy.json
    2. 创建一个服务角色并为其指定您选择的名称,然后将此角色信息存储在新的 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 文件的内容示例。
      {
          "Version":"2012-10-17",
          "Statement":[
              {
                  "Sid":"",
                  "Effect":"Allow",
                  "Principal":{
                      "Service":"vmie.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole",
                  "Condition":{
                      "StringEquals":{
                          "sts:ExternalId":"vmimport"
                      }
                  }
              }
          ]
      }
    3. 创建此过程所需的三个新 JSON 文件中的第二个文件。
      提供要将 VMDK 文件上载到的存储桶的名称,例如 <bucket-name>,即下面的示例中使用的名称。
      此特定 JSON 文件用于将新策略与新角色相连接。根据需要命名此文件。在此过程中,此文件的示例文件名为 role-policy.json
      以下文本是示例 role-policy.json 文件的内容示例。
      {
          "Version":"2012-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":"*"
              }
          ]
      }
    4. 创建一个策略,将该策略连接到新角色,并将它们存储到新创建的 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 文档。

  5. 从导入的 VMDK 文件导入快照。
    1. 创建此过程所需的三个新 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>"
          }
      }
    2. 运行相应命令,以将快照从导入的 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.json
      import-snapshot 命令可能需要几分钟才能完成。但是,在运行该命令后,该命令会创建输出,其中包含可用于跟踪任务进度的 ImportTaskId 行。下面是一个示例输出。
      {
          "ImportTaskId": "import-snap-05b4c84af4xxxxxxx",
          "Description": "Adapter-VM",
          "SnapshotTaskDetail": {
              "StatusMessage": "pending",
              "UserBucket": {
                    "S3Bucket": "awsbucket",
                   "S3Key": "horizon-cloud-connector-2.0.0.0-18191154_OVF10-disk1.vmdk"
               },
             "Progress": "0",
             "Status": "active",
              "Description": "Adapter-VM",
              "DiskImageSize": 0.0
          }
      
      }
    3. 记下 import-snapshot 命令输出中的 ImportTaskId 值。
  6. 要跟踪 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
  7. 记下 describe-import-snapshot-tasks 命令输出中的快照 ID。
  8. 要注册快照映像,请运行 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 计算机映像 (AMI) 的 ID。下面是一个典型的 register-image 输出示例。
        {
            "ImageId": "ami-0721ee000321c4685"
        }

    register-image 命令输出中指示的 AMI 也会显示在 AWS 管理控制台的 AMI 列表中。

  9. 要支持创建和配置 Horizon Cloud Connector AMI 实例,请准备类似于以下示例的启动脚本。
    #! /bin/bash
    /usr/bin/python3 /opt/vmware/bin/configure-adapter.py --sshEnable
    sudo useradd ccadmin
    echo -e 'password\npassword' | passwd ccadmin
    echo 'cs_ip cs_fqdn' >> /etc/hosts
    在该示例中,启动脚本支持以下配置:
    • 启用对 Horizon Cloud Connector 设备的 SSH 访问。
    • 在设备上创建具有指定密码 (password) 的 ccadmin 用户帐户。确保您定义了强密码。强密码至少为 8 个字符,并且必须包含一个或多个数字、大写和小写字母以及特殊字符。
    • 将连接服务器主机名 (cs_fqdn) 解析为连接服务器 IP 地址 (cs_ip)。

    您必须在下一步中启动 Horizon Cloud Connector AMI 实例时将此脚本添加到 user-data 中。

  10. 启动 Horizon Cloud Connector 的 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,然后单击启动。接下来,您可以继续按照向导提供部署的详细信息。

  11. Horizon Cloud Connector AMI 启动后,编辑该 AMI 实例的配置并移除启动脚本。

下一步做什么

按照 第一代租户 - 验证 Horizon 容器和虚拟设备是否准备好与第一代 Horizon 控制平面配对中的步骤继续执行容器载入工作流。然后,请继续 第一代租户 - 使用 Horizon Cloud Connector 配置门户完成 Horizon 容器与第一代 Horizon Cloud 的配对
注: 如果要激活默认情况下被停用的一个或多个云平面服务,则应在完成容器与云平面的配对之前将其激活。请参阅 第一代租户 - 为本机 Amazon EC2 上的 Horizon Cloud Connector 手动激活第一代 Horizon Cloud 控制平面服务