第 14 章 配置 Balancing-as-a-Service(LBaaS)

负载均衡即服务(Load Balancing-as-a-Service,简称 LBaaS)使 OpenStack Networking 可以在相关的实例中平均分配入站的网络流量。以下介绍了配置 OpenStack Networking 通过Open vSwitch(OVS)或 Linux Bridge 插件来使用 LBaaS 的方法。

Red Hat OpenStack Platform 5 包括了负载均衡即服务(Load Balancing-as-a-Service,简称 LBaaS)功能,它使 OpenStack Networking 可以在相关的实例中平均分配入站的网络流量。这保证了入站的网络流量所带来的工作负载可以以可预测的方式在多个实例中共享,从而达到有效使用系统资源的目的。入站的网络流量以下面的方法之一进行分配:

  • 轮转(Round robin) - 在多个实例间均匀轮转分配请求。
  • 源 IP - 从同一个源 IP 地址发送的请求会被分配到同一个实例。
  • 最少连接数量 - 把请求分配到有最少活跃连接数量的实例。

表 1:LBaaS 的特性

表 14.1. LBaaS 的特性

功能描述

监控程序

LBaaS 通过 ping、TCP、HTTP 和 HTTPS GET 的方法提供了可用性的监控功能。监控程序的主要功能是决定池的成员是否可以处理请求。

管理

LBaaS 由一组工具程序进行管理。管理员可以使用 REST API 进行自动化管理或编写相关的脚本;用户可以通过 CLI(neutron)或 OpenStack dashboard 对负载均衡功能进行管理。

连接限制

入站的网络流量可以通过连接数量进行限制,这将可以用来进行负载的控制,并防止 DoS(Denial of Service)攻击。

会话持久性

LBaaS 可以把入站的请求路由到一个池中的同一个实例中,从而实现了连接会话的持久性。LBaaS 支持基于 cookie 或基于源 IP 地址的路由算法。

注意

LBaaS 当前只支持 IPv4 地址。

14.1. OpenStack Networking 和 LBaaS 拓扑

OpenStack Networking(neutron)服务大体可以被分为两类。

1. - Neutron API 服务器 - 这个服务运行 OpenStack Networking API 服务器,它为最终用户提供了 API,以及和 OpenStack Networking 进行通讯的服务。这个服务器还负责和底层数据库进行交互来存储和获取租户网络、路由器、负载均衡设备以及其它信息。

2. - Neutron Agent(代理) - 为 OpenStack Networking 执行网络功能的服务:

  • neutron-dhcp-agent - 为租户私人网络管理 DHCP IP 地址。
  • neutron-l3-agent - 在租户私人网络、外部网络和其它系统间执行第 3 层路由。
  • neutron-lbaas-agent - 配置由租户创建的 LBaaS 路由器。
14.1.1. 服务的位置

OpenStack Networking 服务可以在同一个物理服务器上运行,也可以分别在专用的服务器上运行。

运行 API 服务的服务器通常被称为 Controller(控制器)节点,而运行 the OpenStack Networking agent 的服务器被称为 Network(网络)节点。在一个理想的生产环境中,这些组件应该分别运行在独立的专用节点上以获得好的性能和可扩展性。但是,在一个测试环境或一个概念验证(PoC)部署中,可以把这些组件集中在一个节点上运行。本章分别介绍了这两种情况。关于 Controller 节点配置的内容需要在 API 服务器上运行,关于 Network 节点的内容需要在运行 LBaaS agent 的服务器上运行。

注意

如果 Controller 和 Network 节点都在同一个物理节点上运行,则所有这些步骤都需要在这个服务器上运行。

14.2. 配置 LBaaS

这个过程配置 OpenStack Networking 来使用带有 Open vSwitch(OVS)或 Linux Bridge 插件的 LBaaS。在为基于 OVS 的插件(包括 BigSwitch、Floodlight、NEC、NSX 和 Ryu)启用 LBaaS 时需要 Open vSwitch LBaaS 驱动。

注意

在默认情况下, Red Hat OpenStack Plaftform 包括了对 LBaaS 的 HAProxy 驱动的支持。如需了解支持的其它服务供应商的驱动信息,请参阅 https://access.redhat.com/certification

在运行 neutron-server 服务的节点上执行这些操作:

在 Controller 节点上(API 服务器):

1. 通过 /etc/neutron/neutron_lbaas.conf 文件中的 service_provider 参数启用 HAProxy 插件。

service_provider = LOADBALANCER:Haproxy:neutron_lbaas.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default

2. 通过设置 /etc/neutron/neutron.conf 文件中的 service_plugin 值来启用 LBaaS 插件:

service_plugins = lbaas

3. 重启 _neutron-server services 服务以使所做的修改生效。

# systemctl restart neutron-server.service
14.2.1. 使用 Dashboard 启用 LBaaS 集成功能

通常情况下,Horizon dashboard 和 neutron API 服务运行在同一个节点上。您可以通过 Dashboard 中的项目界面启用负载均衡功能。在运行 Dashboard(horizon)服务的节点上执行这些步骤:

1./etc/openstack-dashboard/local_settings 文件中的 enable_lb 选项设置为 True

OPENSTACK_NEUTRON_NETWORK = {'enable_lb': True,

2. 重启 httpd 服务以使所做的修改生效。

# systemctl restart httpd.service

现在,您可以在 dashboard 项目中的网络列表中看到负载均衡管理选项。

14.3. 配置网络节点(运行 LBaaS Agent 的节点)

1./etc/neutron/lbaas_agent.ini 文件中启用 HAProxy load balancer:

device_driver = neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver

2./etc/neutron/lbaas_agent.ini 中配置 user_group 选项

# The user group
# user_group = nogroup
user_group = haproxy

3./etc/neutron/lbaas_agent.ini 文件中选择所需的驱动:

  • 如果使用 Open vSwitch 插件:
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
  • 如果使用 Linux Bridge 插件:
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

4.重启 neutron-lbaas-agent 服务以使所做的修改生效。

# systemctl restart neutron-lbaas-agent.service