2017-05-31 35 views
0

我要求一般的最佳实践在这里:Kafka集群部署配置的最佳实践?

如果我想要一个五个节点集群,做所有五个节点上运行汇合平台伞包,其中包括动物园管理员,卡夫卡,模式的注册表?

是否曾建议在独立服务器上运行zookeper集群与Kafka集群?

如果我想运行Kafka Connect分布式工作器,我可以在所有集群节点上运行它吗?我是否想要在不同的服务器上运行? Docker是为此推荐还是Docker是不必要的?

使用Kafka Streaming应用程序,它们是否应该在所有群集节点上运行?他们应该码头吗?他们是否应该在单独的节点上运行?

有点像Mesos推荐?

回答

2

这是在专用服务器(或虚拟服务器)上运行Kafka Brokers的最佳实践。 Zookeeper也是如此。

Confluent Platform的所有其他组件都可以在共同的服务器上或在不同的机器上运行。

您通常只运行一个模式注册表(或两个,如果您想容错)。他们可以在任何可以连接到卡夫卡经纪商的机器上运行。

Kafka Connect分布式工作人员只需要在要托管Kafka连接器的机器上运行。他们只需要能够连接到卡夫卡经纪人。

卡夫卡流应用程序可以运行在任何你想要的地方,只要他们可以连接回卡夫卡经纪人。

所有组件都可以在Docker容器中运行,也可以在没有Docker的情况下运行。

您可以使用您想要的任何微服务或数据中心资源管理工具(或根本没有) - 这是您的选择。

+0

谢谢。为什么最好的做法是在Zookeeper的不同服务器上运行Kafka Brokers。这是记录在任何地方? – clay

+0

这个最佳做法有两个原因。建议Kafka代理在专用服务器上运行,因为它们广泛使用利用Linux页面缓存作为内存中性能增强功能的“零拷贝”,所以最好不要在同一台机器上运行其他应用程序,污染“页面缓存并导致更多的缓存未命中和更多的磁盘I/O。 –

+0

建议Zookeeper节点在专用机器上运行,因为它们对延迟非常敏感。如果写入磁盘或响应请求存在很长的延迟,那么动物园管理员节点会被踢出法定人数,并导致一系列级联问题。最好让动物园管理员尽可能低延迟,这就是为什么最好的做法是单独运行它们,并尽可能使用SSD磁盘。 –