Zookeeper 与 kafka 在同一节点上?

Zookeeper on same node as kafka?

我正在设置一个 kafka+zookeeper 集群。假设我想要 3 个卡夫卡经纪人。我想知道我是否可以在其上设置 3 台带有 kafka 的机器,然后 运行 相同节点上的 zookeeper 集群。所以集群中每台机器都有一个kafka+zookeeper节点,而不是kafka有3台机器,zookeeper有3台机器(一共6台)

有什么优点和缺点?这些机器很可能专用于 运行ning kafka/zookeeper。我在想我是否可以在不牺牲性能的情况下降低成本。

多年来,我们一直运行在生产环境的同一个节点上使用zookeeper和kafka broker,没有任何问题。集群是运行 非常非常高 qps和IO流量,所以我敢说我们的经验适合大多数场景。

好处很简单,就是省机器。 Kafka broker 是 IO 密集型的,而 zookeeper 节点不会像 CPU 那样消耗过多的磁盘 IO。所以大多数情况下他们不会互相打扰。

但请记住继续关注您的 CPU 和 IO(不仅是磁盘,还有网络)使用情况,并在达到瓶颈之前增加集群容量。

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

当 Kafka 集群很小,只有 3-5 个节点时,将它们并置是有意义的。但请记住,它是两个对磁盘敏感的应用程序的托管 I/O。工作负载以及它们与本地 Zk 的聊天程度在这里也起着重要作用,尤其是从页面缓存内存使用的角度来看。

一旦 Kafka 集群增长到十几个或更多节点,在每个节点上相应地配置 Zk 将产生仲裁开销(如较慢的写入,仲裁检查中的更多节点),因此必须有一个单独的 Zk 集群。

总的来说,如果一开始 Kafka 集群的使用率很低,并且您想节省一些成本,那么将它们并置启动是合理的,但是要有一个迁移策略来设置一个单独的 Zk 集群,以免被捕获一旦 Kafka 集群必须水平扩展,就守卫。