请按照以下步骤使用 NSX Cloud 提供的 Terraform 脚本和 NSX Cloud Marketplace 映像在 Microsoft Azure 中部署 NSX Cloud

前提条件

  • 确认您在 Microsoft 订阅中有权访问 NSX Cloud Marketplace 映像。
  • 确认您已在要部署 NSX Cloud 设备的订阅中接受 Microsoft Azure 的 Marketplace 法律条款。
  • 您必须在系统上安装并配置了 Microsoft Azure CLI。这是运行 Terraform 脚本中使用的 Azure API 以及对其进行身份验证所必需的。

    如果可能,请使用相同的系统运行用于访问 Microsoft 订阅的 Terraform 脚本。这会确保可以从系统中使用您的 Microsoft Azure 凭据,并且您不必与其他系统共享该信息。

    此外,作为安全建议,请在支持 Python 加密模块的 Linux/Unix 或 macOS 系统上运行这些脚本。

  • 确认您在计划运行 Terraform 脚本的系统上具有 Terraform 0.13 或更高版本的二进制文件。
  • 您必须在该系统上安装了 Python 3.0 或更高版本。

过程

  1. 登录到您的帐户并导航到以下位置以下载 Terraform 脚本:NSX > 驱动程序和工具 > VMware NSX Terraform 提供程序 > 转到下载 > 立即下载。例如,在登录到您的帐户后,转到驱动程序和工具的下载页面
  2. 提取名为 NSXCloudScriptsforAddingPublicCloudAccounts.tar.gz 的文件的内容。Terraform 脚本和相关的文件位于 NSXCloudScripts/cloud-native-deployment/azure/igw 文件夹中。
  3. 更新 Terraform 配置文件。
    1. config.auto.vars 中,添加以下信息:
      参数 描述
      subscription_id 提供您的 Microsoft Azure 帐户的订阅 ID。
      location 指定将在其中部署 NSX Cloud 管理 VNet 的 Microsoft Azure 位置。
      deployment_prefix

      这是在所有自动创建的实体前面添加的部署名称。确保这对于每个 Microsoft subscription_idlocation 是唯一的。

    2. credentials_nsx.auto.tfvars 中,添加以下信息:
      参数 描述
      mgr_public_key_path 这是要应用于 NSX Manager 设备的公钥的路径。
      csm_public_key_path 这是要应用于 CSM 设备的公钥的路径。
      license_key

      这是 NSX Manager 的许可证密钥。您必须具有 NSX Enterprise Plus 许可证。

    3. 验证高级配置信息,并根据需要在 advanced_config.auto.tfvars 文件中进行更新:
      参数 描述
      mgmt_vnet_address_space 这是新部署的 NSX Cloud 管理 VNet 的地址空间。
      mgmt_subnet_address_prefix 这是在 NSX Cloud 管理 VNet 中部署的 NSX Cloud 管理设备的子网。
  4. 按照指定的顺序运行以下命令:
    ~/terraform init 此命令将收集部署所需的所有模块。
    ~/terraform plan 该命令显示部署中涉及的步骤列表或过程蓝图。
    ~/terraform apply 此命令将执行脚本。

    如果在执行过程中出现错误,将显示相应的错误消息。在修复错误后,您可以从停止的位置继续进行部署。

  5. 按照以下步骤更改 Terraform 脚本为 NSX Manager 和 CSM 生成的密码。
    1. 在成功运行脚本后,记下 NSX Manager 和 CSM 的以下密码:
      • admin_password
      • root_password
      在部署结束时,将在屏幕上显示这些密码。您也可以在 NSXCloudScripts/cloud-native-deployment/azure/igw/terraform.tfstate 文件的 "outputs" 部分中找到这些密码,例如:
        "outputs": {
          "csm": {
            "value": {
              "admin_password": "<pwd>",
              "admin_username": "nsxadmin",
              "private_ip": "<private IP>",
              "public_ip": "<public IP>",
              "root_password": "<pwd>"
            },
          "mgrs": {
            "value": [
              {
                "admin_password": "<pwd>",
                "admin_username": "nsxadmin",
                "private_ip": "<private IP",
                "public_ip": "<public IP>",
                "root_password": "<pwd>"
              },
    2. 在 Microsoft Azure 中,导航到为 NSX Manager 和 CSM 创建的网络安全组(名为 <deployment_prefix>-nsx-mgr-sg<deployment_prefix>-nsx-csm-sg),并为 SSH 添加以下临时入站“允许”规则:
      优先级 名称 端口 协议 目标 操作
      1010 AllowInboundRuleSSH 22 TCP 任意 任意 允许
    3. 使用您的私钥登录到 NSX Manager 设备,并更改 Terraform 脚本生成的密码:
      $ ssh -i <nsx_mgr_key> nsxadmin@<NSX Manager public IP address>
      WARNING: Your password has expired. 
      You must change your password now and login again!
      Changing password for nsxadmin.
      (current) UNIX password: <Enter mgr_admin_pwd from the Terraform scripts>
      New password: <Enter new password conforming to NSX password complexity>
      Retype new password:
      passwd: password updated successfully
    4. 使用您的私钥登录到 CSM,并更改 Terraform 脚本生成的密码:
      $ ssh -i <nsx_csm_key> nsxadmin@<CSM public IP address>
      WARNING: Your password has expired. 
      You must change your password now and login again!
      Changing password for nsxadmin.
      (current) UNIX password: <Enter csm_admin_pwd from the Terraform scripts>
      New password: <Enter new password conforming to NSX password complexity>
      Retype new password:
      passwd: password updated successfully
  6. 使用您设置的新密码登录到 CSM 设备,然后运行以下 NSX CLI 命令以将 CSM 加入 NSX Manager 集群:
    join <nsx-manager-ip-address & port(optional)> cluster-id <nsx-manager-cluster-id> username <username> password <password> thumbprint <nsx-manager-api-thumbprint> 
    

    需要几分钟时间才能显示 CSM UI。在 CSM 设备 CLI 上运行 get cluster status 命令。如果状态为稳定,请继续执行下一步。

    您可以从任何 NSX Manager 节点运行 NSX CLI 命令 get cluster status,以获取 cluster-id。您可以通过在指定的 NSX Manager 上运行 get certificate api thumbprint 命令来获取 NSX Manager 指纹。有关 CLI 命令和 获取 NSX Manager 的指纹 的详细信息,请参见 NSX 命令行界面参考
    注: 如果丢失了将 CSM 设备加入到的 NSX Manager 节点,您可以运行该 NSX CLI 命令以将 CSM 加入其他正常运行的 NSX Manager 节点之一,也可以使用名为 <deployment_prefix>nsx-mgr-image 的映像文件重新部署丢失的 NSX Manager 节点;在该节点恢复联机时,CSM 将自动重新加入该节点。有关详细信息,请参见《 NSX 管理指南》中的 通过 nsx_mgr_image 在 Microsoft Azure 中重新部署 NSX Manager
  7. 要将 CSM 连接到 NSX Manager,请在“NSX Manager 凭据”屏幕中添加相关的详细信息,如将 CSM 与 NSX Manager 相连接中所述。

结果

这些脚本在您的 Microsoft Azure 订阅中部署以下内容:
  • 托管 NSX Cloud 管理设备的 VNet。该 VNet 命名为 <deployment_prefix>-nsx-mgmt-vnet
  • 可用性集,其中部署了 NSX Manager 集群的三个节点。该可用性集命名为 <deployment_prefix>-nsx-aset
  • 名为 <deployment_prefix>nsx-mgmt-rg 的 Microsoft Azure 资源组。
  • 每个 NSX Manager 节点和 CSM 设备的以下资源:
    1. CSM 的虚拟机(名为 <deployment_prefix>nsx-csm)以及 NSX Manager 集群的虚拟机(名为 <deployment_prefix>nsx-mgr0<deployment_prefix>nsx-mgr1<deployment_prefix>nsx-mgr2)。
    2. 每个虚拟机的操作系统磁盘。
    3. 每个虚拟机的网络接口 (NIC)。
    4. 每个虚拟机的公用 IP 地址。
    5. 每个虚拟机的数据磁盘。
  • 允许这些设备进行连接的 NSX Cloud 管理组件的网络安全组。
    • <deployment_prefix>-nsx-mgr-sg:
      表 1. 使用 Terraform 脚本部署的 NSX Manager 的入站规则
      优先级 名称 端口 协议 目标 操作
      1000 AllowInboundRuleAPI 443 TCP 任意 任意 允许
      表 2. 使用 Terraform 脚本部署的 NSX Manager 的出站规则
      优先级 名称 端口 协议 目标 操作
      100 AllowOutboundRuleAPI 任意 TCP 任意 任意 允许
    • <deployment_prefix>-nsx-csm-sg:
      表 3. 使用 Terraform 脚本部署的 CSM 的入站规则
      优先级 名称 端口 协议 目标 操作
      1000 AllowInboundRuleAPI 443 TCP 任意 任意 允许
      表 4. 使用 Terraform 脚本部署的 CSM 的出站规则
      优先级 名称 端口 协议 目标 操作
      100 AllowOutboundRuleAPI 80、443 TCP 任意 任意 允许
    注: 请考虑更新这些自动创建的网络安全组的 Source 字段,以将其更改为您希望从中访问 NSX Manager 和 CSM 的一组有限的 CIDR。默认的 Any 不太安全。
  • 具有文件库策略的 Microsoft Azure Recovery Service Vault,用于对所有三个 NSX Manager 节点和 CSM 设备执行定期备份。文件库策略命名为 <deployment_prefix>-nsx-vault,默认备份计划设置为:每天晚上 11 点 (UTC) 重复执行。

    有关还原选项的详细信息,请参见《NSX 管理指南》中的在 Microsoft Azure 中管理 NSX Manager 和 CSM 备份和还原

下一步做什么

在 VNet 中部署 PCG