kafka+zookeeper集群搭建
规划
服务 | ip | 端口 | 配置 |
---|---|---|---|
kafka+zookeeper | 192.168.138.151 | 2181/9092/2888/3888 | 2CPU、2G内存 |
kafka+zookeeper | 192.168.138.152 | 2181/9092/2888/3888 | 2CPU、2G内存 |
kafka+zookeeper | 192.168.138.153 | 2181/9092/2888/3888 | 2CPU、2G内存 |
开启端口,关闭selinux
sh
firewall-cmd --zone=public --add-port=2181/tcp --permanent
firewall-cmd --zone=public --add-port=9092/tcp --permanent
firewall-cmd --zone=public --add-port=2888/tcp --permanent
firewall-cmd --zone=public --add-port=3888/tcp --permanent
firewall-cmd --reload
set -i '/^SELINUX/s/enforcing/disabled/g' /etc/selinux/config
setenforce 0
安装jdk
- 上传jdk-8u172-linux-x64.tar.gz到/root目录下并解压
sh
tar -xzvf jdk-8u172-linux-x64.tar.gz
sudo mv jdk1.8.0_172/ /usr/local/java
-
配置环境变量,在末行加入
vi /etc/profile
shexport JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin
-
让环境变量生效
shsource /etc/profile
-
查看java 版本
shjava -version
zookeeper安装
-
所有机器都执行,下载apache-zookeeper-3.7.2-bin.tar.gz并上传到服务器,解压
shtar -xzvf apache-zookeeper-3.7.2-bin.tar.gz mv apache-zookeeper-3.7.2-bin /usr/local/zookeeper
-
创建配置文件
shcp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg
-
修改/usr/local/zookeeper/conf/zoo.cfg文件(默认的zookeeper配置文件)
vim /usr/local/zookeeper/conf/zoo.cfg
shdataDir=/usr/local/zookeeper/data #数据存放目录,需要创建 dataLogDir=/usr/local/zookeeper/logs #日志存放目录,需要创建 #集群信息,需要新增。 server.1=192.168.138.151:2888:3888 #2888:节点间传送数据的端口,3888:选举节时的通信端口 server.2=192.168.138.152:2888:3888 server.3=192.168.138.153:2888:3888
-
在所有节点的数据存储目录中增加一个名为myid的文件,用于标识节点ID。
shecho 1 > /usr/local/zookeeper/data/myid #151上执行数字为节点编号,与配置文件中的server.1中的数字对应 echo 2 > /usr/local/zookeeper/data/myid #152上执行数字为节点编号,与配置文件中的server.2中的数字对应 echo 3 > /usr/local/zookeeper/data/myid #153上执行数字为节点编号,与配置文件中的server.3中的数字对应
kafka安装
-
下载kafka_2.12-3.6.2.tgz并上传解压
shtar -xvf kafka_2.12-3.6.2.tgz mv kafka_2.12-3.6.2 /usr/local/kafka
-
修改配置文件: vim /usr/local/kafka/config/server.properties
shbroker.id=1 #节点编号,kafka集群中唯一,每个节点都不一样,152和153上需要修改 listeners=PLAINTEXT://192.168.138.151:9092 #改为本机IP+端口,152和153上需要修改 log.dirs=/usr/local/kafka/logs #日志文件目录,目录需要创建 zookeeper.connect=192.168.138.151:2181,192.168.138.152:2181,192.168.138.153:2181
启动集群
- 启动zookeeper。
sh
/usr/local/zookeeper/bin/zkServer.sh start
/usr/local/zookeeper/bin/zkServer.sh status #状态查看
-
启动kafka。
sh/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
测试集群
- 创建主题。
sh
/usr/local/kafka/bin/kafka-topics.sh --bootstrap-server 192.168.138.151:9092 --create --replication-factor 2 --partitions 3 --topic test-topic #创建主题,--replicationfactor:副本数量,--partitions:分区数量,--topic:主题名称
- 发送消息。
sh
/usr/local/kafka/bin/kafka-console-producer.sh --broker-list 192.168.138.151:9092,192.168.138.152:9092,192.168.138.153:9092 --topic test-topic
- 接收消息。
sh
/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.138.151:9092,192.168.138.152:9092,192.168.138.153:9092 --topic test-topic
--from-beginning