Kafka+Zookeeper集群部署分享
编辑Kafka+Zookeeper集群部署分享
heycm.cn · 2022年1月21日 09点07分
Kafka+Zookeeper集群搭建
本文将搭建一个3+3的服务集群,即3节点zookeeper
+3节点kafka
下表是服务器资源配置
zookeeper 节点配置
节点 | 版本 | IP | 端口 |
---|---|---|---|
zk1 | 3.7.0 | 192.168.100.191 | 2181,2888,3888 |
zk2 | 3.7.0 | 192.168.100.192 | 2181,2888,3888 |
zk3 | 3.7.0 | 192.168.100.193 | 2181,2888,3888 |
kafka 节点配置
节点 | 版本 | IP | 端口 |
---|---|---|---|
kfk1 | 2.12-3.0.0 | 192.168.100.191 | 9092,9999 |
kfk2 | 2.12-3.0.0 | 192.168.100.192 | 9092,9999 |
kfk3 | 2.12-3.0.0 | 192.168.100.193 | 9092,9999 |
备注:
-
以上所有服务器必须配备
JDK1.8
环境,并将开放所有涉及端口
,否则将无法保证正常安装成功。[root@localhost /]# java -version java version "1.8.0_291" Java(TM) SE Runtime Environment (build 1.8.0_291-b10) Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
-
数据盘挂载目录为
/data
目录,不强制要求,但需修改相应配置文件,否则可能会导致数据丢失。[root@localhost /]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sdb1 50G 437M 47G 1% /data
Zookeeper集群部署
zk1(192.168.100.191)
-
将
zookeeper
压缩包上传到服务器/data/soft
目录下[root@localhost soft]# ll 总用量 387188 -rw-r--r--. 1 root root 12387614 1月 19 09:58 apache-zookeeper-3.7.0-bin.tar.gz
-
在当前目录下将zk解压缩到
/opt
目录下,将解压出来的zk目录重命名/opt/zookeeper
,此目录即zk程序目录# 解压缩 tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt # 重命名 mv /opt/apache-zookeeper-3.7.0-bin /opt/zookeeper
-
创建zk的数据目录
/data/zookeeper/data
和日志目录/data/zookeeper/logs
,两个目录建议创建在服务器数据盘下mkdir -p /data/zookeeper/data /data/zookeeper/logs
-
进入目录
/opt/zookeeper/conf
修改配置文件[root@localhost conf]# pwd /opt/zookeeper/conf [root@localhost conf]# ll 总用量 16 -rw-r--r--. 1 1000 1000 535 3月 17 2021 configuration.xsl -rw-r--r--. 1 1000 1000 3435 3月 17 2021 log4j.properties -rw-r--r--. 1 1000 1000 1148 3月 17 2021 zoo_sample.cfg
zoo.sample.cfg
为配置文件样例,真正的配置文件为zoo.cfg
,所以要拷贝一份配置文件命名为zoo.cfg
# 拷贝配置文件 cp zoo.sample.cfg zoo.cfg # 修改配置文件 vi zoo.cfg # 基础配置如下内容,写入并保存 tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/logs clientPort=2181 server.1=192.168.100.191:2888:3888 server.2=192.168.100.192:2888:3888 server.3=192.168.100.193:2888:3888
dataDir
和dataLogDir
修改为相应的数据目录和日志目录,server.N
配置集群节点信息 -
配置节点1标识
echo "1" > /data/zookeeper/data/myid
此时当前节点配置完成,去配置节点2和节点3。
zk2(192.168.100.192)
-
重复
zk1
的步骤1-4 -
配置节点2标识
echo "2" > /data/zookeeper/data/myid
zk3(192.168.100.193)
-
重复
zk1
的步骤1-4 -
配置节点3标识
echo "3" > /data/zookeeper/data/myid
启动集群
三个节点依次启动
-
进入启动目录
/opt/zookeeper
cd /opt/zookeeper
-
启动命令
./bin/zkServer.sh start
输出以下信息表示启动成功
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED -
查看状态
./bin/zkServer.sh status
follwer表示跟随者节点,leader表示领导者节点
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower -
停止命令
./bin/zkServer.sh stop
输出以下信息表示正常关闭
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED -
连接测试
随机选择一个节点,测试连接其他节点,例如在节点2连接节点1:
./bin/zkCli.sh -server 192.168.100.191:2181
出现如下命令行即表示可以正常进入zookeeper
[zk: 192.168.100.191:2181(CONNECTING) 0]
Kafka集群部署
kfk1(192.168.100.191)
-
将
kafka
压缩包上传到服务器/data/soft
目录下[root@localhost soft]# ll 总用量 387188 -rw-r--r--. 1 root root 12387614 1月 19 09:58 apache-zookeeper-3.7.0-bin.tar.gz -rw-r--r--. 1 root root 86486610 1月 18 17:16 kafka_2.12-3.0.0.tgz
-
在当前目录下将kfk解压缩到
/opt
目录下,将解压缩出来的kfk目录重命名/opt/kafka
,此目录即kfk程序目录# 解压缩 tar -zxvf kafka_2.12-3.0.0.tgz -C /opt # 重命名 mv /opt/kafka_2.12-3.0.0 /opt/kafka
-
成绩kfk的日志目录
/data/kafka/logs
,建议创建在服务器数据盘下这里的kafka日志,实际上是kafka的数据,而并非kafka的运行日志
mkdir -p /data/kafka/logs
-
进入目录
/opt/kafka/config
修改配置文件server.properties
忽略了其他配置文件
[root@localhost config]# pwd /opt/kafka/config [root@localhost config]# ll 总用量 72 -rw-r--r--. 1 root root 6943 1月 20 15:16 server.properties
PS:为了防止操作失误或其他异常而导致不可预知的问题,建议备份一个原原本本的配置文件
cp server.properties server_sample.properties
# 修改配置文件 vi server.properties # 修改如下配置项,其他配置项默认,写入并保存 broker.id=1 listeners=PLAINTEXT://192.168.100.191:9092 num.network.threads=8 num.io.threads=8 socket.send.buffer.bytes=2097152 socket.receive.buffer.bytes=2097152 socket.request.max.bytes=134217728 log.dirs=/data/kafka/logs zookeeper.connect=192.168.100.191:2181,192.168.100.192:2182,192.168.100.193:2181
参数说明
不同的服务器资源条件不同,参数值需视具体情况做不同调整
配置项 默认值 说明 broker.id 0 Broker唯一标识 listeners PLAINTEXT://:9092 监听信息 num.network.threads 3 处理网络请求的最大线程数 num.io.threads 8 处理磁盘I/O的最大线程数 socket.send.buffer.bytes 102400 socket的发送缓冲区 socket.receive.buffer.bytes 102400 socket的接收缓冲区 socket.request.max.bytes 104857600 socket请求的最大字节数 log.dirs /tmp/kafka-logs 日志存放目录,多个目录使用逗号分割 zookeeper.connect localhost:2181 ZooKeeper服务器地址,多台用","间隔 -
写启动/停止脚本
a.切换目录到
/opt/kafka
cd /opt/kafka
b.编辑启动脚本
vi start.sh
c.输入以下内容并保存
#!/bin/bash JMX_PORT=9999 ./bin/kafka-server-start.sh -daemon ./config/server.properties
d.新建停止脚本
vi stop.sh
e.输入以下内容并保存
#!/bin/bash ./bin/kafka-server-stop.sh
f.授权
chmod +x start.sh chmod +x stop.sh
kfk2(192.168.100.192)
-
重复
kfk1
的所有步骤 -
修改步骤4部分配置,其他参照
kfk1
broker.id=2 listeners=PLAINTEXT://192.168.100.192:9092
kfk3(192.168.100.193)
-
重复
kfk1
的所有步骤 -
修改步骤4部分配置,其他参照
kfk1
broker.id=3 listeners=PLAINTEXT://192.168.100.193:9092
启动集群
三个节点依次启动
-
进入启动目录
/opt/kafka
cd /opt/kafka
-
启动节点
./start.sh
-
查看端口监听,正常监听说明启动成功
[root@localhost kafka]# netstat -lnp | grep 9092 tcp6 0 0 192.168.100.191:9092 :::* LISTEN 5180/java
-
停止节点
./stop.sh
附录
[Zookeeper.Doc](ZooKeeper: Because Coordinating Distributed Systems is a Zoo)
[Zookeeper.Download](Apache ZooKeeper)
[Kafka.Download](Apache Kafka)
- 1
- 0
-
分享