Apache Zookeeper:跨数据中心分发节点

时间:2013-04-25 18:04:08

标签: apache-zookeeper solrcloud

我正在开发一个全新的SolrCloud - ZooKeeper基础架构。

一些背景资料:

  • 所有其他服务(主要是网站基础架构)分布在两个数据中心主动 - 主动配置。
  • 在网络级别,服务器设置在扩展LANS上,数据中心有暗光纤。所以延迟是最小的。
  • SolrCloud - ZooKeeper基础设施将被大多数这些应用程序使用。

我有一个Solr Cloud,还有一个ZooKeeper集合正在运行。这个级别的实施很好。

但我想知道如何分发我的ZooKeeper服务器。我必须拥有奇数个服务器,但我只有2个数据中心。如果一个失败,我有50%的机会让我失去多数。

有什么想法吗?到目前为止,我已经想过:

  • 请求第三个数据中心(不太可能发生,$$$!)

  • 每个数据中心的主机2和外部云提供商的1个(亚马逊或......?)。再次$$$

  • 在数据中心1设置一个奇数,并在站点2上使用观察者。如果站点1失败,会发生什么? SolrCloud只能与1位观察者一起工作吗?

感谢您的任何想法和意见。

尼克

2 个答案:

答案 0 :(得分:1)

如果您的要求是提供来自本地数据中心(请求来源)的所有搜索请求,那么您不需要进行跨dc zk部署。导致交叉直流zk部署只需要在DC崩溃中存活(很可能不会发生,这就是你支付$$$$的原因)所以在这种情况下不需要在多个DC中产生zk集群

答案 1 :(得分:1)

很久以前,但是,让我们分享我的所作所为。

我有第三个站点来托管另一个ZooKeeper实例。这个网站是我公司的另一个办公室,而不是一个完整的DC"。所以每个站点都有1个ZK。

让我在3 DC上散布一个簇的原因是它们足够接近以在它们之间产生暗光纤。延迟非常低,不会影响ZK性能。

然后对于SOLR,我在两个主要DC上获得了完整的副本。第三个办公室只承载法定人数的ZK。使用完整的副本,我拥有每个DC中的所有数据。如果我的SOLR需要稍后增加,我会分片,但是现在我们的索引很小。

它已经证明了4年的稳定性,1次失败。这是在第3办公室,而不是在DC。