本节列出了在 NSX Advanced Load Balancer 无权访问 OpenStack (Orchestrator) 时,将 NSX Advanced Load Balancer 安装到 OpenStack 云的步骤。

在无权访问模式下,NSX Advanced Load Balancer 无权访问 OpenStack (Orchestrator)。只有管理员能够手动添加、移除或修改服务引擎的属性。NSX Advanced Load Balancer 不能自动发现服务器和网络;必须手动配置它们。

以下是在无权访问 OpenStack 云中安装 NSX Advanced Load Balancer 的步骤:

前提条件

必须在无 Orchestrator 模式下实例化 NSX Advanced Load Balancer

过程

  1. 导航到基础架构 > ,以创建一个 OpenStack 无权访问云。
  2. 选中 DHCP 部分中的相关复选框,以选择使用 IPv4 DHCP使用 IPv6 DHCP 作为 IP 地址管理。


  3. 下载 SE qcow2 映像,因为它将被推送到 Glance。


  4. 登录到相应租户(在本例中为“admin”)下的 OpenStack 实例,然后导航到项目 > 计算 > 映像。单击创建映像。从格式下拉列表中选择 QCOW2 选项,并提供下载的 SE QCOW2 映像文件。


  5. se.qcow2 映像上载到 Glance 中。


    • 只有在没有可作为 NSX Advanced Load Balancer 网络的现有网络时,才需要这样做。

    • SE 将使用该网络与控制器进行通信。因此,请创建新的网络或使用现有的网络,并确保在该网络上创建的虚拟机可以访问控制器。

  6. 导航到项目 > 网络 > 网络,以创建 avimgmt 网络。在网络选项卡中指定网络名称。还要在子网选项卡中为网络提供相应的子网。这将创建一个与网络关联的子网。指定有效的网络地址网关 IP。如果未指定网关 IP,则默认情况下将分配网络的第一个值。选中禁用网关框以禁用网关 IP。可在子网详细信息选项卡中指定高级配置详细信息。
    • 只有在需要创建新的外部网络时,才需要执行该步骤。创建将成为出站网络并提供浮动 IP 访问的网络。例如,您可以在网络选项卡中提供 provider1 作为网络名称,并在相应的选项卡中提供其他详细信息。

    • 只有在需要为外部连接创建新的路由器时,才需要执行该步骤。您可以提供路由器名称、管理状态和外部网络详细信息以创建路由器。

  7. 导航到项目 > 网络 > 路由器,以创建路由器。单击创建路由器


  8. 此外,您还可以在 avimgmt 网络中部署 Web 服务器以进行测试。这可能是操作系统类型的服务器,例如,网络拓扑如下所示:
  9. 导航到项目 > 网络 > 安全组以创建一个安全组,并将其与服务引擎相关联,以确保允许 ICMP 流量以及 SSH 和 HTTP 流量。
  10. 导航到项目 > 计算 > 实例,以创建一个 NSX Advanced Load Balancer SE 实例。单击启动实例。也可以使用 Heat 模板创建 SE。有关该内容的更多信息,请参阅使用 Heat 模板在无权访问 OpenStack 云中创建服务引擎
  11. 选项卡中为需要实例化的 SE 选择相应的 qcow2 映像。
  12. 类型选项卡中为 SE 选择相应的类型。在本例中,它将是 m1.small
  13. 网络选项卡中选择 avimgmt 网络以实例化 SE。
  14. 此时将生成 SE。
  15. 将一个浮动 IP 与该实例相关联。只有在无法直接访问 SE 时,才需要执行该步骤。
  16. 将另一个接口连接到 SE。例如,数据 vNIC。
  17. 将创建具有一个管理 vNIC 和一个数据 vNIC 的 SE,后者与一个浮动 IP 相关联。


    • 要将 SE 连接到控制器,请从 NSX Advanced Load Balancer UI 中为相应云复制 SE 的令牌(如“为 VMware vCenter 安装 NSX Advanced Load Balancer”一节中所述),并运行 SE 上 /opt/avi/scripts/init_system.py 中的脚本,该脚本随后会要求提供控制器 IP 和令牌(令牌在 60 分钟后过期,并且仅适用于单个 SE)。您需要具有 root 访问特权才能运行该脚本。

      root@Avi-Service-Engine:/opt/avi/scripts# ./init_system.py -h
      usage: init_system.py [-h] -c CONTROLLER [-d] [-i MGMT_IP] [-m MGMT_MASK]
      [-g GATEWAY] [-t TOKEN] [-r]
      optional arguments:
      -h, --help show this help message and exit
      -c CONTROLLER, --controller CONTROLLER
      Controller IP address.
      -d, --dhcp DHCP
      -i MGMT_IP, --mgmt-ip MGMT_IP
      IP address for Management Interface (eg.
      192.168.10.10)
      -m MGMT_MASK, --mgmt-mask MGMT_MASK
      Subnet mask for Management interface (eg. 24 or
      255.255.255.0)
      -g GATEWAY, --gateway GATEWAY
      Default gateway
      -t TOKEN, --token TOKEN
      Auth token generated in the Controller for this SE
      -r, --restart Restart SE for changes to take effect
      root@Avi-Service-Engine:/opt/avi/scripts# ./init_system.py -c 172.16.0.10 -d -i 172.16.0.7 -m 255.255.255.0 -g 172.16.0.1 -t c708a2cd-69e2-4057-923d-a09de94914f6 -r
      

      重新引导 SE 以使其连接到控制器。

  18. 等待 UI 中相应云下面的基础架构 > 服务引擎列表中显示 NSX Advanced Load Balancer SE。
  19. 编辑每个 SE,并为每个数据网络启用 DHCP。


  20. 创建一个虚拟服务,然后从数据网络中选择一个 IP 地址。

    由于这是一个无权访问云,您无法在虚拟服务配置中配置“浮动 VIP”。要使控制器与 OpenStack Nova 进行通信以将分配的浮动 IP 分配给虚拟 IP 地址,您需要通过 CLI 为具有 VIP 的 Neutron 端口创建绑定关联,如下所示。

    如果您需要将一个浮动 IP 用于 VIP 地址,请在 VIP 地址所在的网络中创建一个端口。

    $> neutron port-create --fixed-ip subnet_id=subnet ID of the network in which VIP is placed,ip_address=VIP IP --name anyname network ID in which the VIP is being placed
    

    上述语法的示例如下所示:

    $> neutron port-create --fixed-ip subnet_id=55daee6b-32b7-4f9c-945e-bcd2acb7272f,ip_address=172.16.0.231 --name test200vip f14eb427-4087-4dce-8477-479e10804ba1
    

    创建一个浮动 IP,并将其与该 VIP 地址相关联。

    $> neutron floatingip-associate bf7c870e-6608-4512-b73d-faab5b18af04 ff67ae44-9874-43e6-a194-f336b9b1d7b5


  21. 创建一个要与上面创建的虚拟服务关联的服务器池。在本例中,这将是在步骤 16 中使用 Horizon UI 创建的服务器。




    您无法使用 select-servers-by-network 功能,因为您无权访问基础架构管理器。因此,请手动指定 IP 地址。

  22. 虚拟服务应已启动并正在运行,如下所示:


  23. 检查相应的服务引擎,以验证 VIP 是否与之关联。


    • allowed-address-pairs Neutron 扩展允许从端口中输出具有特定 CIDR 的流量。NSX Advanced Load Balancer 使用该扩展将 VIP 放置在 SE 数据端口上,从而允许从这些数据端口中输出 VIP 流量。

    • 在 SE 端口上添加 allowed-address-pairs,以便安全组不会丢弃这些数据包。对于 ML2/OVS 插件,您可以为每个 SE 端口或特定 VIP IP 地址添加一次值为 0.0.0.0/0allowed-address-pairs

      neutron port-update da0e1e9a-312d-41c2-b15f-f10ac344ef03 --allowed-address-pairs type=dict list=true ip_address=192.168.1.222/32
    • 如果为 True,将使用 allowed-address-pairs 扩展。如果底层网络插件不支持该功能,除非使用其他方法达到相同的效果,否则,VIP 流量无法正常传输。如果底层网络支持在端口上禁用安全性/防火墙/仿冒筛选器规则,则可以禁用该选项。

    • 如果提供了端口安全功能,您可以在 SE 的数据 vNIC Neutron 端口上停用端口安全功能。这是上述情况的另一种替代方法。确保可以通过 SSH 访问其中一个实例(服务引擎),如下所示:



  24. 可选:如果需要使用 NSX Advanced Load Balancer IPAM,也可以通过创建 IPAM 网络、IPAM 模板并将其关联到云来实现,如此一来,将可以自动为 VIP 分配 IP。