首页 > 解决方案 > Accumulo 是否真的需要列出所有 Zookeeper 服务器?

问题描述

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

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

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

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

标签: apache-zookeeperconsulaccumulo

解决方案


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


推荐阅读