我正在建立一个kafka + zookeeper集群。假设我想要3个卡夫卡经纪人。我想知道我是否可以使用kafka设置3台机器,然后在相同的节点上运行zookeeper集群。因此,每台机器在集群中都有一个kafka + zookeeper节点,而不是3台用于kafka的机器和3台用于zookeeper的机器(总共6台)。
有哪些优点和缺点?这些机器很可能专门用于运行kafka / zookeeper。我想我是否可以在不牺牲性能的情况下降低成本。
答案 0 :(得分:6)
我们一直在生产环境中的同一节点上运行zookeeper和kafka broker,没有任何问题。群集运行在非常高 qps和IO流量,所以我敢说我们的经验适合大多数情况。
优点很简单,即节省机器。 Kafka代理是IO密集型的,而zookeeper节点不会花费太多磁盘IO和CPU。因此,在大多数情况下,他们不会互相打扰。
但请记住继续关注CPU和IO(不仅是磁盘而且还有网络)用法,并在群集容量达到瓶颈之前增加它们。
我没有看到任何缺点,因为我们有非常好的集群容量规划。
答案 1 :(得分:0)
当Kafka集群很小(3-5个节点)时,将它们并置是有意义的。但是请记住,这是两个对磁盘I / O敏感的应用程序的共置。工作负载以及它们与本地Zk的友好程度在这里也起着重要作用,特别是从页面缓存内存使用的角度来看。
一旦Kafka群集增长到十几个或更多的节点,则Zk在每个节点上的相应配置将产生仲裁开销(如写入速度较慢,仲裁检查中的节点更多),因此必须有一个单独的Zk群集。
总体而言,如果Kafka群集从一开始就使用率较低,并且您想节省一些成本,则可以合理地将它们并置启动,但是有一个迁移策略可用于设置单独的Zk群集,一次也不会被监视Kafka群集必须水平缩放。