【问题标题】:Using Zookeeper with Solr but only have 2 servers将 Zookeeper 与 Solr 一起使用,但只有 2 台服务器
【发布时间】:2014-09-01 21:01:57
【问题描述】:

我是 Solr 的新手,正在尝试使用 SolrCloud - ZooKeeper 似乎是管理高可用性的最佳方式。

但是,在我们的生产环境中,我们只有两台服务器(主动-主动),我担心 Zookeeper 在两台服务器上并不理想,因为如果其中任何一个出现故障,整个集成都将停止工作。到目前为止的解决方法是在 server1 上运行两个 ZK,在 server2 上运行一个 ZK,这样至少如果 server2 出现故障,我们仍然有 quorum(但如果 server1 出现故障,游戏结束)。

在这种情况下,Solr 的最佳实践/推荐解决方案是什么?它可以在不使用 Zookeeper 的情况下在两台服务器之间使用 SolrCloud 自动复制/故障转移吗?或者有什么方法可以使用 Zookeeper(或其他工具?),以便它在 2 台服务器上具有强大的功能?还是我必须重新使用传统模式复制?

谢谢!

【问题讨论】:

  • 非常相关的问题..我们面临同样的问题..Matt 你最后是怎么解决这个问题的?
  • 恐怕最终没有“正确”的解决方案——我们在一台服务器上运行了 2 个 ZK,在另一台服务器上运行了 1 个......
  • 嗨,马特,我现在也面临同样的问题,您找到更好的解决方案了吗?如果没有,运行 2 zK 1 server + 1 zK 1 server 作为 ensemble 运行顺利吗?在此先感谢您的分享。
  • @jumping_monkey 是的,它在性能方面运行良好 - 但是“如果”带有 2 个 zookeeper 的服务器崩溃,你会丢失整个集群,所以需要注意
  • 嗨@Matt,感谢您回来。我猜这个配置的附加值(即 2 台服务器上的 3 个 zk 实例,v/s 1 台服务器上的 1 个 zk 实例)是,如果 1 台服务器崩溃,zk 配置在另一台正在运行的服务器上仍然可用,并且可以用来调出“崩溃”的服务器吗?我只是在大声思考,哪个选项“更好”。请提出您的想法。

标签: solr apache-zookeeper


【解决方案1】:

您将需要 2 台以上的服务器。生产 Zookeeper ensemble 至少需要 3 个实例,并且应该始终是奇数:

三个 ZooKeeper 服务器是推荐的最小大小 ensemble,我们还建议它们在不同的机器上运行。

为了获得可靠的 ZooKeeper 服务,您应该将 ZooKeeper 部署在一个 集群称为集合。只要乐团的大多数 起来了,服务就可以了。因为 Zookeeper 需要一个 大多数,最好使用奇数台机器。例如, 四台机器ZooKeeper只能处理单台故障 机器;如果两台机器发生故障,其余两台机器不会 构成多数。但是,使用 5 台机器 ZooKeeper 可以 处理两台机器的故障。

http://zookeeper.apache.org/doc/r3.1.2/zookeeperAdmin.html

在 1 个服务器上运行 2 个实例并不能真正削减它,因为失去该服务器会杀死集群。 Solr Cloud 需要 Zookeeper - 你无法绕过它。

设置外部 ZooKeeper 集合

虽然 Solr 与 Apache ZooKeeper 捆绑在一起,但您应该考虑 不鼓励自己在生产中使用这个内部 ZooKeeper, 因为关闭冗余的 Solr 实例也会关闭 它的 ZooKeeper 服务器,这可能不是那么多余。因为一个 ZooKeeper ensemble 的法定人数必须超过其服务器的一半 在任何给定时间运行,这可能是个问题。

解决这个问题的方法是设置一个外部的 ZooKeeper 合奏。

https://cwiki.apache.org/confluence/display/solr/Setting+Up+an+External+ZooKeeper+Ensemble

一般来说,尝试使用少于 3 台服务器运行真正分布式的大规模处理是一个坏主意 - Zookeeper 并不是唯一的,它要求至少 3 台服务器才能在服务器出现故障时支持可靠运行。通常,您需要一定数量的存活服务器 (N/2+1) 才能运行,因此您需要从至少 3 个开始。

【讨论】:

  • 在这种情况下,我们希望将解决方案部署到只能为我们提供两台服务器的客户端(我们告诉他们三台,他们只是没有第三台)。绝对没有更好的方法吗?否则我将不得不使用旧的主/从复制,如果主失败,手动将 dns 重新指向从。如果我们不能利用 SolrCloud,那将是一个真正的耻辱。
  • 您可以使用 1 或 2 台服务器部署 zookeeper,但如果您失去了一台服务器,那就不走运了。
  • 谢谢约翰。根据您的经验,如果您只有两台服务器,您会如何设置?
  • 如果我只有 2 台服务器并且我需要设置一个生产 Solr 云环境,我会使用 3 个 ZK 进程,其中 2 个在 1 台服务器上运行。这样,如果您有软件问题并且 ZK 进程失败(而不是硬件故障),您仍然会有一个仲裁。如果只有 1 个 ZK 进程的服务器发生故障,我仍然有法定人数和一半的 Solr Cloud 集群可以从中恢复。但我会不高兴的。
  • @JohnPetrone 在生产环境中,是否应该在每台可能的服务器上设置 Solr,包括拥有 Zookeeper 的服务器?假设我有 5 台服务器,我应该在 3 台上运行 Zookeeper 并在 2 台上运行 Solr 吗?还是 Zooper 3 和 Solr 5?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-15
  • 2015-03-19
  • 2020-07-04
  • 1970-01-01
  • 2013-01-17
  • 2012-04-21
  • 1970-01-01
相关资源
最近更新 更多