• kafka 开启认证授权


    前言

    1、前面自己写了一篇关于各个环境各个模式的安装的文章,大家可以去看看 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

    2、使用版本 kafka_2.13-3.4.1

    3、kafka验证方式,有两大类如下,文档内容在 kafka官方文档的 第七节 security,强烈建议大家去看下,不想看英文的可以翻译中文后看

    在这里插入图片描述

    4、而SASL 又细分如下 4 小类,这四种都可以使用

    类型说明官方文档链接
    SASL/GSSAPI (Kerberos)使用的Kerberos认证,可以集成目录服务,比如AD。从Kafka0.9版本开始支持Kerberos
    SASL/PLAIN使用简单用户名和密码形式。从Kafka0.10版本开始支持,不支持动态增加账户和密码SASL/PLAIN
    SASL/SCRAM-SHA-256主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAM
    SASL/SCRAM-SHA-512主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持SCRAM
    SASL/OAUTHBEARER基于OAuth 2认证框架,从Kafka2.0版本开始支持OAUTHBEARER

    5、在后面指定java 实现的时候,可以去源码里面找对应的,如下
    在这里插入图片描述

    6、需要先明确的一点是,用户认证和权限控制是两码事。用户认证是确认这个用户能否访问当前的系统,而权限控制是控制用户对当前系统中各种资源的访问权限。用户认证就是今天要讲的内容,而kafka的权限控制,则是对应 bin/kafka-acls.sh 工具所提供的一系列功能,这里不详细展开。

    一、Linux 环境

    SASL/PLAIN 模式中 Kafka的SASL_SSL和SASL_PLAINTEXT是两种不同的安全协议,用于保护Kafka集群中的通信。它们提供了不同级别的安全性和身份验证选项:

    1. SASL_SSL (Simple Authentication and Security Layer over SSL/TLS):这是Kafka的高度安全的传输协议。它结合了SSL/TLS(用于加密通信)和SASL(用于身份验证)来提供强大的安全性。使用SASL_SSL,Kafka客户端和服务器之间的通信将是加密的,并且需要经过身份验证才能建立连接。常见的身份验证机制包括GSSAPI(Kerberos)、PLAIN(用户名和密码)等。SASL_SSL是Kafka中最安全的选项,适用于敏感数据和合规性要求高的场景。

    2. SASL_PLAINTEXT (Simple Authentication and Security Layer over plaintext):这是Kafka的另一种SASL支持方式,但不涉及加密。使用SASL_PLAINTEXT,身份验证是必需的,但通信不加密。这意味着数据在传输过程中是以明文形式传输的,因此对于保护数据隐私要求较低的场景或在内部网络中使用时,可以选择此选项。常见的身份验证机制也包括PLAIN(用户名和密码)等。

    通常,SASL_SSL是更安全的选项,因为它不仅提供身份验证,还提供数据的加密,从而更好地保护了数据的隐私和完整性。但是,它的配置相对复杂,可能需要设置SSL/TLS证书和密钥以及身份验证机制。SASL_PLAINTEXT相对来说更容易配置,但数据在传输过程中不加密,可能不适用于对数据隐私有更高要求的场景。

    你的选择应该根据你的具体安全需求来决定。在需要高度安全性的生产环境中,通常会选择SASL_SSL,而在开发和测试环境中,SASL_PLAINTEXT可能更为方便。无论选择哪种方式,都需要谨慎配置和管理Kafka的安全设置,以确保系统的安全性。

    所以下面文章中的 SASL_PLAINTEXT 可以替换为 SASL_SSL,相应的配置可以改成如下(可以看官网的 SASL/PLAIN)这一节,采用的就是这种

    在这里插入图片描述
    在这里插入图片描述

    3、下载后解压

    tar -xzf kafka_2.13-3.4.1.tgz
    cd kafka_2.13-3.4.1
    
    • 1
    • 2

    1.1、Kafka with KRaft 单节点 SASL/PLAIN 模式授权

    1.1.1、服务端

    1.1.1.1、编写服务端授权文件

    1、编写授权文件 kafka_server_jaas.conf,此配置定义了两个用户(admin 和 client )。代理使用 KafkaServer 部分中的属性用户名和密码来启动与其他代理的连接。在此示例中,admin 是代理间通信的用户。属性集 user_用户名定义 是连接到代理的所有用户的密码,代理验证所有客户端连接。

    # 因为我这里是使用 kraft 模式启动,所以,就把服务端的配置都放在这里了
    cd /opt/kafka/kafka_2.13-3.4.1/config/kraft
    
    # 创建文件内容如下
    vim kafka_server_jaas.conf
    
    ### 末尾 分号一定不能忘记
    KafkaServer {
        org.apache.kafka.common.security.plain.PlainLoginModule required
        username="admin"
        password="admin-secret"
        user_admin="admin-secret"
        user_client="client-secret";
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    1.1.1.2、编写服务端启动脚本

    1、复制kafka服务端启动脚本

    cd /opt/kafka/kafka_2.13-3.4.1/bin/
    cp kafka-server-start.sh kafka-server-start-sasl.sh
    
    • 1
    • 2

    在这里插入图片描述

    2、修改我们copy的启动脚本,将我们前面将要创建的配置文件(kafka_jaas.conf),给指定进去

    cd /opt/kafka/kafka_2.13-3.4.1/bin
    vim kafka-server-start-sasl.sh
    
    # 将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改为:
    export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.4.1/config/kraft/kafka_server_jaas.conf"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    1.1.1.3、修改服务端 配置文件 server.properties

    1、我这边是启动的 kraft 模式,所以我就修改对应的 kraft 目录下的配置文件即可

    # 进入kraft/config目录
    cd /opt/kafka/kafka_2.13-3.4.1/config/kraft
    
    # copy并编辑server.properties文件
    cp server.properties  server-sasl.properties
    
    # 修改
    vim server-sasl.properties
    
    # 修改以下内容
    ###
    listeners=SASL_PLAINTEXT://:9092,CONTROLLER://:9093
    inter.broker.listener.name=SASL_PLAINTEXT
    advertised.listeners=SASL_PLAINTEXT://192.168.173.129:9092
    sasl.enabled.mechanisms=PLAIN
    sasl.mechanism.inter.broker.protocol=PLAIN
    ###
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    在这里插入图片描述

    在这里插入图片描述

    1.1.2、客户端

    1.1.2.1、编写客户端授权文件
    # 因为我这里是使用 kraft 模式启动,所以,就把客户端的配置都放在这里了
    cd /opt/kafka/kafka_2.13-3.4.1/config/kraft
    
    # 创建文件内容如下
    vim kafka_client_jaas.conf
    
    ### 末尾 分号一定不能忘记
    KafkaClient {
      org.apache.kafka.common.security.plain.PlainLoginModule required
        username="client"
        password="client-secret";
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    1.1.2.2、编写消费者启动脚本
    cd /opt/kafka/kafka_2.13-3.4.1/bin
    
    # copy 并修改 
    cp kafka-console-consumer.sh kafka-console-consumer-sasl.sh
    
    # 修改,指定我们前面写的客户端配置文件
    vim kafka-console-consumer-sasl.sh
    
    # ★ 将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改为:
    export KAFKA_HEAP_OPTS="-Xmx512M -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.4.1/config/kraft/kafka_client_jaas.conf"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    1.1.2.3、编写消费者启动脚本的配置文件 consumer.properties
    # 进入kafka/config目录
    cd /opt/kafka/kafka_2.13-3.4.1/config
    
    # copy编辑consumer-sasl.properties内容
    cp consumer.properties  consumer-sasl.properties
    vim consumer-sasl.properties
    
    ###
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    ###
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    1.1.2.4、编写生产者启动脚本
    cd /opt/kafka/kafka_2.13-3.4.1/bin
    
    # copy 并修改 
    cp kafka-console-producer.sh kafka-console-producer-sasl.sh
    
    # 修改,指定我们前面写的客户端配置文件
    vim kafka-console-producer-sasl.sh
    
    # ★ 将export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"修改为:
    export KAFKA_HEAP_OPTS="-Xmx512M  -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.4.1/config/kraft/kafka_client_jaas.conf"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    1.1.2.3、编写生产者启动脚本的配置文件 producer.properties
    # 进入kafka/config目录
    cd /opt/kafka/kafka_2.13-3.4.1/config
    
    # copy编辑consumer-sasl.properties内容
    cp producer.properties  producer-sasl.properties
    vim producer-sasl.properties
    
    ###
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    ###
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    1.1.1.5、修改通用命令脚本的配置文件

    1、什么是通用命令脚本,比如说,创建topic的脚本,它链接kafka也是需要认证的,所以,我们为这一类没有指定配置的脚本,创建一个通用的

    # 进入kafka/config目录
    cd /opt/kafka/kafka_2.13-3.4.1/config/kraft
    # 创建command_config文件
    touch command_config
    # 编辑command_config内容
    vim command_config
    
    ###  千万注意 最后的分号 不能忘记了
    security.protocol=SASL_PLAINTEXT
    sasl.mechanism=PLAIN
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="client" password="client-secret";
    ###
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    1.1.3、启动

    1、完成上面的配置,那么我们就可以启动了,就是正常的 kraft 模式启动流程。

    1.1.3.1、生成集群 UUID
    # 进入到文件夹
    cd /opt/kafka/kafka_2.13-3.4.1
    # 创建 集群id
    KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
    # 查看集群id是多少
    echo $KAFKA_CLUSTER_ID
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    1.1.3.2、格式化日志目录

    1、使用上面的 KAFKA_CLUSTER_ID 参数,默认存储目录是/tmp/kraft-combined-logs,你可以修改配置文件的值

    注意这里使用的是 config/kraft/sasl.properties, 你可以点进去看下配置,可以看到,当前的这个配置的角色是 broker,controller了,就不再需要zookeeper了.
    在这里插入图片描述

    cd /opt/kafka/kafka_2.13-3.4.1
    bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server-sasl.properties
    
    • 1
    • 2

    在这里插入图片描述

    2、可以看到了 /tmp/kraft-combined-logs 文件夹也存在了

    在这里插入图片描述

    1.1.3.3、启动kafka 服务

    1、为了方便观察启动状态,这里就直接前台启动了

    记得这里一定要用我们修改过后的脚本来启动 kafka-server-start-sasl.sh,这个脚本里面指定认证文件

    cd /opt/kafka/kafka_2.13-3.4.1
    # 启动
    bin/kafka-server-start-sasl.sh config/kraft/server-sasl.properties
    
    # 如果希望后台启动,则如下 加上 -daemon 即可  对应的日志文件在  /opt/kafka/kafka_2.13-3.4.1/logs 目录下,最新的日志文件是 erver.log
    bin/kafka-server-start-sasl.sh -daemon config/kraft/server-sasl.properties
    
    # 关闭kafka ,如果是前台的,直接 CTRL C 关闭当前进程就好,如果是后台的,可以执行命令
    bin/kafka-server-stop.sh config/kraft/server-sasl.properties
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    1.1.4、链接测试

    1.1.3.1、不使用认证的方式脚本命令行(服务端会提示无法链接)

    1、我们先不使用认证授权的文件链接试一下,会发现下面这三个都是无法访问的,可以看到对应的服务端输出的日志

    2、通用脚本

    # 进入目录
    cd /opt/kafka/kafka_2.13-3.4.1
    # 查看当前服务器中的所有 topic
    bin/kafka-topics.sh --list --bootstrap-server localhost:9092
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    3、消费者脚本

    # 进入目录
    cd /opt/kafka/kafka_2.13-3.4.1
    # 消费者链接
    bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4、生产者脚本

    # 进入目录
    cd /opt/kafka/kafka_2.13-3.4.1
    # 生产者链接
    bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic test 
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    5、springBoot 项目,具体配置这里就不再细说了,链接之后,只要对kafak执行操作,就会如下错误,超时

    记得部署 kafka 的服务器开放 9092 端口,或者关闭防火墙

    在这里插入图片描述

    在这里插入图片描述

    1.1.3.2、使用认证的方式脚本命令行(链接成功)

    1、通用脚本,第一开始因为这里还未创建过topic ,所以没有数据,后面可以再运行一下。

    # 进入目录
    cd /opt/kafka/kafka_2.13-3.4.1
    # 查看当前服务器中的所有 topic
    bin/kafka-topics.sh --list --bootstrap-server localhost:9092 --command-config /opt/kafka/kafka_2.13-3.4.1/config/kraft/command_config
    
    # 创建topic 
    bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --partitions 1 --replication-factor 1 --topic test  --command-config /opt/kafka/kafka_2.13-3.4.1/config/kraft/command_config
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    3、消费者脚本,执行完成后,页面会等待队列消息

    # 进入目录
    cd /opt/kafka/kafka_2.13-3.4.1
    # 消费者链接  --consumer.config 指定消费者配置文件
    bin/kafka-console-consumer-sasl.sh --bootstrap-server 127.0.0.1:9092 --topic test --from-beginning --consumer.config config/consumer-sasl.properties
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4、生产者脚本

    # 进入目录
    cd /opt/kafka/kafka_2.13-3.4.1
    # 生产者链接  --producer.config  指定消费者配置文件
    bin/kafka-console-producer-sasl.sh --bootstrap-server 127.0.0.1:9092 --topic test --producer.config config/producer-sasl.properties
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    此刻,消费者控制台也收到消息了

    在这里插入图片描述

    5、springBoot 项目,增加账号密码,如下,后面的分号一定不能忘记,加上如下配置之后就可以了

    consumer和producer 需要统一配置配置(Kafka stream SASL/PLANTEXT配置也一样,统一配置对stream同样生效)

    记得部署 kafka 的服务器开放 9092 端口,或者关闭防火墙

        properties:
          security.protocol: SASL_PLAINTEXT
          sasl.mechanism: PLAIN
          sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret";
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1.2、Kafka with KRaft 单节点 SSL 模式授权

    参考这篇文章:写的很好 kafka SSL认证

    二、kafka-ui 链接开启认证授权的kafka

    连接带认证的kafka集群在kafka-ui的github上面也有,但是文章写的不太全面。如果没有配置SASL_PLAINTEXT认证可以参考我之前写的这篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

    2.1、SASL_PLAINTEXT

    1、连接SASL_PLAINTEXT认证的kafka需要添加如下三个环境变量,KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG 变量指定的用户名密码需要与实际情况一致。

    我这里因为镜像已经前提下载过了,所以就没有显示下载镜像的步骤

    docker run -d -p 1992:8080 --name kafka-ui  \
    --restart=always \
    -v /data/docker/kafka/kafka-ui/config.yml:/etc/kafkaui/dynamic_config.yaml \
    -e KAFKA_CLUSTERS_0_NAME=local \
    -e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=192.168.173.129:9092 \
    -e DYNAMIC_CONFIG_ENABLED='true' \
    -e AUTH_TYPE=LOGIN_FORM   \
    -e SPRING_SECURITY_USER_NAME=admin \
    -e SPRING_SECURITY_USER_PASSWORD=admin \
    -e KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL=SASL_PLAINTEXT \
    -e KAFKA_CLUSTERS_0_PROPERTIES_SASL_MECHANISM=PLAIN \
    -e KAFKA_CLUSTERS_0_PROPERTIES_SASL_JAAS_CONFIG='org.apache.kafka.common.security.plain.PlainLoginModule required username="client" password="client-secret";' \
    provectuslabs/kafka-ui:latest
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    2、如果报错,查看 /data/docker/kafka/kafka-ui/config.yml 文件是否存在,可以先提前创建,参数含义,大家也能看出来,如果有不明白的,大家可以参考我之前写的这篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

    3、登录 http://192.168.173.129:1992,密码就是我们在启动时配置的 -e SPRING_SECURITY_USER_NAME-e SPRING_SECURITY_USER_PASSWORD admin admin

    在这里插入图片描述

    4、登录进去如下,如果能获取带信息,就说明没有问题了
    在这里插入图片描述

    2.2、SSL认证

    1、连接SSL认证的kafka需要额外添加如下四个环境变量,其中KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_LOCATION 变量指定的配置文件需要时在配置ssl时候提前生成的。

    2、另外注意 KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_PASSWORD 变量中指定的密码也是实际的密码。

    docker run -p 1993:8080 \
        --name kafka-ui-pwd \
        -e KAFKA_CLUSTERS_0_NAME=kafka8082 \
        -e KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=localhost:8082 \
        -e KAFKA_CLUSTERS_0_PROPERTIES_SECURITY_PROTOCOL=SSL \
        -e KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_LOCATION=/cert/client.truststore.jks \
        -e KAFKA_CLUSTERS_0_PROPERTIES_SSL_TRUSTSTORE_PASSWORD=admin \
        -e KAFKA_CLUSTERS_0_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM='' \
        -e TZ=Asia/Shanghai \
        -e LANG=C.UTF-8 \
        -v /data/users/yulei/ssl_cert:/cert \
        -d provectuslabs/kafka-ui:latest 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    三、docker 环境

    3.1、使用 KRaft 模式单机安装

    可以参考 TechBits | Docker 部署(Bitnami镜像) Kafak-Kraft 模式配合Sasl加密认证 这一篇文章

    如果不需要授权,也可以参考我写的一篇文章 kafka各种环境安装(window,linux,docker,k8s),包含KRaft模式

    1、前置准备

    # kafka的挂载
    mkdir -p /data/docker/kafka/kafka_data
    chown -R 1001:1001 /data/docker/kafka/kafka_data
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    2、将上述配置文件copy 一下,最后修改如下,注意替换其中的宿主机ip

    cd /opt/kafka/
    vim kafka-KRaft-single-auth.yml
    
    • 1
    • 2
    # 宿主机IP: 192.168.173.129
    version: "3"
    
    services:
      kafka:
        image: 'bitnami/kafka:3.5.1'
        hostname: kafka
        container_name: kafka
        ports:
          - "9092:9092"
        restart: always
        environment:
          - KAFKA_CFG_NODE_ID=0
          - KAFKA_CFG_PROCESS_ROLES=controller,broker
          - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
          - KAFKA_CFG_LISTENERS=SASL_PLAINTEXT://:9092,CONTROLLER://:9093
          - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,SASL_PLAINTEXT:SASL_PLAINTEXT
          - KAFKA_CFG_ADVERTISED_LISTENERS=SASL_PLAINTEXT://192.168.173.129:9092
    
          - KAFKA_CLIENT_USERS=admin
          - KAFKA_CLIENT_PASSWORDS=123456
    
          - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
          - KAFKA_CFG_SASL_MECHANISM_CONTROLLER_PROTOCOL=PLAIN
          - KAFKA_CONTROLLER_USER=admin
          - KAFKA_CONTROLLER_PASSWORD=123456
    
          - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=SASL_PLAINTEXT
          - KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
          - KAFKA_INTER_BROKER_USER=admin
          - KAFKA_INTER_BROKER_PASSWORD=123456
        volumes:
          - "/data/docker/kafka/kafka_data:/bitnami"
        networks:
          - kafka_net
    
    
    
      kafka-ui:
        image: provectuslabs/kafka-ui:master
        container_name: kafka-ui
        ports:
          - "8910:8080"
        restart: always
        environment:
          - KAFKA_CLUSTERS_0_NAME=local  #先默认设置一个local的集群,至于认证信息,进入之后再配置
          - DYNAMIC_CONFIG_ENABLED=true
          - AUTH_TYPE=LOGIN_FORM
          - SPRING_SECURITY_USER_NAME=admin
          - SPRING_SECURITY_USER_PASSWORD=admin
        depends_on:
          - kafka
        networks:
          - kafka_net
    
    networks:
      kafka_net:
        driver: bridge
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    3、运行结果,其中zookeeper和kafka的镜像我已经提前下载好了,所以没有显示

    # 记得删除停掉之前的 
    # docker-compose -f ./kafka-KRaft-single.yml down -v
    docker-compose -f kafka-KRaft-single-auth.yml up -d 
    
    • 1
    • 2
    • 3

    4、访问 web-ui,账号密码 admin admin ,这个配置大家可以访问 github 去官方网站查看文档,说的还是很详细的 github-kafka-ui

    http://192.168.173.129:8080/
    
    • 1

    5、在ui界面,配置我们的kafka集群,当然你也可以在创建 kafka-ui的时候,指定环境变量来直接配置kafka集群,看我以前的kafka系列文章重有说明,这里就直接在ui界面配置了。
    在这里插入图片描述

    6、进入之后,配置相关信息后,点击下面的提交

    在这里插入图片描述
    7、最后,就显示登录成功了

    在这里插入图片描述

    8、最后,保险起见,去看下 kafkakafka-ui容器日志,查看无错误信息了,就可以了

    docker logs -f --tail 200 kafka-ui
    docker logs -f --tail 200 kafka
    
    • 1
    • 2

    结尾

    1、kafka配置个账号密码… 确实有些麻烦!

    参考文章:

  • 相关阅读:
    Win11+RTX3060+Anconda+CUDA11.3+cuDNN8.2+Pytorch1.8一条龙服务
    重新认识受控和非受控组件
    记一次Golang中一次内存泄漏的问题排查
    快速入门Web开发(中)后端开发(有重点)
    10分钟搞定manim安装与vscode配置
    图像采集 deep OCR
    关于版本问题
    经典问题--超大字符串型整数加减
    @AutoConfigureBefore、@AutoConfigureAfter使用细节
    数据结构与算法-队列
  • 原文地址:https://blog.csdn.net/qq_38263083/article/details/133313443