第 5 章 HAProxy 配置
本章解释了基本设置的配置,其中重点介绍了管理员为高可用性环境部署 HAProxy 服务时可能会遇到的常见配置选项。
HAProxy 拥有自己的一组调度算法,用于负载平衡。这些算法在 第 5.1 节 “HAProxy 调度算法” 中描述。
通过编辑
/etc/haproxy/haproxy.cfg
文件来配置 HAProxy。
使用 HAProxy 的负载平衡器配置由五个部分组成,用于配置:
- proxys 部分,由 4 个部分组成:
5.1. HAProxy 调度算法
负载平衡的 HAProxy 调度算法可以在
/etc/haproxy/haproxy.cfg
配置文件的 balance
部分中的 backend
参数中编辑。请注意,HAProxy 支持配置多个后端,每个后端都可以配置调度算法。
- Round-Robin (
roundrobin
) - 在实际服务器池之间按顺序分发每个请求。使用这种算法时,所有实际服务器都被视为相等,而不考虑容量或负载。此调度模型类似于循环 DNS,但由于它是基于网络连接,而非基于主机,因此更加精细。Load Balancer round-robin 调度也不会遭遇缓存的 DNS 查询导致的静默。但是,在 HAProxy 中,由于可以使用此调度程序实时配置服务器权重,活动服务器的数量将限制为每个后端 4095 个。
- 静态 Round-Robin (
static-rr
) - 与 round-Robin 一样,按顺序分发每个请求的实际服务器池,但不允许动态配置服务器权重。但是,由于服务器权重的静态性质,后端中活动服务器的数量没有限制。
- least-Connection (
leastconn
) - 将更多请求分发到活动连接较少的实际服务器。具有不同会话或连接长度的动态环境的管理员可能会发现此调度程序更适合其环境。它也适用于一组服务器具有不同容量的环境,因为管理员可以使用此调度程序实时调整权重。
- 源 (
source
) - 通过对请求源 IP 地址的请求进行哈希并除以所有正在运行的服务器的权重,从而将请求分发到服务器,以确定哪个服务器将获取该请求。在运行所有服务器的场景中,源 IP 请求将持续由相同的实际服务器提供。如果正在运行的服务器的数量或权重有变化,则会话可能会移到另一台服务器,因为哈希/轻量级结果已改变。
- URI (
uri
) - 通过哈希整个 URI(或 URI 的可配置部分)将请求分发到服务器,并按所有运行服务器的权重划分,以确定哪个服务器将请求该请求。在运行所有活动服务器的场景中,目标 IP 请求将持续由相同的实际服务器提供。此调度程序可进一步配置,例如 URI 目录部分开始时的字符长度,以计算哈希结果,以及 URI 中的目录深度(通过 URI 中的正斜杠指定)来计算哈希结果。
- URL 参数 (
url_param
) - 通过在源 URL 请求中查找特定参数字符串,并将哈希计算除以所有正在运行的服务器的权重,从而向服务器分发请求。如果 URL 中缺少 参数,调度程序默认为 round-robin 调度。修饰符可以基于 POST 参数以及等待限制,具体取决于管理员在计算哈希结果前分配给特定参数的最大八进制数。
- 标头名称(
hdr
) - 通过检查每个源 HTTP 请求中的特定标头名称并将哈希计算除以所有正在运行的服务器的权重,从而将请求分发到服务器。如果缺少标头,调度程序默认为 round-robin 调度。
- RDP Cookie (
rdp-cookie
) - 通过为每个 TCP 请求查找 RDP Cookie 并将哈希计算除以所有正在运行的服务器的权重,向服务器分发请求。如果缺少标头,调度程序默认为 round-robin 调度。此方法适用于持久性,因为它维护会话的完整性。