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

文章目录

  • 1. 部署
    • 1.1 创建工作目录
    • 1.2 yml文件
      • 1)文件内容
      • 2)说明:
    • 1.3 启动
  • 2. 测试
    • 2.1 kafkamap搭建(测试工具)
    • 2.2 权限测试

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 创建成功
    在这里插入图片描述


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/679840.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker中搭建likeadmin

一、使用Docker中的docker-compose搭建likeadmin 1.去网址:https://gitee.com/likeadmin/likeadmin_php中下载likeadmin 注册一个giee账号后 点那个克隆下载 按照序号在终端复制粘贴进去。 接着,输入ls 可以发现有一个这个: 里面有一个like…

Cell|3D病理弱监督模型在前列腺癌患者治疗中的应用|顶刊精析·24-06-04

小罗碎碎念 这篇文章我之前分析过一遍,本期在原有基础上进行修改。 在正式阅读之前,小罗友情提醒大家重点关注一下几个方向: 从2D组织切片计算的TLS面积已被验证为多种肿瘤类型的预后和免疫治疗响应的生物标志物,然而在小样本活检…

ToxVidLLM:一个用于检测有害视频的多模态多任务框架

在一个社交媒体平台赋予用户成为内容创作者力量的时代,数字领域见证了前所未有的信息传播激增,到2023年,近82%的互联网流量是视频内容。因此,像抖音和YouTub这样的平台已经成为主要的信息来源。一个显著的统计数据凸显了这些平台的…

38【Aseprite 作图】包子——拆解

1 包子轮廓 2 画包子中间的褶皱,褶皱颜色更深一点,不要直接斜着,而是要连着

3. redis常见部署架构

redis常见部署架构 一、redis常见部署架构1、常见部署架构2、多实例部署2.1 规划安装目录、配置文件2.2.2 编辑实例配置文件2.2.3 启动实例2.2.4 测试数据读写 3、redis主从复制3.1 规划3.2 从服务器配置3.3 验证主从状态3.4 主从角色切换 4、分片集群4.1 原理4.2 分片集群的部…

基于单片机的船舱温度临界报警系统

摘 要 : 针对传统的船舱温度临界报警系统,由于温度监控不到位导致报警不及时的问题,提出一个基于单片机的船舱温度临界报警系统设计。该设计将单片机作为核心控制硬件,控制系统整体电路。同时设计数据采集模块,利用温度测量仪测试…

【vue3|第6期】如何正确地更新和替换响应式对象reactive

日期:2024年6月5日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

Leetcode 第 399 场周赛题解

Leetcode 第 399 场周赛题解 Leetcode 第 399 场周赛题解题目1:3162. 优质数对的总数 I思路代码复杂度分析 题目2:3163. 压缩字符串 III思路代码复杂度分析 题目3:3164. 优质数对的总数 II思路代码复杂度分析 题目4:3165. 不包含相…

C51单片机 串口打印printf重定向

uart.c文件 #include "uart.h"void UartInit(void) //4800bps11.0592MHz {PCON | 0x80; //使能波特率倍速位SMODSCON 0x50; //8位数据,可变波特率。使能接收TMOD & 0x0F; //清除定时器1模式位TMOD | 0x20; //设定定时器1为8位自动重装方式TL1 0xF4; //设…

IPFS节点部署及连接java服务接口

文章目录 引言前言:IPFS网络部署1.下载安装文件2.安装及初始化3.测试上传文件 引入IPFS 依赖包初始化IPFS创建接口类以及实现类创建前端访问的控制类前端设计及验证 引言 该篇文章是记录使用IPFS存储文件与java的Springboot项目连接的过程,前端简单地用…

基于websocket与node搭建简易聊天室

一、前言 上一篇文章介绍了websocket的详细用法与工具类的封装,本篇就基于websocket搭建一个简易实时的聊天室。 在本篇开始之前也可以去回顾一下websocket详细用法:WebSocket详解与封装工具类 二、基于node搭建后台websocket服务 首先确认本机电脑中…

YOLOv8改进 | Conv篇 | 利用YOLOv10提出的C2fUIB魔改YOLOv8(附代码 + 完整修改教程)

一、本文介绍 本文给大家带来的改进机制是利用YOLOv10提出的C2fUIB模块助力YOLOv8进行有效涨点,其中C2fUIB模块所用到的CIB模块是一种紧凑的倒置块结构,它采用廉价的深度卷积进行空间混合,并采用成本效益高的点卷积进行通道混合。本文针对该…

Window10磁盘的分盘和合并

注意: 当我们c盘不够大需要扩大磁盘空间时,当c盘后面没有未划分的磁盘时候,我们是无法进行扩充c盘的,此时,我们可以先删除后面一个磁盘,再进行扩大。 如下:c盘后没有未分配的空间,…

Flink端到端的精确一次(Exactly-Once)

目录 状态一致性 端到端的状态一致性 端到端精确一次(End-To-End Exactly-Once) Flink内部的Exactly-Once 输入端保证 输出端保证 幂等写入 事务写入 Flink和Kafka连接时的精确一次保证 整体介绍 需要的配置 案例 状态一致性 流式计算本身就…

UI 自动化分布式测试 -Docker Selenium Grid

分布式测试Selenium Grid 对于大型项目或者有大量测试用例的项目,单机的测试环境往往无法快速完成所有测试用例的执行,此时自动化测试执行效率将会成为最大的瓶颈,Selenium Grid 可以通过多机的分布式架构允许测试用例并行运行,大大缩短了测试时间。 Selenium Grid 提供了多…

命令模式(行为型)

目录 一、前言 二、命令模式 三、总结 一、前言 命令模式(Command Pattern)是一种行为型设计模式,命令模式将一个请求封装为一个对象,从而可以用不同的请求对客户进行参数化;对请求排队或记录请求日志,以…

此表单不安全,因此系统已关闭自动填充功能

问题截图: 截图就不放了,公司的系统不方便,就是form表单会有个提示“此表单不安全,因此系统已关闭自动填充功能” 解决思路: 1、问题原因 使用https访问,但表单提交地址是http的 2、查看表单配置 表单…

行业分析---造车新势力之理想汽车

1 前言 在之前的博客中,笔者撰写了多篇行业类分析的文章(科技新能源): 《行业分析---我眼中的Apple Inc.》 《行业分析---马斯克的Tesla》 《行业分析---造车新势力之蔚来汽车》 《行业分析---造车新势力之小鹏汽车》 此类文章的受…

IIC信号质量测试、时序测试详解

IIC 时序图 信号质量测试 1、vIL: 低输入电平。 2、vIH: 高输入电平。 3、vhys: 施密特触发器输入的滞后。 4、vOL1: VDD>2V时&#xff0c;低电平输出电压&#xff08;漏极开路或集电极开路&#xff09;。 5、vOL3: VDD<2V时&#xff0c;低电平输出电压&#xff08;漏极开…

js 数字精确度

事情的起源&#xff1a; 项目中 填写的赔付金额是小数 传给后端需要 *100 9.87 *100 传给后端后是986.9999999999999 后端直接取整 就变成了9.86了 0.1 0.2 ! 0.3 console.log(0.1 0.2) //0.30000000000000004 console.log(0.1 0.2 0.3) //false1. 数字的存储 浮点数是用…