Kafka在Linux环境下如何进行集群搭建
导读:Kafka在Linux环境下集群搭建步骤 1. 环境准备 1.1 安装Java Kafka依赖Java运行环境(推荐OpenJDK 8或11),以Ubuntu/Debian为例,安装命令如下: sudo apt update &&a...
Kafka在Linux环境下集群搭建步骤
1. 环境准备
1.1 安装Java
Kafka依赖Java运行环境(推荐OpenJDK 8或11),以Ubuntu/Debian为例,安装命令如下:
sudo apt update &
&
sudo apt install -y openjdk-8-jdk
验证安装:
java -version # 应输出Java版本信息(如openjdk version "1.8.0_392")
CentOS/RHEL系统替换为:
sudo yum install -y java-1.8.0-openjdk-devel
1.2 安装Zookeeper(Kafka依赖其管理元数据)
Kafka 3.5+版本支持KRaft模式(无需ZooKeeper),但传统集群仍需ZooKeeper。以下为ZooKeeper集群部署步骤:
- 下载并解压:从Apache官网下载稳定版ZooKeeper(如3.7.1),解压至指定目录:
wget https://downloads.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz mv apache-zookeeper-3.7.1-bin /usr/local/zookeeper - 配置ZooKeeper集群:编辑
/usr/local/zookeeper/conf/zoo.cfg,添加以下内容(以3节点为例):在每个ZooKeeper节点的tickTime=2000 initLimit=5 syncLimit=2 dataDir=/var/lib/zookeeper # 数据目录(需提前创建:sudo mkdir -p /var/lib/zookeeper) clientPort=2181 server.1=zoo1:2888:3888 # 节点1,2888用于Leader选举,3888用于Leader与Follower通信 server.2=zoo2:2888:3888 # 节点2 server.3=zoo3:2888:3888 # 节点3dataDir目录下创建myid文件,内容为对应server.X中的X(如节点1的myid内容为1):echo 1 > /var/lib/zookeeper/myid # 节点1 echo 2 > /var/lib/zookeeper/myid # 节点2 echo 3 > /var/lib/zookeeper/myid # 节点3 - 启动ZooKeeper集群:在每个节点上执行:
验证状态:cd /usr/local/zookeeper/bin ./zkServer.sh start./zkServer.sh status # 应显示“Mode: leader”或“Mode: follower”
2. 下载并解压Kafka
从Apache官网下载最新稳定版Kafka(如3.6.0),解压至指定目录:
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz
tar -zxvf kafka_2.13-3.6.0.tgz
mv kafka_2.13-3.6.0 /usr/local/kafka
建议将Kafka目录所有者改为运行用户(如kafka):
sudo chown -R kafka:kafka /usr/local/kafka
3. 配置Kafka集群
编辑每个Kafka节点的config/server.properties文件,关键参数如下:
- 节点唯一标识:
broker.id必须唯一(如节点1设为1,节点2设为2); - ZooKeeper连接:
zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181(若使用KRaft模式,后续需替换为controller配置); - 监听端口:
listeners=PLAINTEXT://your_server_ip:9092(替换为节点实际IP,若为测试环境可使用localhost); - 日志存储:
log.dirs=/var/lib/kafka-logs(需提前创建目录并授权:sudo mkdir -p /var/lib/kafka-logs & & sudo chown -R kafka:kafka /var/lib/kafka-logs); - 副本与分区:
default.replication.factor=3(副本数,生产环境建议≥3)、num.partitions=3(默认分区数,根据吞吐量调整); - 性能优化:
num.network.threads=3(网络线程数)、num.io.threads=8(IO线程数)、log.retention.hours=168(日志保留时间,单位:小时)。
4. 启动Kafka集群
在每个节点上执行以下命令启动Kafka服务(后台运行):
cd /usr/local/kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties
验证Kafka进程是否启动:
jps # 应显示“Kafka”进程
5. 验证集群状态
5.1 创建测试Topic
在任意节点上创建Topic(副本数设为3,分区数设为3):
./kafka-topics.sh --create --bootstrap-server zoo1:9092 --replication-factor 3 --partitions 3 --topic test-topic
查看Topic列表:
./kafka-topics.sh --list --bootstrap-server zoo1:9092
5.2 发送与消费消息
- 发送消息:在节点1上启动生产者:
输入测试消息(如“Hello Kafka Cluster”)。./kafka-console-producer.sh --bootstrap-server zoo1:9092 --topic test-topic - 消费消息:在节点2上启动消费者:
应能接收到生产者发送的消息,说明集群通信正常。./kafka-console-consumer.sh --bootstrap-server zoo1:9092 --topic test-topic --from-beginning
注意事项
- 防火墙设置:开放ZooKeeper(2181端口)和Kafka(9092端口)的通信权限(如CentOS使用
firewall-cmd --add-port=2181/tcp --permanent); - 生产环境优化:建议开启
unclean.leader.election.enable=false(禁止非同步副本成为Leader,避免数据丢失)、auto.leader.rebalance.enable=false(关闭自动Leader重平衡,减少不必要的切换); - KRaft模式:Kafka 3.5+版本推荐使用内置KRaft模式(无需ZooKeeper),配置更简单,需修改
server.properties中的process.roles=broker,controller、node.id等参数,具体参考官方文档。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Kafka在Linux环境下如何进行集群搭建
本文地址: https://pptw.com/jishu/745407.html
