• kafka群集部署


    一.环境准备

    当前环境:centos7.9三台
    软件版本:kafka_2.13-3.0.0
    环境目录:/usr/local/kafka
    
    • 1
    • 2
    • 3

    下载kafka;包含了zookeeper(三台机器都要操作)

    [root@localhost opt]# wget https://archive.apache.org/dist/kafka/3.0.0/kafka_2.13-3.0.0.tgz
    [root@localhost opt]# tar zxvf kafka_2.13-3.0.0.tgz
    [root@localhost opt]# mv kafka_2.13-3.0.0 /usr/local/kafka
    
    • 1
    • 2
    • 3

    配置环境变量(三台机器都要操作)

    [root@localhost opt]# vim /etc/profile
    ## 末尾添加
    export ZOOKEEPER_HOME=/usr/local/kafka
    export PATH=$PATH:$ZOOKEEPER_HOME/bin
    
    ## 加载环境变量
    [root@localhost opt]# source /etc/profile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    二.配置Zookeeper

    由于Kafka分区位置和主题配置之类的元数据都存储在ZooKeeper群集中,所以要搭建kafka集群环境必须先安装zookeeper群集

    zookeeper配置文件修改(三台配置一样)

    [root@localhost ~]# cd /usr/local/kafka/
    [root@localhost kafka]# vim config/zookeeper.properties

    dataDir=/tmp/zookeeper				## 主要用来配置zookeeper server数据的存放路径
    clientPort=2181						## zookeeper服务端口
    tickTime=2000						## zookeeper客户端与服务器之间的心跳时间。默认值为2000毫秒,即2秒
    initLimit=10						## Follower连接到Leader并同步数据的最大时间
    syncLimit=5							## Follower同步Leader的最大时间
    maxClientCnxns=0					## 客户端最大连接数,设置0或者不设置表示取消连接数限制
    admin.enableServer=false			## 禁用 Admin Server
    server.0=192.168.1.13:2888:3888		## 配置zookeeper群集
    server.1=192.168.1.108:2888:3888
    server.2=192.168.1.143:2888:3888
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    创建myid文件(根据server.0这些配置对准;三台机器都要操作)

    192.168.1.13机器上

    [root@localhost kafka]# mkdir -p /opt/zookeeper;echo "0" > /tmp/zookeeper/myid
    
    • 1

    192.168.1.108机器上

    [root@localhost kafka]# mkdir -p /opt/zookeeper;echo "1" > /tmp/zookeeper/myid
    
    • 1

    192.168.1.143机器上

    [root@localhost kafka]# mkdir -p /opt/zookeeper;echo "2" > /tmp/zookeeper/myid
    
    • 1

    创建system启动文件

    [root@localhost kafka]# vim /usr/lib/systemd/system/zookeeper.service

    [Unit]
    Description=zookeeper
    After=network.target
    Wants=network.target
    
    [Service]
    Type=simple
    Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/idk/bin"
    User=root
    Group=root
    ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    启动zookeeper

    [root@localhost kafka]# systemctl enable zookeeper.service
    [root@localhost kafka]# systemctl start zookeeper.service

    三.配置Kafka

    kafka配置文件修改

    [root@localhost ~]# cd /usr/local/kafka/
    [root@localhost kafka]# vim config/server.properties (直接复制到另外两台)

    broker.id=1												## 第一台1,第二台为2 第三台为3
    listeners=PLAINTEXT://:9092								## 监听IP地址和端口
    advertised.listeners=PLAINTEXT://192.168.1.13:9092		## 配置kafka的broker ip
    num.network.threads=3
    num.io.threads=8
    socket.send.buffer.bytes=102400
    socket.receive.buffer.bytes=102400
    socket.request.max.bytes=404857600
    log.dirs=/tmp/kafka-logs
    num.partitions=1
    num.recovery.threads.per.data.dir=1
    offsets.topic.replication.factor=1
    transaction.state.log.replication.factor=1
    transaction.state.log.min.isr=1
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    zookeeper.connect=192.168.1.13:2181,192.168.1.108:2181,192.168.1.143:2181	##连接zookeeper
    zookeeper.connection.timeout.ms=18000
    group.initial.rebalance.delay.ms=0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    ## 修改192.168.1.108的配置
    broker.id=2
    listeners=PLAINTEXT://:9092
    advertised.listeners=PLAINTEXT://192.168.1.108:9092
    
    修改192.168.1.143的配置
    broker.id=3
    listeners=PLAINTEXT://:9092
    advertised.listeners=PLAINTEXT://192.168.1.143:9092
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    ## 修改JVM参数 (根据需求修改)
    kafka_heap_opts:指定堆大小,默认是1GB
    
    [root@localhost kafka]# vim bin/kafka-server-start.sh 
    if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then
        export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G -XX:MaxDirectMemorySize=1G"			## 修改这一行即可
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    创建system启动文件

    [root@localhost kafka]# vim /usr/lib/systemd/system/kafka.service

    [Unit]
    Description=kafka
    After=network.target
    Wants=network.target
    
    [Service]
    Type=simple
    Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/app/idk/bin"
    User=root
    Group=root
    ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    启动zookeeper
    [root@localhost kafka]# systemctl enable kafka.service
    [root@localhost kafka]# systemctl start kafka.service

    踩坑

    服务启动不起来 找不到Java

    /usr/local/kafka/bin/kafka-run-class.sh: line 309: exec: java: not found

    第一种: 修改配置文件中的Java环境

    ## 修改kafka-run-class.sh 配置文件
    [root@localhost kafka]# vim bin/kafka-run-class.sh
    ## 找到如下:
    # Which java to use
    if [ -z "$JAVA_HOME" ]; then
      JAVA="/usr/local/jdk/bin/java"   				## 修改到绝对路径
    else
      JAVA="$JAVA_HOME/bin/java"
    fi
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    第二种: 做个软连接

    [root@localhost kafka]# echo $PATH
    /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/laserx/.local/bin:/home/laserx/bin
    
    [root@localhost kafka]# ln -s /usr/local/jdk1.8.0_251/bin/java /usr/local/bin/java
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【牛客刷题】带你在牛客刷题第八弹(简单排序)
    【JavaScript高级】01-this的指向
    元宇宙009 | 虚拟人物的陪伴能够缓解抑郁症吗?
    【语音识别】在Win11使用Docker部署FunASR服务器
    1152:最大数max(x,y,z)
    海藻酸钠-聚乳酸|PLA-alginate|海藻酸钠-PEG-聚乳酸/聚已内酯PCL
    Docker存储卷
    对比纯软开与嵌入式硬件开发谁更好呢?
    论文阅读【4】Product-based Neural Networks for User Response Prediction
    【深度学习】实验13 使用Dropout抑制过拟合
  • 原文地址:https://blog.csdn.net/weixin_45552105/article/details/126987809