我有2个服务器(A和B)用于同一个后端,其中一个作为备份,但是这些服务器依赖于其他2个服务器(A'和B')工作,每个服务器一个:如果服务器是服务器A,则可以使用服务器A A已启动且服务器A'已启动,则服务器B已启动且服务器B'已启动则可以使用服务器B。
就目前而言,我无法告诉haproxy“如果服务器A启动并且服务器A'启动,请使用服务器A”?
例如:
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是否可以在考虑服务器“启动”之前测试两个不同的服务器?例如,我不想在前端部分对每个传入请求进行测试(性能问题)...
我想像这样的东西:
backend foo
option lua.check
server A 10.99.98.97:8001 lua.check inter 10s rise 2 fall 5..
请求lua上A和A'上的端口8001进行检查...
对不起,我的英语,
谢谢
答案 0 :(得分:0)
如果您需要检查多个服务器以进行运行状况检查,则可以使用一个技巧来进行外部检查。该技巧的基本摘要是进行外部检查,然后调用您的haproxy stats套接字并检查不同后端上服务器的运行状况检查。
这是我写的一个示例,该示例使用外部运行状况检查来检查所有相同名称的服务器的状态。请注意,有两个后端的唯一目的是进行健康检查,例如他们没有连接到任何前端:
https://gist.github.com/mweiss/125ce3eaf1f511d103c229f4b0cb419c
有关外部检查的更多信息,请参阅:
https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#option%20external-check
顺便说一句,如果您可以妥协并且仅对所依赖的服务器进行一次运行状况检查,则可能需要使用track选项。但是,如果您要进行多个运行状况检查,这不能解决您的问题。