第 5 章 使用 HAProxy 负载均衡流量

HAProxy 服务在高可用性集群中向 Controller 节点提供负载平衡,以及日志和示例配置。haproxy 软件包包含 haproxy 守护进程,它对应于同一名称的 systemd 服务。Pacemaker 将 HAProxy 服务作为一个名为 haproxy-bundle 的高可用服务进行管理。

5.1. HAProxy 如何工作

director 可以配置大多数 Red Hat OpenStack Platform 服务以使用 HAProxy 服务。director 在 /var/lib/config-data/puppet-generated/haproxy/haproxy.cfg 文件中配置这些服务,该文件指示 HAProxy 在每个 overcloud 节点上的专用容器中运行。

下表显示了 HAProxy 管理的服务列表:

表 5.1. 由 HAProxy 管理的服务

Aodh

cinder

glance_api

Gnocchi

haproxy.stats

heat_api

heat_cfn

Horizon

keystone_admin

keystone_public

mysql

neutron

nova_metadata

nova_novncproxy

nova_osapi

nova_placement

对于 haproxy.cfg 文件中的每个服务,您可以看到以下属性:

  • listen :侦听请求的服务名称。
  • bind :服务正在侦听的 IP 地址和 TCP 端口号。
  • 服务器 :使用 HAProxy、IP 地址和侦听端口的每个 Controller 节点服务器的名称,以及服务器的附加信息。

以下示例显示了 haproxy.cfg 文件中的 OpenStack Block Storage (cinder)服务配置:

listen cinder
  bind 172.16.0.10:8776
  bind 192.168.1.150:8776
  mode http
  http-request set-header X-Forwarded-Proto https if { ssl_fc }
  http-request set-header X-Forwarded-Proto http if !{ ssl_fc }
  option httpchk
  server overcloud-controller-0 172.16.0.13:8777 check fall 5 inter 2000 rise 2
  server overcloud-controller-1 172.16.0.14:8777 check fall 5 inter 2000 rise 2
  server overcloud-controller-2 172.16.0.15:8777 check fall 5 inter 2000 rise 2

本例输出显示了有关 OpenStack Block Storage (cinder)服务的以下信息:

  • 172.16.0.10:8776: 用于 overcloud 内部 API 网络(VLAN201)的虚拟 IP 地址和端口。
  • 192.168.1.150:8776: 外部网络(VLAN100)上的虚拟 IP 地址和端口,从 overcloud 外部访问 API 网络。
  • 8776 :OpenStack Block Storage (cinder)服务的端口号。
  • 服务器 :Controller 节点名称和 IP 地址。HAProxy 可以将对这些 IP 地址的请求定向到 服务器 输出中列出的其中一个 Controller 节点。
  • httpchk :在 Controller 节点服务器上启用健康检查。
  • fall 5 :要确定服务离线的失败健康检查数量。
  • 2000 年间:间隔(以毫秒为单位)。
  • 增加 2:成功健康检查的数量,以确定该服务是否正在运行。

有关您可以在 haproxy.cfg 文件中使用的设置的更多信息,请参阅安装 haproxy 软件包的任何节点上的 /usr/share/doc/haproxy-[VERSION]/configuration.txt 文件。