Kafka集群搭建过程和简单使用

Kafka集群搭建过程和简单使用

最近在学习Kafka,学习一下Kafka集群的搭建过程,并体验一下通过命令行使用Kafka消息队列的简单功能,在这里做一下记录,方便以后查阅。

下载与安装

下载与安装非常简单,直接打开Kafka的官方下载页面http://kafka.apache.org/downloads,下载最新版的.tgz格式的压缩包。
Kafka集群搭建过程和简单使用_第1张图片
这里我下载的是kafka_2.12-2.5.0.tgz,kafka版本是2.5,scala版本是2.12。操作步骤如下:

  1. 解压,tar -xzvf kafka_2.12-2.5.0.tgz。
  2. 把解压出来的文件夹重命名一下,mv kafka_2.12-2.5.0 kafka。
  3. 因为Kafka是基于zookeeper的,所以我提前搭好了zk集群,zk1,zk2,zk3,所以分别在三台机器上重复以上操作。

配置与启动

在启动前需要对Kafka的配置文件做一些调整。

  1. 进入kafka文件夹,cd kafka,新建logs目录,mkdir logs,这个目录是之后存放kafka日志和数据的。
  2. kafka主程序的配置文件为config下的server.properties,vim config/server.properties,其中有一下几项需要修改。图片
    broker.id是kafka在集群中的唯一id,只能是整数,这里为了对应zk的名字,我分别标为1,2,3。
    Kafka集群搭建过程和简单使用_第2张图片
    listeners=PLAINTEXT://192.168.1.129:9091,这行配置本来是没有的,kafka是默认用9092端口来监听服务的,只要你三台机器的ip不同,直接用默认就好。但是我其实用的是三个docker搭的zk集群,由于docker是host模式,所以ip都跟宿主机相同,全用9092端口会冲突,所以我分别用了9091,9092,9093。
    Kafka集群搭建过程和简单使用_第3张图片
    这条配置是kafka连接zk的ip和端口。
  3. 三台服务器都配置好后,就可以启动了,在kafka目录中运行命令,bin/kafka-server-start.sh -daemon config/server.properties,命令中的-daemon是让程序启动后在后台运行,config/server.properties是指定配置文件。启动后可以jps看下是否都运行了。
    在这里插入图片描述
    然后进入zk中看下,发现kafka在zk中新建了/brokers节点,其中ids中写入了1,2,3,对应三个kafka的broker.id。

命令行新建topic,使用生产者和消费者

topic相关的命令如下:

  1. bin/kafka-topics.sh --create --zookeeper 192.168.1.129:2181 --topic call --partitions 2 --replication-factor 2,其中–create是创建一个新的topic,–zookeeper是指定连接的zk,–topic是topic的名字,–partitions是分区数,–replication-factor是副本数,分区数任意,副本数不能超过broker数量。
  2. bin/kafka-topics.sh --delete --zookeeper 192.168.1.129:2181 --topic call,删除某个topic。
  3. bin/kafka-topics.sh --describe --zookeeper 192.168.1.129:2181 --topic call,查看某个topic的分区数、副本数等信息。
  4. bin/kafka-topics.sh --list --zookeeper 192.168.1.129:2181,列出所有的topic。

接下来在1号机器上启动一个生产者,bin/kafka-console-producer.sh --topic call --broker-list 192.168.1.129:9091,其中–broker-list是指出连接的kafka的ip和端口。在3号机器上启动一个消费者,bin/kafka-console-consumer.sh --topic call --bootstrap-server 192.168.1.129:9092。
在这里插入图片描述
在这里插入图片描述
可以看到生产者分别输入login和hello world,消费者马上会消费到。

今后还会继续学习API的使用

你可能感兴趣的:(学习笔记,kafka,zookeeper)