我正在尝试思考在与常规流量不同的端口上进行 haproxy 运行状况检查的优缺点。
如果服务器过载,则在不同端口上进行健康检查可能会将服务器标记为已启动,即使在过载时也是如此。我认为这是一件好事,因为让服务器脱机可能会使过载问题变得更糟,但我想确认这是有道理的。不过,我似乎找不到关于权衡的任何好的文档,并且想知道是否有人对权衡有很好的分析。
小智 6
该port
关键字通常用于address
将健康检查发送到其他地方,而不是直接发送到您正在检查的服务。一个示例可能是启用option httpchk
监视非 HTTP 服务。然后你要做的是拥有一个兼容 HTTP 的服务,当被查询时,它可以对你实际测试的服务执行复杂的健康检查。
以上是现在经常做的agent-check
,但有些人更喜欢使用 HTTP 接口。
这也与服务器负载无关,唯一的想法是将健康检查发送到其他一些服务,而不是直接监控的服务,它更有能力测试实际服务(可能使用更复杂的逻辑)并返回结果。例如,可以有一个 MySQL 后端,它option mysql-check
可以通过 PHP 脚本进行测试,而不是仅针对身份验证进行测试,例如,检查备份是否正在运行以及是否返回 5xx HTTP 错误。配置可能是这样的:
backend mysql
mode tcp
option httpchk GET /mysql-status.php
server mysqlserver 10.0.0.1:3306 check port 80
Run Code Online (Sandbox Code Playgroud)