第 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/etc/haproxy/haproxy.cfg
文件中配置这些服务,该文件指示 HAProxy 在每个 overcloud 节点上的专用容器中运行。
下表显示了 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 端口号。
- server:使用 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 中使用的 Internal API 网络 (VLAN201) 的虚拟 IP 地址和端口。 -
192.168.1.150:8776
:外部网络(VLAN100)上的虚拟 IP 地址和端口,可从 overcloud 外部访问 API 网络。 -
8776
: OpenStack Block Storage (cinder)服务侦听的端口。 -
Server
:Controller 节点名称和 IP 地址。HAProxy 可以将对这些 IP 地址的请求定向到服务器
输出中列出的其中一个 Controller 节点。 -
httpchk
:启用 Controller 节点服务器上的健康检查。 -
回退到 5
:用于确定服务离线的健康检查数量。 -
inter 2000
: 以毫秒为单位,两个连续健康检查之间的间隔。 -
增长
2:用于确定服务是否正在运行的健康检查数量。
有关您可以在 haproxy.cfg
文件中使用的设置的更多信息,请参阅安装 haproxy
软件包的任何节点上的 /usr/share/doc/haproxy-[VERSION]/configuration.txt
文件。