我们有几种使用zookeeper的软件,如solr、storm、kafka、hbase等。
有2个选项可安装zookeeper群集(多于1个节点):
嵌入式集群:将zk安装在与其他软件相同的机器上
外部集群:有一些不是很强大但是专用的zookeeper机器(在同一个区域,云和数据中心)来运行zookeeper。
对于集群稳定性,哪一个是更好的选择?请注意,在这两种情况下,zookeeper集群中的机器数量总是奇数,而不仅仅是一台机器。
嵌入式选项似乎更容易设置,并且更好地利用了机器,但是外部选项似乎更稳定,因为丢失一台机器意味着只丢失一个组件(在嵌入式zookeeper中丢失一台机器意味着丢失zookeeper节点以及solr、storm、kafka的工作节点,无论什么情况)。
为了最大限度地保持稳定,饲养动物的行业标准是什么?
3条答案
按热度按时间pxyaymoc1#
zookeeper是kafka集群的一个关键组件,但是自从新一代客户机的实现以来,zk上的负载已经大大减少,现在只由集群本身使用。尽管负载通常不是很高,但它可能对延迟很敏感,因此最佳做法是在专用计算机上运行zookeeper集成,甚至最好使用zk事务日志的专用磁盘来避免io争用。
通过使用更大的zookeeper群,您可以获得弹性,但这也会增加群集中的通信,您可能会损失一些性能。由于zookeeper使用简单多数投票,因此需要奇数个节点才能使其有意义。3节点集成允许丢失1个节点而不受影响,5节点集成允许丢失2个节点,以此类推。
实际上,我´我们已经看到小的、低工作负载的集群运行得非常好,zookeeper安装在与kafka节点相同的机器上,但是如果您的目标是实现最大的稳定性,并且流量不断增加,则建议使用单独的集群。
xsuvu9jc2#
你应该认为你不应该在生产中使用内部Zookeeper。
有外部zookeeper很好,如果zookeeper集合(两个或更多)最好,如果您有一个zookeeper节点,当它关闭时可能会产生问题。
如果您有zookeeper节点的集群设置,并且如果一个zookeeper节点宕机,则运行的其余大多数节点将继续工作。
更多细节
tmb3ates3#
对于solrcloud,我们强烈建议zookeeper是外部的,并且您至少有三个。
这并不意味着它不能在与solr相同的服务器上运行,但它确实意味着您不应该使用zookeeper服务器,solr本身可以启动它,并嵌入到它本身中。
以下是一些有关zookeeper性能和solrcloud的信息:
https://wiki.apache.org/solr/solrperformanceproblems#solrcloud
当zookeeper数据库与solr在同一台机器上运行时,是否需要完全独立的机器,甚至需要单独的磁盘,这在很大程度上取决于solrcloud安装的特性。如果索引很小,查询负载很低,那么可以将zookeeper放在相同的机器甚至磁盘上。
对于你提到的其他服务,我不知道有什么建议。