第 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 文件。