Linux(centos7)下的kafka集群搭建
1.准备工作–环境统一
-
准备两台Linux虚拟机(本文用的centos7系统)
先设置主机名kafka-01和kafka-02(可以自定义主机名) -
关闭防火墙和selinux
关闭防火墙
[root@kafka-01 ~]# systemctl stop firewalld
开机禁止
[root@kafka-01 ~]# systemctl disable firewalld
关闭selinux:
[root@kafka-01~]# vim /etc/selinux/config
将SELINUX=enforcing这一行改成SELINUX=disable
selinux修改之后生效需要重启服务器 -
安装一些常用软件:
[root@kafka-01~]# yum install wget vim lsof -y
2.开始搭建
-
先安装java、kafka、zookeeper(kafka有自带的zookeeper,但可能会出现一些问题,这里建议从官网下载zookeeper)
[root@kafka-01 ~]# yum install java -y
-
可以先进入/opt目录下(一般下载到这里)
[root@kafka-01 opt]# wget https://mirrors.bfsu.edu.cn/apache/kafka/2.8.0/kafka_2.12-2.8.0.tgz
会在当前目录下得到一个kafka_2.12-2.8.0.tgz的压缩包,再进行解压
[root@kafka-01 opt]# tar -xf kafka_2.12-2.8.0.tgz [root@kafka-01 opt]# wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
同样解压apache-zookeeper-3.6.3-bin.tar.gz
[root@kafka-01 opt]# tar -xf apache-zookeeper-3.6.3-bin.tar.gz
-
修改配置文件
修改/etc/hosts文件,添加如下内容:(IP地址是自己虚拟机上的,后面再加上对应的主机名,两台Linux都要添上)
192.168.254.158 kafka-01
192.168.254.159 kafka-02 -
修改/opt/kafka_2.12-2.8.0/config/server.properties:(下面以kafka-01主机名为例)
broker.id=1
listeners=PLAINTEXT://kafka-01:9092
zookeeper.connect=192.168.254.158:2181,192.168.254.159:2181 -
修改config/zookeeper.properties: (两台Linux虚拟机都要添上,server.1和2分别对应上面的broker.id)
server.1=192.168.254.158:3888:4888 (如果你是server.1上面对应的broker.id为1)
server.2=192.168.254.159:3888:4888 -
zookeeper配置:
进入/opt/apache-zookeeper-3.6.3-bin/conf[root@kafka-01 conf]# pwd /opt/apache-zookeeper-3.6.3-bin/conf [root@kafka-01 conf]# cp zoo_sample.cfg zoo.cfg [root@kafka-01 conf]# ls configuration.xsl log4j.properties zoo.cfg zoo_sample.cfg
修改zoo.cfg, 添加如下两行:
server.1=192.168.254.158:3888:4888
server.2=192.168.254.159:3888:4888 -
创建/tmp/zookeeper目录 ,在目录中添加myid文件,文件内容就是本机指定的zookeeper id内容(上面对应的broker.id的值)
如:在
192.168.254.158机器上
echo 1 > /tmp/zookeeper/myid -
启动zookeeper和kafka:
#出现下面信息启动成功
[root@kafka-01 ~]# /opt/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
#进入/opt/kafka_2.12-2.8.0 (-daemon 表示以守护进程的方式启动)
[root@kafka-01 kafka_2.12-2.8.0]# bin/kafka-server-start.sh -daemon config/server.properties
#Mode有两种类型:leader和follower,leader代表领导(主节点),follower代表下属(备节点)
#zk集群一般只有一个leader,多个follower,主一般是相应客户端的读写请求,而从主同步数据,当主挂掉之后就会从follower里投票选举一个leader出来。 -
由于zookeeper启动命令太长,我们可以加入环境变量
命令加入环境变量:
[root@kafka-01 ~]#vim .bash_profile
将路径添加进去
ZK_PATH=/opt/apache-zookeeper-3.6.3-bin/bin
export PATH=$PATH:$ZK_PATH -
查看zookeeper状态
[root@kafka-01 ~]# zkServer.sh status /usr/bin/java ZooKeeper JMX enabled by default Using config: /opt/apache-zookeeper-3.6.3-bin/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
3.测试kafka
-
测试
进入/opt/kafka_2.12-2.8.0
创建topic(我创建的topic是sc,下面的IP地址填自己服务器的地址,任意一个)[root@kafka-01 kafka_2.12-2.8.0]# bin/kafka-topics.sh --create --zookeeper 192.168.254.158:2181 --replication-factor 1 --partitions 1 --topic sc
-
查看topic
[root@kafka-01 kafka_2.12-2.8.0]# bin/kafka-topics.sh --list --zookeeper 192.168.254.158:2181
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
__consumer_offsets (这个是系统自带的topic)
sc (自己创建的) -
创建生产者(輸入消息)
[root@kafka-01 kafka_2.12-2.8.0]# bin/kafka-console-producer.sh --broker-list 192.168.254.158:9092 --topic sc >hello >sanchuang tongle >nihao >world !!!!!!
-
创建消费者(另起窗口或者另一台服务器,用来接收生产者的消息)
[root@kafka-01 kafka_2.12-2.8.0]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.254.158:9092 --topic sc --from-beginning
在消费者窗口接收到了生产者的消息及测试成功
参考:https://blog.csdn.net/weixin_42575806/article/details/80981743