如何在同时检查两个不同服务器上的haproxy检查,也许使用lua脚本?

我有两个服务器(A和B)用于相同的后端,其中一个为备份,但这些服务器依赖于另外两个服务器(A'和B')才能工作,每个服务器都有一个:如果服务器A启动并且服务器A',服务器A可以使用,如果服务器B启动并且服务器B'启动,可以使用服务器B。

目前,我无法告诉haproxy“如果服务器A启动并且服务器A'启动,使用服务器A”?

例如:

后端foo
        选项httpchk
        服务器A 10.99.98.97:8001检查inter 10s rise 2 fall 5
        服务器B 10.99.98.96:8001检查inter 10s rise 2 fall 5备份

后端酒吧
        选项httpchk
        服务器A' 10.99.98.95:8001检查inter 10s rise 2 fall 5
        服务器B' 10.99.98.94:8001检查inter 10s rise 2 fall 5备份

如果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在考虑服务器是“正在运行”之前测试两个不同的服务器?例如:

backend foo
        选项lua.check
        服务器A 10.99.98.978001 lua.check inter 10s rise 2 fall 5..

在lua.check中对A和A'端口上的请求进行检查…

对我的英语感到抱歉,

谢谢

点赞
用户33254
用户33254

如果您需要检查多个服务器的运行状况,可以使用外部检查来实现。这种技巧的基本概述是使用一个外部检查,然后调用您的 haproxy 状态套接字并检查不同后端服务器的运行状况。

这里是我写的一个例子,使用外部健康检查来检查所有同名的服务器的状态。请注意,有两个后端专门进行健康检查,例如它们未连接到任何前端:

https://gist.github.com/mweiss/125ce3eaf1f511d103c229f4b0cb419c

有关外部检查的更多信息,请参见:

https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#option%20external-check


另外,如果您可以妥协并只为您所依赖的服务器设置一个健康检查,您可能希望使用 track 选项。但是,如果您想要进行多个健康检查,则此选项无法解决您的问题。

2019-03-18 05:39:06