本节介绍了 NSX Advanced Load Balancer 的 OpenStack 可用区感知的工作原理。
NSX Advanced Load Balancer OpenStack 部署能够识别 OpenStack 可用区。跨 OpenStack 可用区部署虚拟服务的冗余资源(例如,服务引擎、池成员)时,可降低应用程序中断的可能性。
OpenStack 可用区不会隔离子网。相反,子网将跨多个 OpenStack 可用区;默认情况下,所有主机可以访问所有子网。因此,使用此功能并不能保证应用程序免受网络中断的影响。
部署 OpenStack 可用区
NSX Advanced Load Balancer 的 OpenStack 可用区感知会导致 SE 组中的 SE 部署在多个 OpenStack 可用区中。
根据上述流程,
定义了两个可用区,即 AZ-1 和 AZ-2。图中显示,从时间 t0 开始,一个 SE 组扩展到总共 4 个 SE。
在 t1 时,在 AZ-1 中部署了 SE1。在扩展该组时,NSX Advanced Load Balancer 的目标是确保该组在每个可用区中至少有一个 SE。
需要部署 SE2 时,NSX Advanced Load Balancer 尝试将其放置在 AZ-2 中。此放置在 t2 时成功完成。
在后续 SE 部署中,NSX Advanced Load Balancer 会从所有定义的可用区中随机选择。
NSX Advanced Load Balancer 部署 SE3 时,随机选择了 AZ-2。一段时间后,部署了 SE4;这次随机选择了 AZ-1。
但它本可以选择 AZ-2。NSX Advanced Load Balancer 依靠其随机算法随时间在可用区之间均匀分配 SE。在选择可用区时,它不会考虑可用区的现有 SE 占用情况。
如果某个可用区发生故障,NSX Advanced Load Balancer 会将受影响的 SE 重新部署到其余正常运行的可用区中,从而始终确保每个可用区中至少运行一个 SE。
通过 NSX Advanced Load Balancer UI 配置 OpenStack 可用区
导航到编辑图标。
以查看 SE 组列表。单击在显示 SE 组编辑器时,单击高级选项卡以显示 SE 放置选项。选择任意(服务引擎范围的默认值)以将 NSX Advanced Load Balancer OpenStack 可用区感知功能保持关闭状态。否则,请选择可用区,然后从下拉菜单中选择一个或多个可用区。
通过 NSX Advanced Load Balancer CLI 配置 OpenStack 可用区
通过向 ServiceEngineGroup 对象中的重复组 openstack_availability_zones 分配值,指定一个或多个 OpenStack 可用区。如果定义了一个或多个可用区,NSX Advanced Load Balancer 会将 SE 组成员部署到可用区中。如果不指定任何 openstack_availability_zones 值,则会使用默认值(无可用区感知)。
NSX Advanced Load Balancer Shell 的 configure 命令会显示 ServiceEngineGroup 对象中的参数值,并允许用户进行更改。以下是一个简短的示例输出,为了清楚起见,此处移除了大部分参数。
admin:jenkins-func-placement-controller]: > configure serviceenginegroup Default-Group Updating an existing object. Currently, the object is: +---------------------------------------+---------------------------------------------------------+ | Field | Value | +---------------------------------------+---------------------------------------------------------+ | uuid | serviceenginegroup-5c82725c-8932-4f8a-88f7-f8063546c293 | | name | Default-Group | | max_vs_per_se | 4 | | min_scaleout_per_vs | 1 | | max_scaleout_per_vs | 2 | | max_se | 4 | . . . . . . . . . | openstack_availability_zones[1] | testAZ | | openstack_availability_zones[2] | nova | . . . . . . . . . +---------------------------------------+---------------------------------------------------------+