我是 Solr 的新手,正在尝试 SolrCloud - 看来 ZooKeeper 是管理高可用性的最佳方式。
然而,在我们的生产环境中,我们只有两台服务器(主动-主动),我担心 Zookeeper 在两台服务器上并不理想,因为如果其中任何一个出现故障,整个整体就会停止工作。到目前为止的解决方法是在 server1 上运行两个 ZK,在 server2 上运行一个 ZK,这样至少如果 server2 宕机,我们仍然有法定人数(但如果 server1 宕机,游戏就结束了)。
在这种情况下 Solr 的最佳实践/推荐解决方案是什么?它可以在不使用zookeeper的情况下在两台服务器之间使用SolrCloud自动复制/故障转移吗?或者是否有某种方法可以使用 Zookeeper(或其他工具?),以便它在 2 台服务器上保持稳健?或者我是否必须重新使用旧模式复制?
Thanks!
您将需要 2 台以上的服务器。生产 Zookeeper 集合至少需要 3 个实例,并且应始终为奇数:
三个 ZooKeeper 服务器是推荐的最小规模
ensemble,我们还建议它们在单独的机器上运行。
为了获得可靠的 ZooKeeper 服务,您应该将 ZooKeeper 部署在
簇称为集合。只要乐团的大多数人
已启动,该服务将可用。因为 Zookeeper 需要一个
大多数情况下,最好使用奇数台机器。例如,
四台机器的 ZooKeeper 只能处理单台机器的故障
机器;如果两台机器发生故障,则其余两台机器不会发生故障
构成多数。然而,有了五台机器,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 台开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)