Zookeeper和Kafka是否可以部署在同一台服务器上?

8
我正在搭建一个kafka+zookeeper集群,假设我想要3个kafka代理。我想知道是否可以在3台机器上安装kafka,然后在同一节点上运行zookeeper集群。这样每台机器都有一个kafka+zookeeper节点在集群中,而不是有3台机器用于kafka和3台机器用于zookeeper(总共6台)。
这种方法的优缺点是什么?这些机器很可能专门用于运行kafka/zookeeper。我在考虑是否可以在不牺牲性能的情况下降低成本。
2个回答

11

我们在生产环境中多年来一直将Zookeeper和Kafka Broker运行在同一节点上,而且没有任何问题。 集群的qps和IO流量非常高,因此我敢说我们的经验适用于大多数情况。

优点很简单,就是节约机器。 Kafka Broker具有重要的I/O操作,而Zookeeper节点的磁盘I/O和CPU成本不会太高。 因此,在大多数情况下,它们不会相互干扰。

但请记得仍需关注CPU和I/O(不仅包括磁盘还包括网络)的使用情况,并在达到瓶颈之前增加集群容量。

因为我们进行了很好的集群容量规划,所以我没有看到任何缺点。


1
谢谢您的回复 :) 如果我可以问,您是否知道您运行Kafka+Zookeeper的机器有多强大(估计)? - KTrum
@Weibo Li,当服务器崩溃时,也就意味着kafka broker和zookeeper都会同时崩溃,您是否遇到过这种问题?我们的设置类似,我想知道这是否会导致我们出现此问题。https://dev59.com/HOk5XIcBkEYKwwoY7OHv - abhaybhatia
使用Zookeeper和Kafka同时崩溃会导致整个集群出现问题,您遇到过这种情况吗? - sandeep P
@Weibo Li,你能看一下这个问题吗?https://stackoverflow.com/q/64264379/12953672 - sandeep P

1
当Kafka集群较小,3-5个节点时,将它们合并在一起是有意义的。但请记住,这是两个对磁盘I/O敏感的应用程序的合并。工作负载以及与本地Zk的通信方式也在这里发挥着重要作用,特别是从页面缓存内存使用的角度来看。
一旦Kafka集群扩展到十几个或更多节点,按比例合并每个节点上的Zk将创建仲裁开销(如较慢的写入、更多的仲裁检查节点),因此必须建立一个单独的Zk集群。
总的来说,如果从一开始Kafka集群的使用率较低,并且您想节省一些成本,则将它们合并在一起是合理的,但是必须有迁移策略来设置单独的Zk集群,以免在需要水平扩展Kafka集群时措手不及。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接