超实用的Kafka集群搭建(有zk版)
2023-12-21 14:27:57
前言
本文讲述超实用的 Kafka
集群搭建流程,Kafka 2.8
以前的集群时依赖于 ZooKeeper
做服务协调,而 2.8
开始移除了 Zookeeper
的依赖 (后续会出文章讲解这块的功能情况)。
本文搭建的 Kafka
版本是 2.6.0
版本,因此也就是依赖 ZooKeeper
做服务协调,如果您已经有相关的 ZooKeeper
环境,可以进入正式部署环节,如果您只想搭建一个简单的 ZooKeeper
单体实例,可以自行 Google
学习;如果您想了解并搭建一个高可用的 ZooKeeper
集群,可以参考下列文章进一步学习:
机器准备
my_middleware-dev_10.12.3.40
my_middleware-dev_10.12.3.41
my_middleware-dev_10.12.3.42
创建 kafka 专属用户组和用户
groupadd -g 1013 kafka
useradd -M -g kafka -u 1013 kafka -s /sbin/nologin
# 创建 redis 需要的一些目录
mkdir -p /usr/local/kafka/script
mkdir -p /data/logs/kafka/
mkdir -p /data/database/kafka/
ln -snf /data/logs/kafka /usr/local/kafka/logs
# 创建需要的配置文件
# 授权文件和目录
chown -R kafka:kafka /data/logs/kafka/
chown -R kafka:kafka /data/database/kafka/
chown -R kafka:kafka /usr/local/kafka/script
下载安装
# 此处为了保持和服务器一样的版本,使用了 kafka 2.6.0 的 scala 2.12 版本
cd /data/downloads && wget https://archive.apache.org/dist/kafka/2.6.0/kafka_2.12-2.6.0.tgz
tar zxvf kafka_2.12-2.6.0.tgz
mv kafka_2.12-2.6.0 /usr/local/
ln -snf /usr/local/kafka_2.12-2.6.0 /usr/local/kafka
配置 zookeeper 的 hosts 地址
# 下面使用了内网 IP 的形式访问构建
192.168.3.35 zk01-dev.middle.com
192.168.3.34 zk02-dev.middle.com
192.168.3.33 zk03-dev.middle.com
# 你也可以使用外网IP构建
10.12.3.40 zk01-dev.middle.com
10.12.3.41 zk01-dev.middle.com
10.12.3.42 zk01-dev.middle.com
调整机器的 kafka 配置文件
cd /usr/local/kafka/config
# vim server.properties 修改服务的配置内容如下
# broker.id 改成你服务器对应需要的 id,此处我用服务器ip最后的来代替,你可以设置成1 2 3这种
broker.id=40
listeners=PLAINTEXT://0.0.0.0:9092
# 启用内网的情况下可以使用如下,替换IP为你的内网IP
listeners.internal=PLAINTEXT://192.168.3.35:9092
# 代表公网访问的情况;替换IP为你的公网IP
advertised.listeners=PLAINTEXT://10.12.3.40:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/data/logs/kafka
data.dirs=/data/database/kafka
num.partitions=3
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=2
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
# 替换成你设置的 ip 或者 hosts 地址
zookeeper.connect=zk01-dev.middle.com:2181,zk02-dev.middle.com:2181,zk03-dev.middle.com:2181
zookeeper.connection.timeout.ms=18000
group.initial.rebalance.delay.ms=500
auto.leader.rebalance.enable=true
unclean.leader.election.enable=false
default.replication.factor=2
delete.topic.enable=true
放行服务器之间的通讯
iptables -A INPUT -s 10.12.3.0/24 -p tcp -i eth0 -m multiport --dports 9092,9998 -j ACCEPT
iptables -A INPUT -s 192.168.3.0/24 -p tcp -i eth0 -m multiport --dports 9092,9998 -j ACCEPT
# 办公网段开放
iptables -A INPUT -s 10.4.0.0/16 -p tcp -i eth0 -m multiport --dports 9092 -j ACCEPT
iptables -A INPUT -s 10.3.0.0/16 -p tcp -i eth0 -m multiport --dports 9092 -j ACCEPT
# 放行 VPN 网段
iptables -A INPUT -s 192.168.41.0/16 -p tcp -i eth0 -m multiport --dports 9092 -j ACCEPT
创建启动脚本
# 创建启动脚本
touch /usr/local/kafka/script/start-cluster.sh && chmod +x /usr/local/kafka/script/start-cluster.sh
# vim /usr/local/kafka/script/start-cluster.sh
#!/bin/sh
export JMX_PORT="9998"
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export KAFKA_LOG_DIR="/data/logs/kafka"
export KAFKA_HOME="/usr/local/kafka"
nohup $KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties >> /data/logs/kafka/startup.log 2>&1 &
# 创建快捷停止脚本
touch /usr/local/kafka/script/stop-cluster.sh && chmod +x /usr/local/kafka/script/stop-cluster.sh
# vim /usr/local/kafka/script/stop-cluster.sh
#!/bin/sh
export JMX_PORT="9998"
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
export KAFKA_LOG_DIR="/data/logs/kafka"
export KAFKA_HOME="/usr/local/kafka"
$KAFKA_HOME/bin/kafka-server-stop.sh $KAFKA_HOME/config/server.properties
# 指定启动用户启动的脚本
touch /usr/local/kafka/start.sh && chmod +x /usr/local/kafka/start.sh
# vim /usr/local/kafka/start.sh
#!/bin/sh
sudo -u kafka /bin/sh /usr/local/kafka/script/start-cluster.sh
# 指定启动用户关闭的脚本
touch /usr/local/kafka/stop.sh && chmod +x /usr/local/kafka/stop.sh
# vim /usr/local/kafka/stop.sh
#!/bin/sh
sudo -u kafka /bin/sh /usr/local/kafka/script/stop-cluster.sh
文章来源:https://blog.csdn.net/ethenoscar2011/article/details/132776371
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!