本次部署分为2次部署示例,第一部分为linux传统kafka-3.9的zookeeper模式,第二部分为docker部署kafka-4.0的kraft模式

#第一部分linux传统kafka-3.9的zookeeper模式

#每个节点上传kafka_2.13-3.9.0.tgz和jdk-17_linux-x64_bin.tar.gz到/opt下,kafka安装包和jdk可在官网下载

cd /opt && tar xvf kafka_2.13-3.9.0.tgz && tar xvf jdk-17_linux-x64_bin.tar.gz

mv kafka_2.13-3.9.0 kafka

vim /etc/profile     #追加如下环境变量

export JAVA_HOME=/opt/jdk-17

export PATH=$JAVA_HOME/bin:$PATH

source /etc/profile

mkdir /opt/kafka/data

vim /opt/kafka/config/server.properties

#配置kafka,每台主机中的 broker.id必须唯一,本次三台主机分别是1,2,3

broker.id=1

listeners=PLAINTEXT://192.168.1.20:9092

# 设置刚刚创建的数据目录

log.dirs=/opt/kafka/data

zookeeper.connect=192.168.1.20:2181,192.168.1.21:2181,192.168.1.22:2181

#三节点依次进行启动

nohup sh /opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties &

#上步zk全部启动后在进行

nohup sh /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties &

#第二部分为docker部署kafka-4.0的kraft模式,broker和controller安装至同一节点,并安装指定docker-27.3.1版本

#需要先在互联网环境服务器下载docker指定版本的安装包,下载后上传至离线环境

#下载地址:https://download.docker.com/linux/static/stable/x86_64/

#上传docker-27.3.1.tgz到/opt下

cd /opt && tar -xvf docker-27.3.1.tgz

#复制所有解压出来的文件进/usr/bin

cp /opt/docker/* /usr/bin/

vim /etc/systemd/system/docker.service

#复制写入下述配置

[Unit]

Description=Docker Application Container Engine

Documentation=https://docs.docker.com

After=network-online.target firewalld.service

Wants=network-online.target

[Service]

Type=notify

ExecStart=/usr/bin/dockerd

ExecReload=/bin/kill -s HUP $MAINPID

LimitNOFILE=infinity

LimitNPROC=infinity

TimeoutStartSec=0

Delegate=yes

KillMode=process

Restart=on-failure

StartLimitBurst=3

StartLimitInterval=60s

[Install]

WantedBy=multi-user.target

#完成写入配置后给予权限

chmod +x /etc/systemd/system/docker.service

systemctl daemon-reload

#启动并设置开机自启docker

systemctl enable docker --now

#清除安装文件

rm -rf /opt/docker


#下载docker-compose,下载地址:https://github.com/docker/compose/releases

#下滑选择所需版本,Assets点击下拉菜单,根据系统和cpu架构选择下载,直接下载二进制文件

#linux系统x86架构本次选择下载docker-compose-linux-x86_64

#上传docker-compose-linux-x86_64到/opt下

cd /opt/ && mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

#设置docker下拉镜像加速

vim /etc/docker/daemon.json

#写入多条加速配置

{

    "registry-mirrors": [

            "https://docker.211678.top",

            "https://docker.1panel.live",

            "https://hub.rat.dev",

            "https://docker.m.daocloud.io",

            "https://do.nark.eu.org",

            "https://dockerpull.com",

            "https://dockerproxy.cn",

            "https://docker.awsl9527.cn"

      ]

}

#生效配置

systemctl daemon-reload

systemctl restart docker

#先互联网环境服务器保存镜像,然后上传离线环境服务安装

#bitnami官方镜像在25.8.28日换库了,以前是bitnami/kafka,现在是bitnamilegacy/kafka

#以前的镜像库bitnami/kafka也可以用,本来被官方给删了,现在又传回去了,都可以用了

docker pull bitnamilegacy/kafka:4.0.0

docker save bitnamilegacy/kafka:4.0.0 > /opt/kafka_4.0.tar

#上传镜像到离线环境,将kafka_4.0.tar上传到离线环境服务器的/opt下

docker load < /opt/kafka_4.0.tar

mkdir /opt/kafka_4.0

vim /opt/kafka_4.0/docker-compose.yml

#每台节点写入如下compose配置,同一内kafka的id不能重复,本节点id为0,本集群为0,1,2,本集群ip为192.168.1.20

services:

  kafka-0:

    image: bitnamilegacy/kafka:4.0.0

    container_name: kafka-0

    ports:

      - "9092:9092"

      - "9093:9093"

    environment:

      - KAFKA_CFG_NODE_ID=0

      - KAFKA_CFG_PROCESS_ROLES=controller,broker

      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@192.168.1.20:9093,1@192.168.1.21:9093,2@192.168.1.22:9093

      - KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv

      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093

      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.20:9092

      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT

      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER

      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT

      - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3

      - KAFKA_CFG_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=3

      - KAFKA_CFG_TRANSACTION_STATE_LOG_MIN_ISR=2

    volumes:

      - /data/kafka:/bitnami/kafka

#注意 - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093这一条配置

#在4.0版本可以写成 PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093

#但是亲测在3.9版本就识别不了

#创建compose映射目录并赋予权限

mkdir -p /data/kafka/

chown -R 1001:1001 /data/kafka/

#每台节点配置完成后同时启动

docker-compose -f /opt/kafka_4.0/docker-compose.yml up -d

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐