Accumulo 真的需要列出所有 Zookeeper 服务器吗?

Does Accumulo actually need all Zookeeper servers listed?

Accumulo 的文档明确要求所有 ZooKeeper 服务器都应列在设置 instance.zookeeper.hostaccumulo-site.xmlclient.conf。单个负载平衡的 ZooKeeper 主机名是否足以满足其中一个(或两个)设置?还是有理由更喜欢所有 ZooKeeper 主机的明确列表?我希望它们实际上是等效的 - 不仅在最初 运行 而且在相当大的集群的性能方面也是如此。

Accumulo 文档没有详细说明它对列出的每个 ZooKeeper 服务器的具体作用。如果它只是进行自己的负载平衡,那么我应该可以提供单一的负载平衡主机名。如果还有其他魔法,那么我将不胜感激。

我正在尝试将 Accumulo 和一些相关服务与 Consul 服务网格集成。 Consul 为配置的服务提供内部 DNS 解析,例如zookeeper.service.mydatacenter.consul,它通过随机排列所有此类主机返回的 IP 地址来提供基本的负载平衡。至少有几个选项可用于为所有 ZooKeeper 主机配置 Accumulo,但它们会导致我宁愿避免的复杂情况。例如。使用一组静态的 "generic" 主机名不允许我们轻松更改 Zookeeper 集群的大小,或者使用 Consul 模板动态列出 ZooKeeper 节点需要处理滚动的 Accumulo 集群重启(这有一大堆并发症)。我也愿意接受其他建议。

注意:这个问题不是专门针对 Consul 服务网格的,因为它只是我用于负载平衡(或者用于列出 ZooKeeper 服务器)的机制。我最感兴趣的是使用单个负载平衡 ZooKeeper 主机名配置 Accumulo 的优点或缺点。

ZooKeeper 服务器作为一个协调组运行,该组作为一个整体根据服务器之间的共识在任何给定时间确定字段的值。如果你有一个 5 节点的 ZooKeeper 实例 运行,所有 5 个服务器名称都是相关的。您不应该简单地将它们视为 5 个冗余的 1 节点实例。 Accumulo 和其他 ZooKeeper 客户端实际上使用列出的所有服务器。更多信息请访问 https://zookeeper.apache.org