HAProxy配置external-check后仍提示需启用该选项的问题咨询
HAProxy配置external-check后仍提示需启用该选项的问题咨询
我来帮你梳理下这个问题的根源,其实是健康检查方式冲突导致的:
你在listen primary区块里同时配置了两种互斥的健康检查机制:
- 一种是HTTP检查:
option httpchk OPTIONS /master+http-check expect status 200 - 另一种是外部脚本检查:
option external-check+ 相关的路径/命令配置
HAProxy在同一个proxy实例里只能启用一种健康检查方式,当它检测到你同时配置了两种时,会优先使用HTTP检查,这就导致你的external-check相关配置被直接忽略了——所以日志才会提示“需要启用option external-check”,本质是因为当前生效的是HTTP检查,external-check的配置根本没被激活。
解决办法
根据你的实际需求二选一:
如果要使用外部脚本做健康检查
- 删掉
listen primary里的option httpchk OPTIONS /master和http-check expect status 200这两行 - 确认
/bin/ldapHealthCheck.sh脚本有可执行权限,且HAProxy的运行用户(haproxy)能正常访问和执行它 - 重启HAProxy服务,再查看日志应该就不会有警告了
- 删掉
如果要保留HTTP健康检查
- 删掉
listen primary里的option external-check、external-check path、external-check command这些配置 - 确保后端服务器的8008端口能正常响应OPTIONS请求并返回200状态码
- 删掉
补充说明
另外注意你在global区块里也配置了external-check,这个是全局开关,作用是允许整个HAProxy实例使用外部检查功能,但具体到每个proxy还需要单独声明option external-check来启用——不过你的问题核心还是两种检查方式冲突的问题,先解决冲突就能消除警告了。
备注:内容来源于stack exchange,提问作者Qcur




