Accumulo的文档清楚地希望所有ZooKeeper服务器都应列在accumulo-site.xml和client.conf的设置instance.zookeeper.host
中。 单个负载平衡的 ZooKeeper 主机名是否足以满足这些设置中的一个(或两个(? 还是有理由更喜欢所有 ZooKeeper 主机的明确列表? 我希望它们实际上是等效的 - 不仅在初始运行方面,而且在大型集群的性能方面也是如此。
Accumulo文档没有详细说明它对列出的每个ZooKeeper服务器的具体作用。 如果它只是执行自己的负载平衡,那么我应该可以提供单个负载平衡主机名。 如果还有其他一些魔法,那么我将不胜感激任何见解。
我正在尝试将Accumulo和一些相关服务与Consul服务网格集成。 Consul为配置的服务提供内部DNS解析,例如zookeeper.service.mydatacenter.consul,它通过随机排序所有此类主机的返回IP地址来提供基本的负载平衡。 至少有幾個選項可以配置Accumulo與所有ZooKeeper主機,但它們會陷入我寧願避免的複雜情況。 例如,使用一组静态的"通用"主机名不允许我们轻松更改 Zookeeper 集群的大小,或者使用 Consul 模板动态列出 ZooKeeper 节点需要处理滚动的 Accumulo 集群重启(这有很多复杂性(。 我也愿意接受其他建议。
注意:这个问题不是专门关于 Consul 服务网格的,因为它只是我用于负载平衡(或者用于列出 ZooKeeper 服务器的机制(。 我最感兴趣的是使用单个负载平衡的ZooKeeper主机名配置Accumulo的优缺点。
ZooKeeper 服务器作为一个协调的组运行,其中整个组根据服务器之间的共识确定任何给定时间字段的值。如果您正在运行 5 节点 ZooKeeper 实例,则所有 5 个服务器名称都是相关的。您不应简单地将它们视为 5 个冗余的 1 节点实例。Accumulo和其他ZooKeeper客户端实际上使用列出的所有服务器。更多信息请访问 https://zookeeper.apache.org