如何使haproxy向节点分配两个以下请求
How to make haproxy dispense two following requests to a node
在双节点场景中,使用 roundrobin,我希望 haproxy 在切换到下一个节点之前向每个节点分配两个请求。
我有一个消息传递应用程序,它发出一个获取消息 ID 的请求,然后发出下一个发送消息的请求。
如果我在两台后端服务器上使用标准循环算法,这会导致一台服务器只收到 messageID 请求,而另一台服务器执行所有消息发送。
这并不是真正的平衡,因为提供 messageIDs 对服务器来说很简单,而处理消息(最多可达几百兆字节)则全部由另一个节点完成。
我查看了加权循环法,但如果对两个服务器使用权重 2 时似乎无法解决问题,因为权重似乎是相对于彼此计算的。
我很高兴得到任何提示,如何在发送两个请求而不是一个请求后实现 haproxy 切换后端节点。
这是我当前的配置,它仍然导致一个更清晰的这里那里一个循环模式:
### frontend XTA Entry TLS/CA
frontend GMM_XTA_Entry_TLS_CA
mode tcp
bind 10.200.0.20:8444
default_backend GMM_XTA_Entrypoint_TLS_CA
### backend XTA Entry TLS/CA
backend GMM_XTA_Entrypoint_TLS_CA
mode tcp
server GMMAPPLB1-XTA-CA 10.200.0.21:8444 check port 8444 inter 1s rise 2 fall 3 weight 2
server GMMAPPLB2-XTA-CA 10.200.0.22:8444 check port 8444 inter 1s rise 2 fall 3 weight 2
嗯,如前所述,我需要一个 "two requests here, two requests there" 循环模式,但它一直在做 "one here, one there"。
很高兴得到任何提示,干杯,
阿伦德
要在请求一次发送到服务器 2 的情况下获得所需的行为,您可以为每个后端添加一个额外的连续服务器行,如下所示:
backend GMM_XTA_Entrypoint_TLS_CA
balance roundrobin
mode tcp
server GMMAPPLB1-XTA-CA_1 10.200.0.21:8444 check port 8444 inter 1s rise 2 fall 3
server GMMAPPLB1-XTA-CA_2 10.200.0.21:8444 track GMMAPPLB1-XTA-CA_1
server GMMAPPLB2-XTA-CA_1 10.200.0.22:8444 check port 8444 inter 1s rise 2 fall 3
server GMMAPPLB2-XTA-CA_2 10.200.0.22:8444 track GMMAPPLB2-XTA-CA_1
但是,如果您可以使用 HAProxy 1.9 或更高版本,您还可以使用 balance random
选项,该选项应该在您的服务器之间随机平均分配请求。我认为这可能更直接地解决你上面所说的平衡问题。此外,如果请求类型发生变化,使用 balance random
仍会随机平衡您的请求。
在后端使用 4 个服务器条目的建议答案完成了这项工作。
我不确定它是否是最优雅的解决方案,但它确实帮助我更多地了解后端的使用,再次感谢。
在双节点场景中,使用 roundrobin,我希望 haproxy 在切换到下一个节点之前向每个节点分配两个请求。
我有一个消息传递应用程序,它发出一个获取消息 ID 的请求,然后发出下一个发送消息的请求。
如果我在两台后端服务器上使用标准循环算法,这会导致一台服务器只收到 messageID 请求,而另一台服务器执行所有消息发送。
这并不是真正的平衡,因为提供 messageIDs 对服务器来说很简单,而处理消息(最多可达几百兆字节)则全部由另一个节点完成。
我查看了加权循环法,但如果对两个服务器使用权重 2 时似乎无法解决问题,因为权重似乎是相对于彼此计算的。
我很高兴得到任何提示,如何在发送两个请求而不是一个请求后实现 haproxy 切换后端节点。
这是我当前的配置,它仍然导致一个更清晰的这里那里一个循环模式:
### frontend XTA Entry TLS/CA
frontend GMM_XTA_Entry_TLS_CA
mode tcp
bind 10.200.0.20:8444
default_backend GMM_XTA_Entrypoint_TLS_CA
### backend XTA Entry TLS/CA
backend GMM_XTA_Entrypoint_TLS_CA
mode tcp
server GMMAPPLB1-XTA-CA 10.200.0.21:8444 check port 8444 inter 1s rise 2 fall 3 weight 2
server GMMAPPLB2-XTA-CA 10.200.0.22:8444 check port 8444 inter 1s rise 2 fall 3 weight 2
嗯,如前所述,我需要一个 "two requests here, two requests there" 循环模式,但它一直在做 "one here, one there"。
很高兴得到任何提示,干杯, 阿伦德
要在请求一次发送到服务器 2 的情况下获得所需的行为,您可以为每个后端添加一个额外的连续服务器行,如下所示:
backend GMM_XTA_Entrypoint_TLS_CA
balance roundrobin
mode tcp
server GMMAPPLB1-XTA-CA_1 10.200.0.21:8444 check port 8444 inter 1s rise 2 fall 3
server GMMAPPLB1-XTA-CA_2 10.200.0.21:8444 track GMMAPPLB1-XTA-CA_1
server GMMAPPLB2-XTA-CA_1 10.200.0.22:8444 check port 8444 inter 1s rise 2 fall 3
server GMMAPPLB2-XTA-CA_2 10.200.0.22:8444 track GMMAPPLB2-XTA-CA_1
但是,如果您可以使用 HAProxy 1.9 或更高版本,您还可以使用 balance random
选项,该选项应该在您的服务器之间随机平均分配请求。我认为这可能更直接地解决你上面所说的平衡问题。此外,如果请求类型发生变化,使用 balance random
仍会随机平衡您的请求。
在后端使用 4 个服务器条目的建议答案完成了这项工作。 我不确定它是否是最优雅的解决方案,但它确实帮助我更多地了解后端的使用,再次感谢。