Accumulo的文档明确希望所有ZooKeeper服务器都应在 accumulo-site.xml 和 client.conf 中的instance.zookeeper.host
中列出。一个负载平衡的ZooKeeper主机名是否足以满足这些设置中的一个(或两个)?还是有理由偏爱所有ZooKeeper主机的明确列表?我希望它们实际上是等效的-不仅在最初运行时,而且在相当大的集群的性能上。
Accumulo文档没有详细说明它对列出的每个ZooKeeper服务器的作用。如果它只是做自己的负载平衡,那么我可以提供单个负载平衡的主机名。如果还有其他魔术,那么我将不胜感激。
我试图将Accumulo和一些相关服务与Consul服务网格集成在一起。领事为配置的服务提供内部DNS解析,例如 zookeeper.service.mydatacenter.consul ,它通过随机排序所有此类主机的返回IP地址来提供基本的负载平衡。至少有两个选项可用于与所有ZooKeeper主机一起配置Accumulo,但是我宁愿避免这些麻烦。例如。使用一组静态的“通用”主机名不允许我们轻松更改Zookeeper群集的大小,或者使用Consul Template动态列出ZooKeeper节点提出了处理滚动Accumulo群集重新启动的需要(它具有整个并发症)。我也愿意接受其他建议。
注意:这个问题不是专门针对Consul服务网格的,因为它只是我用于负载平衡(或列出ZooKeeper服务器)的机制。我对使用单个负载平衡的ZooKeeper主机名配置Accumulo的优点或缺点最感兴趣。
答案 0 :(得分:1)
ZooKeeper服务器作为一个协作组运行,该组作为一个整体,根据服务器之间的共识确定在任何给定时间的字段值。如果您正在运行5节点ZooKeeper实例,则所有5个服务器名称都是相关的。您不应简单地将它们视为5个冗余1节点实例。 Accumulo和其他ZooKeeper客户端实际上使用列出的所有服务器。有关更多信息,请访问https://zookeeper.apache.org