HAProxy基于remote agent-check触发Lua脚本返回204配置问题
HAProxy直接调用Lua返回204配置方案
前置准备
首先确认你的HAProxy已编译Lua支持,可执行haproxy -vv查看输出中是否存在Built with Lua相关标识。
配置步骤
- 加载Lua脚本
在haproxy.cfg的global配置段新增加载声明,路径替换为你实际存放204.lua的文件路径:
global # 其余原有全局配置保持不变 lua-load /etc/haproxy/204.lua
- 调整backend配置
修改你现有的some-backend段,保留agent-check配置仅用于获取权重值,新增ACL判断规则,权重高于0时直接调用你注册的Lua服务返回204:
backend some-backend # 原有正常业务后端服务器配置保留(如果有) # server app-server-1 x.x.x.x:port check ... # server app-server-2 x.x.x.x:port check ... # 仅保留dummy server用于拉取agent权重,默认权重设为0避免误转发 server dummy-nginx dummy-nginx weight 0 check maxqueue 1 maxconn 20000 slowstart 180s agent-check agent-inter 15s agent-addr k8s-service-addr agent-port 9999 # 新增ACL判断:当dummy server的agent返回权重高于0时触发204返回 acl need_return_204 srv_weight(dummy-nginx) gt 0 use-service lua.204-response if need_return_204 # 权重不满足条件时默认转发到正常业务后端(可根据你的原有逻辑调整) default-server inter 10s fall 3 rise 2
配置校验
修改完成后执行以下命令检查配置合法性,无报错后重启HAProxy即可生效:
haproxy -c -f /etc/haproxy/haproxy.cfg
内容的提问来源于stack exchange,提问作者liad.startio
相关产品推荐
相关产品推荐

