kafka kraft 生产环境搭建

单机模式 kafka.yml
version: "3"
services:
  kafka:
    image: 'bitnami/kafka:3.4'
    hostname: 'kafka'
    container_name: kafka
    user: root
    ports:
      - '9092:9092'
      - '9093:9093'
      - '9094:9094'
    environment:
      - KAFKA_ADVERTISED_HOST_NAME=kafka
      - KAFKA_ENABLE_KRAFT=yes
      - KAFKA_CFG_NODE_ID=1
      - NODE_ID_COMMAND=1
      - KAFKA_KRAFT_CLUSTER_ID=OTMwNzFhYTY1ODNiNGE5OT
      - KAFKA_BROKER_ID=1
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092,EXTERNAL://kafka:9094
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS=240000
    volumes:
      - ./data/quake_kafka/kafka:/bitnami/kafka/
      - /etc/hosts:/etc/hosts
  kafka-ui:
    container_name: kafka-ui
    image: provectuslabs/kafka-ui:latest
    ports:
      - 8080:8080
    depends_on:
      - "kafka"
    environment:
      KAFKA_CLUSTERS_0_NAME: local
      KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:9094
      AUTH_TYPE: "LOGIN_FORM"
      SPRING_SECURITY_USER_NAME: admin
      SPRING_SECURITY_USER_PASSWORD: admin
    volumes:
      - /etc/hosts:/etc/hosts

集群模式五台机器

version: "3"
services:
 kafka-master:
   image: 'bitnami/kafka:3.4'
   hostname: 'kafka1'
   user: root
   ports:
     - '9092:9092'
     - '9093:9093'
     - '9094:9094'
   environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka1
     - KAFKA_ENABLE_KRAFT=yes
     - KAFKA_KRAFT_CLUSTER_ID=OTMwNzFhYTY1ODNiNGE5OT
     - KAFKA_CFG_PROCESS_ROLES=broker,controller
     - KAFKA_BROKER_ID=1
     - KAFKA_CFG_NUM_PARTITIONS=3
     - KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3
     - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT
     - KAFKA_CFG_LISTENERS=CLIENT://:9092,EXTERNAL://:9094,CONTROLLER://:9093
     - KAFKA_CFG_ADVERTISED_LISTENERS=CLIENT://:9092,EXTERNAL://kafka1:9094
     - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
     - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
     - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,2@kafka2:9093,\
       3@kafka3:9093,4@kafka4:9093,5@kafka5:9093
     - ALLOW_PLAINTEXT_LISTENER=yes
     - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
     - KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS=240000
   volumes:
     - /data/quake_kafka/kafka:/bitnami/kafka/
     - /etc/hosts:/etc/hosts
 kafka-ui:
   container_name: kafka-ui
   image: provectuslabs/kafka-ui:latest
   ports:
     - 8080:8080
   depends_on:
     - "kafka-master"
   environment:
     KAFKA_CLUSTERS_0_NAME: local
     KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka1:9094,kafka2:9094,\
       kafka3:9094,kafka4:9094,kafka5:9094
     AUTH_TYPE: "LOGIN_FORM"
     SPRING_SECURITY_USER_NAME: admin
     SPRING_SECURITY_USER_PASSWORD: admin
   volumes:
     - /etc/hosts:/etc/hosts


version: "3"
services:
 kafka-broker1:
   image: 'bitnami/kafka:3.4'
   hostname: 'kafka2'
   user: root
   ports:
     - '9092:9092'
     - '9093:9093'
     - '9094:9094'
   environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka2
     - KAFKA_ENABLE_KRAFT=yes
     - KAFKA_KRAFT_CLUSTER_ID=OTMwNzFhYTY1ODNiNGE5OT
     - KAFKA_CFG_PROCESS_ROLES=broker,controller
     - KAFKA_BROKER_ID=2
     - KAFKA_CFG_NUM_PARTITIONS=3
     - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL://kafka2:9094
     - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
     - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
     - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,5@kafka5:9093
     - ALLOW_PLAINTEXT_LISTENER=yes
     - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
     - KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS=240000
   volumes:
     - /data/quake_kafka/kafka:/bitnami/kafka/
     - /etc/hosts:/etc/hosts



version: "3"
services:
 kafka-broker2:
   image: 'bitnami/kafka:3.4'
   hostname: 'kafka3'
   user: root
   ports:
     - '9092:9092'
     - '9093:9093'
     - '9094:9094'
   environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka3
     - KAFKA_ENABLE_KRAFT=yes
     - KAFKA_KRAFT_CLUSTER_ID=OTMwNzFhYTY1ODNiNGE5OT
     - KAFKA_CFG_PROCESS_ROLES=broker,controller
     - KAFKA_BROKER_ID=3
     - KAFKA_CFG_NUM_PARTITIONS=3
     - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL://kafka3:9094
     - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
     - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
     - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,5@kafka5:9093
     - ALLOW_PLAINTEXT_LISTENER=yes
     - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
     - KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS=240000
   volumes:
     - /data/quake_kafka/kafka:/bitnami/kafka/
     - /etc/hosts:/etc/hosts

version: "3"
services:
 kafka-broker3:
   image: 'bitnami/kafka:3.4'
   hostname: 'kafka4'
   user: root
   ports:
     - '9092:9092'
     - '9093:9093'
     - '9094:9094'
   environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka4
     - KAFKA_ENABLE_KRAFT=yes
     - KAFKA_KRAFT_CLUSTER_ID=OTMwNzFhYTY1ODNiNGE5OT
     - KAFKA_CFG_PROCESS_ROLES=broker,controller
     - KAFKA_BROKER_ID=4
     - KAFKA_CFG_NUM_PARTITIONS=3
     - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL://kafka4:9094
     - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
     - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
     - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,5@kafka5:9093
     - ALLOW_PLAINTEXT_LISTENER=yes
     - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
     - KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS=240000
   volumes:
     - /data/quake_kafka/kafka:/bitnami/kafka/
     - /etc/hosts:/etc/hosts


version: "3"
services:
 kafka-broker4:
   image: 'bitnami/kafka:3.4'
   hostname: 'kafka5'
   user: root
   ports:
     - '9092:9092'
     - '9093:9093'
     - '9094:9094'
   environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka5
     - KAFKA_ENABLE_KRAFT=yes
     - KAFKA_KRAFT_CLUSTER_ID=OTMwNzFhYTY1ODNiNGE5OT
     - KAFKA_CFG_PROCESS_ROLES=broker,controller
     - KAFKA_BROKER_ID=5
     - KAFKA_CFG_NUM_PARTITIONS=3
     - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CLIENT:PLAINTEXT,EXTERNAL://kafka5:9094
     - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=CLIENT
     - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
     - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@kafka1:9093,5@kafka5:9093
     - ALLOW_PLAINTEXT_LISTENER=yes
     - KAFKA_AUTO_CREATE_TOPICS_ENABLE=true
     - KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS=240000
   volumes:
     - /data/quake_kafka/kafka:/bitnami/kafka/
     - /etc/hosts:/etc/hosts

注意事项

  1. topic __consumer_offsets 需要多个副本,否则一个副本那台机器挂了,kafka集群就会停摆
  2. kafka hostname映射ip 每台机器都需要同步, 包括消费者和生产者机器
kafka1 x.x.x.x
kafka2 x.x.x.x
kafka3 x.x.x.x
kafka4 x.x.x.x
kafka5 x.x.x.x
  1. KAFKA_CFG_NUM_PARTITIONS=3和KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR=3 参数不能大于集群台数
  2. 参数解释
这些参数是用于配置和设置 Apache Kafka 的各种属性和功能。下面是对每个参数的解释:
  
   KAFKA_ADVERTISED_HOST_NAME: 这是 Kafka 服务器的主机名或 IP
   地址,用于通知生产者和消费者连接到该地址。
   
   KAFKA_ENABLE_KRAFT: 这个参数启用 Kafka Raft(KRaft)模式,它是 Kafka 2.8.0
   版本引入的一种新的高可用性模式。
   
   KAFKA_KRAFT_CLUSTER_ID: 这是 KRaft 集群的唯一标识符,用于将 Kafka 服务器加入特定的 KRaft
   集群。
   
   KAFKA_CFG_PROCESS_ROLES: 这个参数指定 Kafka 服务器的角色,其中 "broker" 表示服务器是一个普通的
   Kafka 节点,"controller" 表示服务器是集群的控制器。
   
   KAFKA_BROKER_ID: 这是 Kafka 服务器的唯一标识符,用于在集群中区分不同的服务器。
   
   KAFKA_CFG_NUM_PARTITIONS: 这个参数指定每个主题的默认分区数。分区是 Kafka
   中的消息存储单元,用于实现消息的并行处理。
   
   KAFKA_CFG_OFFSETS_TOPIC_REPLICATION_FACTOR:
   这个参数指定偏移量主题的副本因子,偏移量主题用于存储消费者的偏移量信息。
   
   KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP:
   这个参数定义了不同监听器的安全协议映射关系。在这个例子中,"CLIENT"、"EXTERNAL" 和 "CONTROLLER"
   分别映射到 "PLAINTEXT" 协议,表示这些监听器使用明文传输。
   
   KAFKA_CFG_LISTENERS: 这个参数定义了 Kafka
   监听器的配置。在这个例子中,有三个监听器分别使用不同的协议和端口号。
   
   KAFKA_CFG_ADVERTISED_LISTENERS: 这个参数指定了广告监听器的配置,用于告知生产者和消费者连接到 Kafka
   的地址和端口号。
   
   KAFKA_CFG_INTER_BROKER_LISTENER_NAME: 这个参数指定了经纪人之间通信使用的监听器名称,其中
   "CLIENT" 表示使用客户端监听器。
   
   KAFKA_CFG_CONTROLLER_LISTENER_NAMES:
   这个参数指定控制器监听器的名称,用于控制器与其他经纪人之间的通信。
   
   KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 这个参数指定了控制器选举过程中的投票者信息,包括其 ID
   和监听器的地址。
   
   ALLOW_PLAINTEXT_LISTENER: 这个参数允许使用明文传输的监听器进行连接。
   
   KAFKA_AUTO_CREATE_TOPICS_ENABLE:
   这个参数启用自动创建主题的功能,当生产者发送消息到不存在的主题时,将自动创建该主题。
   
   KAFKA_CFG_INITIAL_BROKER_REGISTRATION_TIMEOUT_MS:
   这个参数指定初始经纪人注册的超时时间,以毫秒为单位。在集群启动期间,经纪人必须在指定的时间内完成注册。
   
   这些参数可以根据实际需求进行配置和调整,以满足特定的 Kafka 集群设置和功能要求。

原文地址:https://blog.csdn.net/qq_37746897/article/details/131122284

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读4.1k次。kafka认证_kafka认证
文章浏览阅读4.8k次,点赞4次,收藏11次。kafka常用参数_kafka配置
文章浏览阅读1.4k次,点赞25次,收藏10次。Kafka 生产者发送消息的流程涉及多个步骤,从消息的创建到成功存储在 Kafka 集群中。_kafka发送消息流程
文章浏览阅读854次,点赞22次,收藏24次。点对点模型:适用于一对一的消息传递,具有高可靠性。发布/订阅模型:适用于广播消息给多个消费者,实现消息的广播。主题模型:适用于根据消息的主题进行灵活的过滤和匹配,处理复杂的消息路由需求。
文章浏览阅读1.5k次,点赞2次,收藏3次。kafka 自动配置在KafkaAutoConfiguration
文章浏览阅读1.3w次,点赞6次,收藏33次。Offset Explorer(以前称为Kafka Tool)是一个用于管理和使Apache Kafka ®集群的GUI应用程序。它提供了一个直观的UI,允许人们快速查看Kafka集群中的对象以及存储在集群主题中的消息。它包含面向开发人员和管理员的功能。二、环境信息系统环境:windows 10版本:2.2Kafka版本:Kafka2.0.0三、安装和使用3.1 下载Offset Explorer 和安装下载到本地的 .exe文件Next安装路径 ,Next。_offset explorer
文章浏览阅读1.3k次,点赞12次,收藏19次。kafka broker 在启动的时候,会根据你配置的listeners 初始化它的网络组件,用来接收外界的请求,这个listeners你可能没配置过,它默认的配置是listeners=PLAINTEXT://:9092就是告诉kafka使用哪个协议,监听哪个端口,如果我们没有特殊的要求的话,使用它默认的配置就可以了,顶多是修改下端口这块。
文章浏览阅读1.3k次,点赞2次,收藏2次。Kafka 是一个强大的分布式流处理平台,用于实时数据传输和处理。通过本文详细的介绍、使用教程和示例,你可以了解 Kafka 的核心概念、安装、创建 Topic、使用生产者和消费者,从而为构建现代分布式应用打下坚实的基础。无论是构建实时数据流平台、日志收集系统还是事件驱动架构,Kafka 都是一个可靠、高效的解决方案。_博客系统怎么使用kafka
文章浏览阅读3.5k次,点赞42次,收藏56次。对于Java开发者而言,关于 Spring ,我们一般当做黑盒来进行使用,不需要去打开这个黑盒。但随着目前程序员行业的发展,我们有必要打开这个黑盒,去探索其中的奥妙。本期 Spring 源码解析系列文章,将带你领略 Spring 源码的奥秘。本期源码文章吸收了之前 Kafka 源码文章的错误,将不再一行一行的带大家分析源码,我们将一些不重要的分当做黑盒处理,以便我们更快、更有效的阅读源码。废话不多说,发车!
文章浏览阅读1.1k次,点赞14次,收藏16次。一、自动提交offset1、概念Kafka中默认是自动提交offset。消费者在poll到消息后默认情况下,会自动向Broker的_consumer_offsets主题提交当前主题-分区消费的偏移量2、自动提交offset和手动提交offset流程图3、在Java中实现配置4、自动提交offset问题自动提交会丢消息。因为如果消费者还没有消费完poll下来的消息就自动提交了偏移量,那么此时消费者挂了,于是下一个消费者会从已经提交的offset的下一个位置开始消费消息。_kafka中自动提交offsets
文章浏览阅读1.6k次。如果生产者发送消息的速度超过发送到服务器的速度,则会导致生产者空间不足,这个时候KafkaProducer的send()方法调用要么被阻塞,要么抛出异常,这个取决于参数max.block.ms的配置,此参数的默认值为60000,即60秒。在默认情况下,生产者发送的消息是未经压缩的。如果应用程序调用send()方法的速度超过生产者将消息发送给服务器的速度,那么生产者的缓冲空间可能会被耗尽,后续的send()方法调用会等待内存空间被释放,如果在max.block.ms之后还没有可用空间,就抛出异常。_kafka producer 参数
文章浏览阅读2.9k次,点赞3次,收藏10次。kafka解决通信问题_kafka3.6
文章浏览阅读1.5k次,点赞9次,收藏11次。上面都配置完了之后可以先验证下,保证数据最终到ck,如果有问题,需要再每个节点调试,比如先调试nginx->rsyslog ,可以先不配置kafka 输出,配置为console或者文件输出都可以,具体这里就不写了。这里做了一个类型转换,因为nginx,request-time 单位是s,我想最终呈现在grafana 中是ms,所以这里做了转换,当然grafana中也可以做。kafka 相关部署这里不做赘述,只要创建一个topic 就可以。
文章浏览阅读1.4k次,点赞22次,收藏16次。Kafka中的enable-auto-commit和auto-commit-interval配置_auto-commit-interval
文章浏览阅读742次。thingsboard规则链调用外部 kafka_thingsboard kafka
文章浏览阅读1.3k次,点赞18次,收藏22次。Kafka_简介
文章浏览阅读1.1k次,点赞16次,收藏14次。在数据库系统中有个概念叫事务,事务的作用是为了保证数据的一致性,意思是要么数据成功,要么数据失败,不存在数据操作了一半的情况,这就是数据的一致性。在很多系统或者组件中,很多场景都需要保证数据的一致性,有的是高度的一致性。特别是在交易系统等这样场景。有些组件的数据不一定需要高度保证数据的一致性,比如日志系统。本节从从kafka如何保证数据一致性看通常数据一致性设计。
文章浏览阅读1.4k次。概述介绍架构发展架构原理类型系统介绍类型hive_table类型介绍DataSet类型定义Asset类型定义Referenceable类型定义Process类型定义Entities(实体)Attributes(属性)安装安装环境准备安装Solr-7.7.3安装Atlas2.1.0Atlas配置Atlas集成HbaseAtlas集成SolrAtlas集成KafkaAtlas Server配置Kerberos相关配置Atlas集成HiveAtlas启动Atlas使用Hive元数据初次导入Hive元数据增量同步。_atlas元数据管理
文章浏览阅读659次。Zookeeper是一个开源的分布式服务管理框架。存储业务服务节点元数据及状态信息,并负责通知再 ZooKeeper 上注册的服务几点状态给客户端。
文章浏览阅读1.4k次。Kafka-Kraft 模式架构部署_kafka kraft部署