如何使用 lua 脚本同时在 2 个不同的服务器上编写 haproxy 检查?
How to write haproxy check on 2 different servers in the same time maybe with a lua script?
我有 2 台服务器(A 和 B)用于同一后端,其中一台作为备份,但这些服务器依赖于另外 2 台服务器(A' 和 B')工作,每台服务器一台:可以使用服务器 A如果服务器 A 已启动并且服务器 A' 已启动,则可以使用服务器 B 如果服务器 B 已启动且服务器 B' 已启动。
目前,我无法告诉 haproxy "use server A if server A is up AND if server A' is up" ?
例如:
backend foo
option httpchk
server A 10.99.98.97:8001 check inter 10s rise 2 fall 5
server B 10.99.98.96:8001 check inter 10s rise 2 fall 5 backup
backend bar
option httpchk
server A' 10.99.98.95:8001 check inter 10s rise 2 fall 5
server B' 10.99.98.94:8001 check inter 10s rise 2 fall 5 backup
如果 A' 出现故障,我就不能再使用 A 但 haproxy 在这些测试中不知道这一点(我真的不需要后端栏,它只是为了显示问题所在)...由于不同的原因,我无法使用特定路径从 A 测试中检查服务器 A' :
backend foo
option httpchk GET /url_on_A_which_checks_A'
server A 10.99.98.97:8001 check inter 10s rise 2 fall 5..
我想知道是否可以使用 lua 在考虑服务器是 "up" 之前测试两个不同的服务器?例如,我不想在前端部分对每个传入请求进行测试(性能问题)...
我想是这样的:
backend foo
option lua.check
server A 10.99.98.97:8001 lua.check inter 10s rise 2 fall 5..
在 lua.check 中的 A 和 A' 上请求端口 8001...
对不起我的英语,
谢谢
如果您需要检查多台服务器以进行健康检查,您可以使用外部检查的技巧。该技巧的基本总结是进行外部检查,然后调用您的 haproxy stats 套接字并检查不同后端服务器的健康检查。
这是我编写的一个示例,它使用外部运行状况检查来检查所有同名服务器的状态。请注意,有两个后端的唯一目的是进行健康检查,例如他们没有连接到任何前端:
https://gist.github.com/mweiss/125ce3eaf1f511d103c229f4b0cb419c
有关外部检查的详细信息,请参阅:
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#option%20external-check
顺便说一句,如果您可以妥协并且只对您所依赖的服务器进行一次健康检查,您可能需要使用 track 选项。但是,如果您想进行多次健康检查,这并不能解决您的问题。
我有 2 台服务器(A 和 B)用于同一后端,其中一台作为备份,但这些服务器依赖于另外 2 台服务器(A' 和 B')工作,每台服务器一台:可以使用服务器 A如果服务器 A 已启动并且服务器 A' 已启动,则可以使用服务器 B 如果服务器 B 已启动且服务器 B' 已启动。
目前,我无法告诉 haproxy "use server A if server A is up AND if server A' is up" ?
例如:
backend foo
option httpchk
server A 10.99.98.97:8001 check inter 10s rise 2 fall 5
server B 10.99.98.96:8001 check inter 10s rise 2 fall 5 backup
backend bar
option httpchk
server A' 10.99.98.95:8001 check inter 10s rise 2 fall 5
server B' 10.99.98.94:8001 check inter 10s rise 2 fall 5 backup
如果 A' 出现故障,我就不能再使用 A 但 haproxy 在这些测试中不知道这一点(我真的不需要后端栏,它只是为了显示问题所在)...由于不同的原因,我无法使用特定路径从 A 测试中检查服务器 A' :
backend foo
option httpchk GET /url_on_A_which_checks_A'
server A 10.99.98.97:8001 check inter 10s rise 2 fall 5..
我想知道是否可以使用 lua 在考虑服务器是 "up" 之前测试两个不同的服务器?例如,我不想在前端部分对每个传入请求进行测试(性能问题)...
我想是这样的:
backend foo
option lua.check
server A 10.99.98.97:8001 lua.check inter 10s rise 2 fall 5..
在 lua.check 中的 A 和 A' 上请求端口 8001...
对不起我的英语,
谢谢
如果您需要检查多台服务器以进行健康检查,您可以使用外部检查的技巧。该技巧的基本总结是进行外部检查,然后调用您的 haproxy stats 套接字并检查不同后端服务器的健康检查。
这是我编写的一个示例,它使用外部运行状况检查来检查所有同名服务器的状态。请注意,有两个后端的唯一目的是进行健康检查,例如他们没有连接到任何前端:
https://gist.github.com/mweiss/125ce3eaf1f511d103c229f4b0cb419c
有关外部检查的详细信息,请参阅:
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#option%20external-check
顺便说一句,如果您可以妥协并且只对您所依赖的服务器进行一次健康检查,您可能需要使用 track 选项。但是,如果您想进行多次健康检查,这并不能解决您的问题。