gpt4 book ai didi

load-balancing - 带有 Zookeeper 的负载均衡器

转载 作者:行者123 更新时间:2023-12-04 15:10:08 26 4
gpt4 key购买 nike

我正在尝试在 Zookeeper 3.4.6 集群前面创建一个负载均衡器。当我这样做时,集群运行良好,但抛出异常:

WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@357] - caught end of stream exception EndOfStreamException: Unable to read additional data from client sessionid 0x0, likely client has closed socket
at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:228)
at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)
at java.lang.Thread.run(Thread.java:745)



这意味着 Zookeeper 将负载均衡器理解为客户端,并尝试与它建立连接。但是负载均衡器只是 ping TCP 2181 并出来了。

最佳答案

您正在尝试在 ZooKeeper 集群和客户端之间使用负载均衡器?

当您以多个端点的形式为客户端提供 ZooKeeper 连接字符串时:“server1,server2,server3...”,客户端将选择其中一个服务器并在发生故障时切换。这样,如果您的所有客户端都具有相同的 ZooKeeper 端点字符串,您将最终得到一个平衡池。

如果你在客户端和服务器之间放置一个标准的负载均衡器,它可能会导致这样的故障。负载均衡器不能很好地适应 ZooKeeper 期望其客户端的行为方式。客户端需要保持与它有 session 的特定服务器的开放 TCP 连接,并定期发送心跳。

ZooKeeper 客户端自身负载平衡的方式存在某些限制(例如,在服务器重新启动的情况下连接不会重新平衡),但修复这些限制需要 ZooKeeper 协议(protocol)感知负载平衡逻辑,这可能是客户端实现的一部分。

关于load-balancing - 带有 Zookeeper 的负载均衡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905007/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com