要配置Kafka集群,首先要安装jdk8,zookeeper,链接我放评论里了(不知道为啥编辑里不能放百度云链接🥲)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/c7332bf30bbf7432c629c2bb452a8a1b.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ffef9fa3f25f7d9d516e5a216431cc0f.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/be94b40c5ac2d8bafcbb15170386b725.png)
这三个文件里面放的.tar.gz文件,然后我将其解压到server目录里面,比如将zookeeper解压到server目录,我已进入softwar的zookeeper目录里面了
tar -zxvf zookeeper-3.4.14.tar.gz -C /home/yang/server/
搭建zookeeper集群
我创建了三个节点,如下所示
关闭防火墙
首先我们都进入root权限里面,命令是su,然后输入你的密码
接着我们先看下防火墙的状态,命令是
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
配置zookeeper
进入 zookeeper的data目录,输入命令
[root@node01 data]#vi myid
进入后输入1(我这里是第一个节点输入1,其他两个分别输入2和3),这里是为了对应下面的server.1,server.2,server.3
然后进入conf目录
cd /home/yang/server/kafka/conf/
注:我前面将解压的zookeeper.tar.gz重命名了,重命名命令是
mv zookeeper-3.4.14.tar.gz zookeeper
然后 ls可以看到里zoo_sample.cfg,我们不要动他,复制一份并重命名为zoo.cfg,命令是
cp zoo_sample.cfg zoo.cfg
接着输入vi zoo.cfg,在里面追加下面几行,这个路径根据个人情况定,但是一定是在zookeeper目录里面创建data和datalog,这里面后三句前面的ip是你三个节点的ip,后面:2888:3888不要变,即
server.A=B:C:D;A分别是1,2,3代表你的三个节点,B代表三个节点的IP,2888是节点服务器的对外服务端口,3888是节点之间的选举端口(通过3888端口节点内部商量选举一个leader),2181端口是客户端连接节点的端口
dataDir=/home/yang/server/zookeeper/data
dataLogDir=/home/yang/server/zookeeper/datalog
server.1=192.168.254.128:2888:3888
server.2=192.168.254.132:2888:3888
server.3=192.168.254.134:2888:3888
clientPort=2181
因为上面又data和datalog,故需要在zookeeper目录下创建data和datalog,命令是
[root@node01 zookeeper]# mkdir data
[root@node01 zookeeper]# mkdir datalog
ls下
其他两个节点同样是这样配置
配置环境
然后我们来配置下zookeeper,kafka,jdk的环境变量
输入 vi /etc/profile,进入后在末尾追加,我们这里一并将jdk,kafka,zookeeper的环境配置好,其他两个节点也这样配置
export KAFKA_HOME=/home/yang/server/kafka
export PATH=:$PATH:${KAFKA_HOME}
export JAVA_HOME=/home/yang/software/jdk1.8/jdk1.8.0_331
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export ZOOKEEPER_HOME=/home/yang/server/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
我没将jdk解压在server里,我就解压在software/jdk1.8里面,这个无所谓放哪
启动zookeeper
分别进去三个节点的zookeeper的bin目录下,启动zookeeper服务,输入
zkServer.sh start
三个节点都启动后,查看服务的状态
zkServer.sh status
这里我第二,三节点的模式是follower,节点一是leader,这个是选举出来的,不一定节点一就是leader
搭建kafka集群
上面我们已经搭建好zookeeper集群了,下面来到我们的主角kafka
进入kafka的config目录,开始配置server.properties
vi server.properties
我们需要修改一下
broker.id=0
listeners=PLAINTEXT://192.168.254.128:9092
advertised.listeners=PLAINTEXT://192.168.254.128:9092
log.dirs=/home/yang/server/kafka/kafkalogs/
zookeeper.connect=192.168.254.128:2181,192.168.254.132:2181,192.168.254.134:2181/myTest
其中将三个broker
的id分别设为0,1,2
两个listeners
里面的ip就是本节点的ip
log.dirs
需要在kafka目录里面mkdir一个文件,文件名自定义,我这里mkdir kafkalogs
zookeeper.connect
里面的三个ip分别对应我的三个节点的IP,最后的/myTest代表我的topic
启动kafka服务
分别进入三个节点的kafka的bin目录,输入以下命令
kafka-server-start.sh /home/yang/server/kafka/config/server.properties
然后我们输入以下命令查看kafka集群是否启动成功
[root@node01 bin]# kafka-topics.sh --bootstrap-server 192.168.254.128:9092 --list
若成功什么都不会显示
发送消息
先创建一个topic(还是在kafka的bin目录下),这里我命名为myTest
kafka-topics.sh --create --bootstrap-server 192.168.254.128:9092 --topic myTest
查看topic
kafka-topics.sh --list --bootstrap-server 192.168.254.128:9092
发送消息,这里输完命令后先别输入内容
kafka-console-producer.sh --broker-list 192.168.254.128:9092 --topic myTest
开启一个节点接受消息(同样要进入此节点kafka的bin目录下),命令为
kafka-console-consumer.sh --bootstrap-server 192.168.254.128:9092 --topic myTest --from-beginning
然后在发送节点里面输入hello,world(输入消息后,按回车即可发送),此时第二个节点就会显示hello,world
这里我节点1发送消息,节点2 成功接受到了消息