1:搭建kafka集群环境需要安装JDK、Zookeeper集群环境
JDK的安装可以参考https://mp.csdn.net/postedit/84196901这篇博客
Zookeeper集群环境的安装可以参考https://mp.csdn.net/postedit/84201320这篇博客,具体的步骤在博客上面有详细的说明
2:kafka的安装和配置
kafka下载地址:https://www.apache.org/dyn/closer.cgi?path=/kafka/1.0.0/kafka_2.11-1.0.0.tgz
#我的目录统一放在/opt
#首先创建kafka文件夹
cd /opt
mkdir kafka 创建kafka文件夹
cd kafka\
mkdir kafkalogs #创建kafka消息目录,主要存放kafka消息,对应server1服务器
mkdir kafkalogs1 #创建kafka消息目录,主要存放kafka消息,对应server2服务器
mkdir kafkalogs2 #创建kafka消息目录,主要存放kafka消息,对应server3服务器
#解压kafka_2.11-1.0.0.tgz到kafka目录下
tar -zvxf kafka_2.11-1.0.0.tgz
#如果是三台真实的linux服务器,只需要将kafka_2.11-1.0.0.tgz解压到三台服务器的/opt/kafka目录下,再新建kafkalogs即可
修改kafka配置文件
#进入到config目录
cd /opt/kafka/kafka_2.11-1.0.0/config/
我们可以看到目录下有zookeeper的一些文件,这是kafka内置的zookeeper集群,我们可以使用它来直接启动,但建议使用独立的zookeeper集群。
-rw-r--r--. 1 root root 906 Oct 27 08:56 connect-console-sink.properties -rw-r--r--. 1 root root 909 Oct 27 08:56 connect-console-source.properties -rw-r--r--. 1 root root 5807 Oct 27 08:56 connect-distributed.properties -rw-r--r--. 1 root root 883 Oct 27 08:56 connect-file-sink.properties -rw-r--r--. 1 root root 881 Oct 27 08:56 connect-file-source.properties -rw-r--r--. 1 root root 1111 Oct 27 08:56 connect-log4j.properties -rw-r--r--. 1 root root 2730 Oct 27 08:56 connect-standalone.properties -rw-r--r--. 1 root root 1221 Oct 27 08:56 consumer.properties -rw-r--r--. 1 root root 4727 Oct 27 08:56 log4j.properties -rw-r--r--. 1 root root 1919 Oct 27 08:56 producer.properties -rw-r--r--. 1 root root 173 Jan 7 05:54 server-1.properties -rw-r--r--. 1 root root 173 Jan 7 05:56 server-2.properties -rw-r--r--. 1 root root 172 Jan 7 05:55 server.properties -rw-r--r--. 1 root root 1032 Oct 27 08:56 tools-log4j.properties -rw-r--r--. 1 root root 1023 Oct 27 08:56 zookeeper.properties
我们主要修改 server.properties 这个文件即可
broker.id=0 listeners=PLAINTEXT://127.0.0.1:9092 port=9092 host.name=127.0.0.1 log.dirs=/opt/kafka/kafkalogs zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
因为我是在一台服务器搭建,可以将server.properties复制两份,分别命名为server1.properties,server2.properties,来模拟三台服务器。如果是在三台不同服务器,则不需要复制多份,只需要在三台服务器分别对server.properties进行配置即可.
#在config目录下复制两份server.properties,并命名 server-1.propertis, server-2.propertis cp server.properties server-1.propertis cp server.properties server-2.propertis
修改server1.properties如下:
broker.id=1 listeners=PLAINTEXT://127.0.0.1:9093 port=9093 host.name=127.0.0.1 log.dirs=/opt/kafka/kafkalogs1 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
修改server2.properties如下:
broker.id=2 listeners=PLAINTEXT://127.0.0.1:9094 port=9094 host.name=127.0.0.1 log.dirs=/opt/kafka/kafkalogs2 zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
启动kafka集群并测试
1、启动服务
#从后台启动Kafka集群(3台都需要启动) #进入到kafka的根目录 cd /opt/kafka/kafka_2.11-1.0.0 #模拟启动三个配置文件,代表三台服务器 ./bin/kafka-server-start.sh -daemon config/server.properties ./bin/kafka-server-start.sh -daemon config/server1.properties ./bin/kafka-server-start.sh -daemon config/server2.properties # 启动命令中的 -daemon 表示以守护进程的方式启动
2、测试kafka
创建主题:
#创建一个test主题,分区数为3,备份数为3
#在kafka根目录执行下面命令
bin/kafka-topics.sh --create --zookeeper 127.0.0.1:2181 --replication-factor 3 --partitions 3 --topic test
启动生产者:
#kafka根目录执行,启动一个生产者
bin/kafka-console-producer.sh --broker-list 127.0.0.1:9092 --topic test
不要关闭生产者窗口,再打开一个新窗口,进入到kafka根目录,启动消费者:
#启动消费者命令
bin/kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --topic test --from-beginning
生产者发送消息列表:
消费者接收信息列表:
在生产者发送一条消息,查看消费者是否有接收成功。接收成功后kafka集成环境搭建完成。