Kafak分布式集群安装配置
环境准备:请参考我的上一篇博文
软件版本:kafka_2.11-1.0.0.tgz
kafka的配置比较简单,只需修改config/下的server.properties文件即可,需要修改三处位置。
vim ./config/server.properties
1)修改broker.id
该值在各个节点中不能重复,推荐使用机器ip地址最后一位,如dc01上该值为1,dc02上为2,dc03上为3。
2)修改log.dirs
该值表示日志文件存储位置,默认为/tmp/kafka-logs,使用该配置时机器重启后文件会被清空,需要修改为其他位置,建议修改为:
log.dirs=/usr/local/kafka/kafka-logs
3)修改zookeeper.connect
这一项比较重要,表示kafka数据在zookeeper中的存储位置,以后连接kafka时会使用该值。本例中修改为:
zookeeper.connect=dc01:2181,dc02:2181,dc03:2181/kafka
4)配置topic是否可删除,默认该项是被注释的,如需要支持topic删除请放开该注释
delete.topic.enable=true
**5)配置是否自动创建topic,默认情况下Producer往一个不存在的Topic发送message时会自动创建这个Topiauto.create.topics.enable=false改完成后将整个kafka目录复制到dc02和dc03中即完成集群配置(不要忘记修改broker.id,不同机器不能重复)。
启动kafka
nohup ./bin/kafka-server-start.sh ./config/server.properties &
停止kafka
./bin/kafka-server-stop.sh &
注:kafka的启动和停止需要分别在每个节点操作。
部分客户端测试代码
一、启动和停止:
挨个启动执行
nohup ./bin/kafka-server-start.sh ./config/server.properties &
挨个停止
./bin/kafka-server-stop.sh &
二、kafka自身的命令
producer 消息的生成者,即发布消息
consumer 消息的消费者,即订阅消息
broker Kafka以集群的方式运行,可以由一个或多个服务组成,服务即broker
zookeeper 协调转发
1.创建topic
./kafka-topics.sh --create --zookeeper slave1:2181 --replication-factor 2 --partitions 1 --topic dsg_blue_topic
2.查看topic列表
./kafka-topics.sh --zookeeper slave1:2181 --list
3.查看kafka特定topic的详情,使用--topic与--describe参数
./kafka-topics.sh --zookeeper slave1:2181 --topic lx_test_topic --describe
4.查看consumer group列表,使用--list参数
kafka-consumer-groups.sh --new-consumer --bootstrap-server slave1:9092 --list
5.查看特定consumer group 详情,使用--group与--describe参数
新版本:./kafka-consumer-groups.sh --new-consumer --bootstrap-server 127.0.0.1:9292 --group lx_test --describe
旧版本:./kafka-consumer-groups.sh --zookeeper 127.0.0.1:2181 --group console-consumer-11967 --describe
========================================消息的发送和接收示例====================================
1:重新打开两个终端 假设一个终端发送消息 一个终端接收消息,这里:
producer,指定的Socket(localhost+9092),说明生产者的消息要发往kafka,也即是broker
consumer, 指定的Socket(localhost+2181),说明消费者的消息来自zookeeper(协调转发)
2:在消息服务者上执行(这里面只要在集群中有一个服务端就行,不一定非得是master)
./kafka-console-producer.sh --broker-list localhost:9092 --topic dsg_blue_topic
3:在2台消息消费者上执行
./kafka-console-consumer.sh --zookeeper slave1:2181 --topic dsg_blue_topic --from-beginning
./kafka-console-consumer.sh --zookeeper slave2:2181 --topic dsg_blue_topic --from-beginning
4:在2和3成功后,在服务端cmd是哪上输入任何字符串 都会在2台消费者服务器上打印结果
PS:主要服务端producer输入了信息,消费端会在近期接收到信息,不论什么时候启动(时间最大限制暂时不清楚)