docker-compose部署 kafka 3.7 启用账号密码认证

avatar
作者
筋斗云
阅读量:0

文章目录

1. 部署

1.1 创建工作目录

  • 创建kafka目录,进入该目录

1.2 yml文件

1)文件内容

  • 创建docker-compose.yml 文件,内容如下:
version: "3" services:    kafka:      image: 'bitnami/kafka:3.7.0'      user: root      ports:        - '9092:9092'      environment:        - TZ=Asia/Shanghai        - KAFKA_CFG_PROCESS_ROLES=broker,controller        - BITNAMI_DEBUG=true        - ALLOW_PLAINTEXT_LISTENER=no        - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER        - KAFKA_CFG_NUM_PARTITIONS=1        - KAFKA_CFG_LISTENERS=INTERNAL://:9094,CLIENT://:9095,CONTROLLER://:9093,EXTERNAL://:9092        - KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://10.10.181.199:9094,CLIENT://:9095,EXTERNAL://10.10.181.199:9092        - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT           - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL        - KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN        - KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN        - KAFKA_CLIENT_USERS=liu_bei        - KAFKA_CLIENT_PASSWORDS=liubei@161        - KAFKA_INTER_BROKER_USER=liu_bei        - KAFKA_INTER_BROKER_PASSWORD=liubei@161        - KAFKA_CFG_NODE_ID=1        - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093        - KAFKA_KRAFT_CLUSTER_ID=xishu        - KAFKA_OPTS=-Djava.security.auth.login.config=/bitnami/kafka/data/kafka_server_jaas.conf      volumes:        - ./data:/bitnami/kafka/data:rw  

2)说明:

  • KAFKA_CFG_PROCESS_ROLES =broker,controller
    • kafka扮演角色:broker 和 controller,即代表使用raft模式
    • broker:
      • Kafka的核心组件,负责处理客户端的请求,存储和检索数据。
      • 每个broker都持有一个或多个分区的数据,处理来自生产者和消费者的读写请求
      • broker之间的数据复制确保了数据的可靠性和可用性。
    • controller:
      • 一个特殊的broker
      • 负责管理集群的元数据和协调不同broker之间的操作
      • 负责选举leader分区,检测和处理集群中的故障,以及维护集群的成员信息。
  • BITNAMI_DEBUG=true :控制台打印日志
  • ALLOW_PLAINTEXT_LISTENER=no
    • Kafka 不允许使用非加密的(即明文的)监听器(listener)来接受客户端连接
  • KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER :控制器名称 对应下面CONTROLLER://:9093
  • KAFKA_CFG_NUM_PARTITIONS=1 :默认分区数
  • KAFKA_CFG_LISTENERS=INTERNAL://:9094,CLIENT://:9095,CONTROLLER://:9093,EXTERNAL://:9092 :监听器的地址和端口
    • INTERNAL:

      • 用于 Kafka 集群内部通信(如 broker 之间的数据复制和控制器与 broker 之间的通信)
      • 可能会配置为使用 PLAINTEXT 协议(因为内部通信通常在一个受信任的网络环境中进行)
    • CLIENT:

      • 用于客户端与 Kafka broker 通信的监听器
      • 可能会配置为使用 SSL/TLS 或 SASL/SCRAM 等安全协议,以确保客户端与 broker 之间的通信安全
      • 通常通过 advertised.listeners 配置项将此类监听器的地址和端口暴露给客户端
    • CONTROLLER:

      • 专门用于 Kafka 控制器与 broker 通信的监听器
      • 负责管理集群的状态
      • 可能会配置为使用 PLAINTEXT 协议(因为控制器与 broker 之间的通信通常在一个受信任的内部网络环境中进行)

      在某些配置中,可能不需要显式定义 CONTROLLER 监听器,因为控制器通常使用与其他 broker 相同的内部监听器进行通信。

    • EXTERNAL:

    • 用于从外部网络访问 Kafka 集群的监听器

    • 通常会配置为使用 SSL/TLS 等安全协议

    • 通常通过 advertised.listeners 配置项将此类监听器的地址和端口暴露给外部客户端。

  • KAFKA_CFG_ADVERTISED_LISTENERS=INTERNAL://10.10.181.199:9094,CLIENT://:9095,EXTERNAL://10.10.181.199:9092
    • 发布监听器的地址和端口
  • KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=INTERNAL:SASL_PLAINTEXT,CLIENT:SASL_PLAINTEXT,CONTROLLER:PL - AINTEXT,EXTERNAL:SASL_PLAINTEXT
    • 定义监听器所使用的不同协议
    • SASL_PLAINTEXT协议:提供了基于SASL的身份验证功能,但数据传输是明文的
    • PLAINTEXT协议:不进行任何加密和身份验证,数据以明文形式传输
  • KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
    • 指定了 Kafka broker 之间进行通信时所使用的监听器的名称
  • KAFKA_CFG_SASL_MECHANISM_INTER_BROKER_PROTOCOL=PLAIN
    • 指定了 Kafka broker 之间通信时所使用的 SASL 认证机制,为PLAIN
    • PLAIN :是 SASL 的一种认证机制,它使用简单的用户名和密码进行身份验证。
  • KAFKA_CFG_SASL_ENABLED_MECHANISMS=PLAIN
    • 指定了 Kafka broker 支持哪些 SASL 认证机制
  • KAFKA_CLIENT_USERS=liu_bei :客户端账号(必须是已经创建的)
  • KAFKA_CLIENT_PASSWORDS=liubei@161 :客户端用户的密码
  • KAFKA_INTER_BROKER_USER=liu_bei :内部broker之间通信账号(必须是已经创建的)
  • KAFKA_INTER_BROKER_PASSWORD=liubei@161 #内部broker之间通信密码
  • KAFKA_CFG_NODE_ID=1 #节点ID (如果多个节点,每个节点不相同)
  • KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1:9093
    • 定义了哪些 broker 将参与控制器的选举
  • KAFKA_KRAFT_CLUSTER_ID=xishu :集群id(所有节点相同)
  • KAFKA_OPTS=-Djava.security.auth.login.config=/bitnami/kafka/config/kafka_server_jaas.conf

1.3 启动

[root@liubei kafka]# docker-compose up -d [root@liubei kafka]# docker-compose ps     Name                   Command               State           Ports ------------------------------------------------------------------------------- kafka_kafka_1   /opt/bitnami/scripts/kafka ...   Up      0.0.0.0:9092->9092/tcp  

2. 测试

2.1 kafkamap搭建(测试工具)

  • 创建kafkamap目录,进入该目录
  • 创建docker-compose.yml文件如下
version: "3" services:    kafka_map:      image: dushixiang/kafka-map:latest      environment:        - DEFAULT_USERNAME=liubei        - DEFAULT_PASSWORD=liubei@161      ports:        - '8080:8080'  

2.2 权限测试

  • web登录:http://IP:8080

  • 创建连接
    在这里插入图片描述

  • 链接创建成功
    在这里插入图片描述

  • 创建topic

  • topic 创建成功
    在这里插入图片描述


在这里插入图片描述

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!