在当今的分布式系统中,Kafka 成为处理高吞吐量、实时数据流的关键工具。本文将详细介绍如何在 OpenStack 上搭建 Kafka 集群,并提供每一步的操作指南。

一、搭建单节点kafka

在zookeeper安装成功的情况下,先将所有节点的zookeeper服务停止

cd /root/zookeeper-3.4.14./bin;./zkServer.sh stop

解压kafka

将提供的kafka_2.11-1.1.1.tgz 软件包,上传至节点的/root 目录下,并执行解 压操作,执行的解压命令如下:

tar -zxvf kafka_2.11-1.1.1.tgz

进入到kafka的bin目录下

cd kafka_2.11-1.1.1

启动自带的zookeeper

./zookeeper-server-start.sh -daemon ../config/zookeeper.properties

启动kafka

./kafka-server-start.sh -daemon ../config/server.properties

发送消息(这个窗口不要退出)

./kafka-topics.sh --create --topic test --zookeeper localhost:2181 --replication-factor 1 --partitions 1

接受消息(在本机新建的窗口中打开)

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test

查看从第三条消息开始看

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --partition 0 --offset 3

查看旧消息

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

分组

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group grouptest

另一个分组

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --group grouptest1

部署集群

在上面的实验中,使用了单节点模式,所以先要在这个节点中输入如下命令关闭kafka自带的zookeeper

./zookeeper-server-stop.sh -daemon ../config/zookeeper.properties

关闭所有节点的zookeeper

cd /root/zookeeper-3.4.14./bin;./zkServer.sh stop

修改kafka配置文件(每台服务器都需要修改)

broker.id每台机器不能一样

listeners:在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误,可以直接修改为本机的IP

zookeeper.connect : 因 为 有 3 台 ZooKeeper 服务器,所以在这里 zookeeper.connect 设置为 3 台服务器的IP地址加端口号2181

zookeeper.connect=192.168.20.30:2181,192.168.20.40:2181,192.168.20.50:2181 #这里需要修改为自己服务器的IP地址

进入到zookeeper的安装目录下的bin目录,启动三个节点的zookeeper

./zkServer.sh start

启动后查看状态

./zkServer.sh status

启动正常为两个follower,一个leader,如果不是,请自行查看日志文件,查找原因

进入kafka的安装目录,启动kafka

./kafka-server-start.sh -daemon ../config/server.properties

查看服务进程

jps

此时应有三个进程,若kafka没有启动可能是broker id不一致

vim /tmp/kafka-logs/meta.properties

修改为和kafka配置文件相同的id,完成后重启kafka,如果还是未启动,请自行查找原因

在完成上述操作后,服务都正常启动的情况下,输入以下命令

节点1上创建组

./kafka-topics.sh --create --zookeeper 192.168.20.30:2181 --replication-factor 1 --partitions 1 --topic ydsj

节点2和3上查看组

./kafka-topics.sh --list --zookeeper 192.168.20.40:2181

可以查看到创建的组,即为实验成功。