本节列出了在 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。
过程
- 导航到基础架构 > 云,以创建一个 OpenStack 无权访问云。
- 选中 DHCP 部分中的相关复选框,以选择使用 IPv4 DHCP 或使用 IPv6 DHCP 作为 IP 地址管理。
- 下载 SE qcow2 映像,因为它将被推送到 Glance。
- 登录到相应租户(在本例中为“admin”)下的 OpenStack 实例,然后导航到项目 > 计算 > 映像。单击创建映像。从格式下拉列表中选择 QCOW2 选项,并提供下载的 SE QCOW2 映像文件。
- 将 se.qcow2 映像上载到 Glance 中。
只有在没有可作为 NSX Advanced Load Balancer 网络的现有网络时,才需要这样做。
SE 将使用该网络与控制器进行通信。因此,请创建新的网络或使用现有的网络,并确保在该网络上创建的虚拟机可以访问控制器。
- 导航到项目 > 网络 > 网络,以创建
avimgmt
网络。在网络选项卡中指定网络名称。还要在子网选项卡中为网络提供相应的子网。这将创建一个与网络关联的子网。指定有效的网络地址和网关 IP。如果未指定网关 IP,则默认情况下将分配网络的第一个值。选中禁用网关框以禁用网关 IP。可在子网详细信息选项卡中指定高级配置详细信息。只有在需要创建新的外部网络时,才需要执行该步骤。创建将成为出站网络并提供浮动 IP 访问的网络。例如,您可以在网络选项卡中提供 provider1 作为网络名称,并在相应的选项卡中提供其他详细信息。
只有在需要为外部连接创建新的路由器时,才需要执行该步骤。您可以提供路由器名称、管理状态和外部网络详细信息以创建路由器。
- 导航到项目 > 网络 > 路由器,以创建路由器。单击创建路由器。
- 此外,您还可以在
avimgmt
网络中部署 Web 服务器以进行测试。这可能是操作系统类型的服务器,例如,网络拓扑如下所示: - 导航到项目 > 网络 > 安全组以创建一个安全组,并将其与服务引擎相关联,以确保允许 ICMP 流量以及 SSH 和 HTTP 流量。
- 导航到项目 > 计算 > 实例,以创建一个 NSX Advanced Load Balancer SE 实例。单击启动实例。也可以使用 Heat 模板创建 SE。有关该内容的更多信息,请参阅使用 Heat 模板在无权访问 OpenStack 云中创建服务引擎。
- 从源选项卡中为需要实例化的 SE 选择相应的 qcow2 映像。
- 从类型选项卡中为 SE 选择相应的类型。在本例中,它将是 m1.small。
- 从网络选项卡中选择 avimgmt 网络以实例化 SE。
- 此时将生成 SE。
- 将一个浮动 IP 与该实例相关联。只有在无法直接访问 SE 时,才需要执行该步骤。
- 将另一个接口连接到 SE。例如,数据 vNIC。
- 将创建具有一个管理 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 以使其连接到控制器。
- 等待 UI 中相应云下面的基础架构 > 云服务引擎列表中显示 NSX Advanced Load Balancer SE。
- 编辑每个 SE,并为每个数据网络启用 DHCP。
- 创建一个虚拟服务,然后从数据网络中选择一个 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
- 创建一个要与上面创建的虚拟服务关联的服务器池。在本例中,这将是在步骤 16 中使用 Horizon UI 创建的服务器。
您无法使用
select-servers-by-network
功能,因为您无权访问基础架构管理器。因此,请手动指定 IP 地址。 - 虚拟服务应已启动并正在运行,如下所示:
- 检查相应的服务引擎,以验证 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/0
的allowed-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 访问其中一个实例(服务引擎),如下所示:
- 可选:如果需要使用 NSX Advanced Load Balancer IPAM,也可以通过创建 IPAM 网络、IPAM 模板并将其关联到云来实现,如此一来,将可以自动为 VIP 分配 IP。