我在集群中使用 HAProxy 1.3.15,集群后面有几台运行 IIS7(Win2k8)的服务器。有时,当我检查“状态”时,我看到“UP”的时间量已重置。我在服务器上看不到任何指示任何故障或重置的信息,但我仍然觉得很奇怪。
所以,我想我有两个问题:
- 为了报告目的,HAProxy 如何确定服务器是否处于“UP”状态?
- 正常运行时间信息有多可靠?
答案1
“正常运行时间”是指自 haproxy 上次将其退出轮换以来服务器的正常运行时间。
因此,如果连续几次检查的响应时间超过一定值,则正常运行时间将被重置。
这些检查由定义时的检查选项定义server
:
查看
此选项启用服务器上的运行状况检查。默认情况下,服务器始终被视为可用。如果设置了“check”,服务器将定期接受运行状况检查,以确保它确实能够处理请求。发送测试的默认地址和端口是服务器的地址和端口,默认源与后端中定义的源相同。可以使用“addr”参数更改地址,使用“port”参数更改端口,使用“source”地址更改源地址,使用“inter”、“rise”和“fall”参数更改间隔和计时器。
因此,“少数检查”由以下因素控制:
fall <count>
The "fall" parameter states that a server will be considered as dead after <count> consecutive unsuccessful health checks. This value defaults to 3 if unspecified. See also the "check", "inter" and "rise" parameters.
响应时间或计时器由以下因素控制inter
:
“inter”参数将两次连续健康检查之间的间隔设置为毫秒。如果未指定,则延迟默认为 2000 毫秒。还可以使用“fastinter”和“downinter”根据服务器状态优化检查之间的延迟:
服务器状态 使用的间隔 100% 上升(非过渡) “inter” 过渡上升(下降) 过渡下降(上升),或尚未选中 如果已设置则为“fastinter”,否则为“inter” 100% 下降(非过渡) 如果已设置则为“downinter”,否则为“inter” 与其他所有基于时间的参数一样,它们可以以任何其他显式单位输入,包括 { us、ms、s、m、h、d }。如果未设置超时检查,“inter”参数还可用作发送到服务器的健康检查的超时。为了减少在同一硬件上托管多个服务器时的“共振”效应,所有服务器的健康检查都以它们之间的小时间偏移开始。还可以使用全局“spread-checks”关键字在健康检查间隔中添加一些随机噪声。例如,当许多后端使用相同的服务器时,这很有意义。
更多详情http://code.google.com/p/haproxy-docs/wiki/ServerOptions。