首页主机资讯Kafka在Linux环境下如何进行集群搭建

Kafka在Linux环境下如何进行集群搭建

时间2025-11-07 19:27:03发布访客分类主机资讯浏览235
导读: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节点为例):
    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    # 节点3
    
    在每个ZooKeeper节点的dataDir目录下创建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上启动生产者:
    ./kafka-console-producer.sh --bootstrap-server zoo1:9092 --topic test-topic
    
    输入测试消息(如“Hello Kafka Cluster”)。
  • 消费消息:在节点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,controllernode.id等参数,具体参考官方文档。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Kafka在Linux环境下如何进行集群搭建
本文地址: https://pptw.com/jishu/745407.html
Linux Kafka配置时如何优化网络设置 如何通过Linux Kafka配置减少延迟

游客 回复需填写必要信息