Kafka集群安装配置

时间:2021-11-30 21:34:20

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:在23成功后,在服务端cmd是哪上输入任何字符串 都会在2台消费者服务器上打印结果
PS:主要服务端producer输入了信息,消费端会在近期接收到信息,不论什么时候启动(时间最大限制暂时不清楚)