如何配置Kafka集群 node
Kafka集群配置比较简单,为了更好的让你们理解,在这里要分别介绍下面三种配置 服务器
- 单节点:一个broker的集群
- 单节点:多个broker的集群
- 多节点:多broker集群
1、单节点单broker实例的配置
1. 首先启动zookeeper服务
Kafka自己提供了启动zookeeper的脚本(在kafka/bin/目录下)和zookeeper配置文件(在kafka/config/目录下),首先进入Kafka的主目录(可经过 whereis kafka命令查找到):
[root@localhost kafka-0.8]# bin/zookeeper-server-start.sh config/zookeeper.properties
zookeeper配置文件的一些重要属性:
# Data directory where the zookeeper snapshot is stored.
dataDir=/tmp/zookeeper
# The port listening for client request
clientPort=2181
默认状况下,zookeeper服务器会监听 2181端口,更详细的信息可去zookeeper官网查阅。
2. 启动Kafka broker
运行kafka提供的启动kafka服务脚本便可:
[root@localhost kafka-0.8]# bin/kafka-server-start.sh config/server.properties
broker配置文件中的重要属性:
# broker的id. 每一个broker的id必须是惟一的.
Broker.id=0
# 存放log的目录
log.dir=/tmp/kafka8-logs
# Zookeeper 链接串
zookeeper.connect=localhost:2181
3. 建立一个仅有一个Partition的topic
[root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic kafkatopic
4. 用Kafka提供的生产者客户端启动一个生产者进程来发送消息
[root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list
localhost:9092 --topic kafkatopic
其中有两个参数须要注意:
- broker-list:定义了生产者要推送消息的broker地址,以<IP地址:端口>形式
- topic:生产者发送给哪一个topic
而后你就能够输入一些消息了,以下图:
5. 启动一个Consumer实例来消费消息
[root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic kafkatopic --from-beginning
当你执行这个命令以后,你即可以看到控制台上打印出的生产者生产的消息:
和消费者相关的属性配置存放在Consumer.properties文件中,重要的属性有:
# consumer的group id (A string that uniquely identifies a set of consumers
# within the same consumer group)
groupid=test-consumer-group
# zookeeper 链接串
zookeeper.connect=localhost:2181
2、单节点运行多broker实例
1.启动zookeeper
和上面的同样
2.启动Kafka的broker
要想在一台机器上启动多个broker实例,只须要准备多个server.properties文件便可,好比咱们要在一台机器上启动两个broker:
首先咱们要准备两个server.properties配置文件
- server-1
- brokerid=1
- port=9092
- log.dir=/temp/kafka8-logs/broker1
- server-2
- brokerid=2
- port=9093
- log.dir=/temp/kafka8-logs/broker2
而后咱们再用这两个配置文件分别启动一个broker
[root@localhost kafka-0.8]# env JMX_PORT=9999 bin/kafka-server-start.sh config/server-1.properties
[root@localhost kafka-0.8]# env JMX_PORT=10000 bin/kafka-server-start.sh config/server-2.properties
能够看到咱们启动是为每一个broker都指定了不一样的JMX Port,JMX Port主要用来利用jconsole等工具进行监控和排错
3.建立一个topic
如今咱们要建立一个含有两个Partition分区和2个备份的broker:
[root@localhost kafka-0.8]# bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 2 --partition 2 --topic othertopic
4.启动Producer发送消息
若是咱们要用一个Producer发送给多个broker,惟一须要改变的就是在broker-list属性中指定要链接的broker:
[root@localhost kafka-0.8]# bin/kafka-console-producer.sh --broker-list localhost:9092,localhost:9093 --topic othertopic
若是咱们要让不一样的Producer发送给不一样的broker,咱们也仅仅须要为每一个Producer配置响应的broker-list属性便可。
5.启动一个消费者来消费消息
和以前的命令同样
[root@localhost kafka-0.8]# bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic othertopic --from-beginning
3、集群模式(多节点多实例)
介绍了上面两种配置方法,再理解集群配置就简单了,好比咱们要配置以下图所示集群:
zookeeper配置文件(zookeeper.properties):不变
broker的配置配置文件(server.properties):按照单节点多实例配置方法在一个节点上启动两个实例,不一样的地方是zookeeper的链接串须要把全部节点的zookeeper都链接起来
# Zookeeper 链接串
zookeeper.connect=node1:2181,node2:2181