与Solr一起使用Zookeeper,但只有2台服务器

与Solr一起使用Zookeeper,但只有2台服务器,solr,apache-zookeeper,Solr,Apache Zookeeper,我是Solr的新手,正在试用SolrCloud——看来ZooKeeper是管理高可用性的最佳方式 然而,在我们的生产环境中,我们只有两台服务器(active-active),我担心Zookeeper在两台服务器上并不理想,因为如果其中任何一台出现故障,整个集合都会停止工作。到目前为止,解决方法是在server1上运行两个ZK,在server2上运行一个ZK,这样,至少如果server2宕机,我们仍然有仲裁(但如果server1宕机,游戏结束) 在这种情况下,Solr的最佳实践/推荐解决方案是什么

我是Solr的新手,正在试用SolrCloud——看来ZooKeeper是管理高可用性的最佳方式

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

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


谢谢

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

三台ZooKeeper服务器是一台服务器的最小建议大小 我们还建议它们在不同的机器上运行

为了获得可靠的ZooKeeper服务,您应该在 被称为集合的星团。只要大部分的乐团 一旦启动,服务将可用。因为动物园管理员需要一个 大多数情况下,最好使用奇数台机器。例如 有了四台机器,动物园管理员只能处理一台机器的故障 机器;如果两台机器出现故障,其余两台机器不会出现故障 占多数。然而,有了五台机器,动物园管理员就可以 处理两台机器的故障

在一台服务器上运行两个实例并不能真正解决这一问题,因为失去该服务器将导致集群死亡。Solr Cloud需要Zookeeper——你无法绕过它

设置外部ZooKeeper集合

虽然索尔与阿帕奇动物园管理员捆绑在一起,但你应该考虑。 不鼓励自己在生产中使用这个内部动物园管理员, 因为关闭冗余Solr实例也将关闭 它的ZooKeeper服务器可能没有那么多冗余。因为 ZooKeeper集成的仲裁人数必须超过其服务器的一半 在任何给定的时间运行,这都可能是一个问题

解决这个问题的办法是设置一个外部的动物园管理员 合奏


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

在这种情况下,我们希望将解决方案部署到一个客户机,该客户机只能为我们提供两台服务器(我们告诉他们三台,他们只是没有第三台)。难道没有更好的办法吗?否则,我将不得不使用传统的主/从复制,如果主复制失败,请手动将dns重新指向从复制。如果我们不能利用SolrCloud,那将是一件非常遗憾的事情。你可以用1到2台服务器部署zookeeper,但是如果你失去了一台,那就太倒霉了。谢谢John。根据您的经验,如果您只有两台服务器,您将如何设置它?如果我只有两台服务器,并且我需要设置一个生产Solr云环境,我将使用3个ZK进程,2个在1台服务器上运行。这样,如果您有一个软件问题并且ZK进程失败(与硬件故障相反),您仍然会有一个仲裁。如果只有1个ZK进程的服务器失败,我仍然有一个仲裁和一半的Solr云集群需要恢复。但我会对此感到不高兴。@JohnPetrone在生产环境中,Solr是否应该安装在所有可能的服务器上,包括有Zookeeper的服务器上?假设我有5台服务器,我应该在3台上运行Zookeeper,在2台上运行Solr吗?或者Zooper在3上,Solr在5上?非常相关的问题..我们面临着同样的问题..Matt你最终是如何解决的?恐怕最后没有“正确”的解决方案-我们在一台服务器上运行了2个ZK,在另一台服务器上运行了1个…嗨Matt,我现在面临着同样的问题,你找到更好的解决方案了吗?如果不是,那么作为一个整体运行2ZK1服务器+1ZK1服务器是否运行顺利?提前感谢您的分享。@jumping_monkey是的,它在性能方面运行得很好-但是“如果”有两个动物园管理员的服务器崩溃,您将失去整个集群,所以需要注意他的@Matt,谢谢您回来。我猜这种配置的附加值(即2台服务器上的3个zk实例,1台服务器上的1个zk实例)是,如果1台服务器崩溃,zk配置在另一台运行的服务器上仍然可用,并且可以用来启动“崩溃”的服务器?我只是在大声思考,哪个选项“更好”。请你想想。