首页 > 其他分享 >docker swarm 集群部署Kafka3.5,彻底告别zookeeper

docker swarm 集群部署Kafka3.5,彻底告别zookeeper

时间:2023-06-30 18:58:44浏览次数:46  
标签:Kafka3.5 PLAINTEXT CFG zookeeper 9093 KAFKA swarm docker kafka

介绍

  1. 本次部署kafka3.5版本,彻底告别zookeeper时代,部署更加轻量,运维更加简单
  2. 同时使用比较好用的kafka控制台redpandadata

docker swam 集群搭建

docker-compose 文件准备

  • docker-compose-kafka3-cluster.yml
version: '3.3'
services:
  kafka-0:
    image: docker.io/bitnami/kafka:3.5
    ports:
      - "9094:9094"
    environment:
      - TZ=Asia/Shanghai
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_NODE_ID=0
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093
      - KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka-0:9092,EXTERNAL://172.25.114.1:9094
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
    volumes:
      - kafka_0_data:/bitnami/kafka
    networks:
      - kafka
    deploy:
      mode: replicated
      replicas: 1
      resources:
        limits: # 资源使用上限
          cpus: "0.50"
          memory: 1G
        reservations: # 随时可以使用的资源
          cpus: "0.25"
          memory: 1G
      placement:
        constraints:
          - node.labels.kafka.replica==1

  kafka-1:
    image: docker.io/bitnami/kafka:3.5
    ports:
      - "9095:9095"
    environment:
      - TZ=Asia/Shanghai
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_NODE_ID=1
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093
      - KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9095
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka-1:9092,EXTERNAL://172.25.114.2:9095
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
    volumes:
      - kafka_1_data:/bitnami/kafka
    networks:
      - kafka
    deploy:
      mode: replicated
      replicas: 1
      resources:
        limits: # 资源使用上限
          cpus: "0.50"
          memory: 1G
        reservations: # 随时可以使用的资源
          cpus: "0.25"
          memory: 1G
      placement:
        constraints:
          - node.labels.kafka.replica==2

  kafka-2:
    image: docker.io/bitnami/kafka:3.5
    ports:
      - "9096:9096"
    environment:
      - TZ=Asia/Shanghai
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_CFG_NODE_ID=2
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka-0:9093,1@kafka-1:9093,2@kafka-2:9093
      - KAFKA_KRAFT_CLUSTER_ID=abcdefghijklmnopqrstuv
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9096
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka-2:9092,EXTERNAL://172.25.114.3:9096
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
    volumes:
      - kafka_2_data:/bitnami/kafka
    networks:
      - kafka
    deploy:
      mode: replicated
      replicas: 1
      resources:
        limits: # 资源使用上限
          cpus: "0.50"
          memory: 1G
        reservations: # 随时可以使用的资源
          cpus: "0.25"
          memory: 1G
      placement:
        constraints:
          - node.labels.kafka.replica==3

  kafka-console:
    image: docker.io/redpandadata/console:latest
    ports:
      - "9099:8080"
    environment:
      KAFKA_BROKERS: "kafka-0:9092,kafka-1:9092,kafka-2:9092"
    networks:
      - kafka
    depends_on:
      - "kafka-0"
      - "kafka-1"
      - "kafka-2"
    deploy:
      placement:
        constraints:
          - node.labels.kafka.replica==1
volumes:
  kafka_0_data:
    driver: local
  kafka_1_data:
      driver: local
  kafka_2_data:
      driver: local

networks:
  kafka:
    external: true

NOTE: 这个docker-compose文件里面加了资源的限制,生产环境建议取消限制

创建专属网络

docker network create --driver overlay kafka

拉取镜像

docker pull docker.io/bitnami/kafka:3.5
docker pull docker.io/redpandadata/console:latest

给docker node打标签

docker node update --label-add kafka.replica=1 node1
docker node update --label-add kafka.replica=2 node2
docker node update --label-add kafka.replica=3 node3

部署服务

  • 部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。
docker stack deploy -c docker-compose-kafka3-cluster.yml

标签:Kafka3.5,PLAINTEXT,CFG,zookeeper,9093,KAFKA,swarm,docker,kafka
From: https://www.cnblogs.com/JentZhang/p/17517616.html

相关文章

  • 面试官问:ZooKeeper是强一致的吗?怎么实现的?
    Zookeeper通过ZAB保证分布式事务的最终一致性。 ZAB全称ZookeeperAtomicBroadcast(ZAB,Zookeeper原子消息广播协议)ZAB是一种专门为Zookeeper设计的一种支持崩溃恢复的原子广播协议,是Zookeeper保证数据一致性的核心算法。ZAB借鉴了Paxos算法,但它不是通用的一致性算法,是特......
  • docker部署Zookeeper+Kafka+Storm
    docker部署Zookeeper+Storm+Kafka安装docker信任Docker的GPG公钥:curl-fsSLhttps://repo.huaweicloud.com/docker-ce/linux/ubuntu/gpg|sudoapt-keyadd-`添加软件仓库:sudoadd-apt-repository"deb[arch=amd64]https://repo.huaweicloud.com/docker-ce/linux/ubun......
  • Zookeeper投票机制
    每个sever首先给自己投票,然后用自己的选票和其他sever选票对比,权重大的胜出,使用权重较大的更新自身选票箱。具体选举过程如下:1.每个Server启动以后都询问其它的Server它要投票给谁。对于其他server的询问,server每次根据自己的状态都回复自己推荐的leader的id和上......
  • Zookeeper 介绍
    一、Zookeeper介绍1.什么是ZookeeperZookeeper是一种分布式协调服务用于管理大型主机,分布式环境中协调管理服务是一个复杂的过程,Zookeeper通过其简单的架构和API解决这个问题。Zookeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布特性。2.Zookeeper......
  • 从2PC和容错共识算法讨论zookeeper中的Create请求 | 京东云技术团队
    最近在读《数据密集型应用系统设计》,其中谈到了zookeeper对容错共识算法的应用。这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以准备以此文对共识算法和2PC做梳理和区分,也希望它能帮助像我一样对这两者有误解的同学。1.2PC(两阶段提交协议)两......
  • 从2PC和容错共识算法讨论zookeeper中的Create请求
    最近在读《数据密集型应用系统设计》,其中谈到了zookeeper对容错共识算法的应用。这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以准备以此文对共识算法和2PC做梳理和区分,也希望它能帮助像我一样对这两者有误解的同学。1.2PC(两阶段提交协议......
  • linux-zookeeper
    zookeeper一、部署zookeeper单点1.下载zookeeper软件https://zookeeper.apache.org/releases.html[[email protected]~]#ll-rw-r--r--1rootroot13185104Apr1016:09apache-zookeeper-3.8.0-bin.tar.gz2.解压软件包[[email protected]~]#tarxfapache-zookeeper......
  • Zookeeper的浅尝
    Zookeeper是一个分布式的协调服务,可以用来管理共享数据、配置信息、命名服务(如DNS)和分布式锁等。Zookeeper的特点是具有高可用、一致性和可靠性,因此也被广泛应用于分布式系统中。主要组成Zookeeper的主要组成包括:Leader:Zookeeper集群中的一个节点被选举为Leader,负责协调......
  • 微服务 – Spring Cloud –zookeeper
    微服务–SpringCloud–zookeeperzookeeper简介ZooKeeper是一个集中式服务,用于维护配置信息、命名、提供分布式同步、提供组服务.支持高度可靠的分布式协调.zookeeper数据模型和分层命名空间zookeeper数据模型:其实就是用来存储和处理数据的。类似于数据库系统。不过z......
  • 基于粒子群的PMU优化配置,是一个使用粒子群优化算法(Particle Swarm Optimization, PSO
    基于粒子群的PMU优化配置软件:MATLAB介绍:电力系统PMU优化配置,为了使电力系统达到完全可观,以PMU配置数量最少为目标函数,运用粒子群算法进行优化处理,在IEEE303957118系统进行仿真验证。这段代码是一个使用粒子群优化算法(ParticleSwarmOptimization,PSO)来解决IEEE39节点电力......