华为云云耀云服务器L实例评测 | docker部署kafka集群-kraft

华为云云耀云服务器L实例评测 | docker部署kafka集群-kraft

1. 云耀云服务器L实例简介

以下内容摘自官网

​ 云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新轻量应用云服务器。云耀云服务器L实例提供丰富严选的应用镜像,实现应用一键部署,助力客户便捷高效的在云端构建电商网站、Web应用、小程序、学习环境、各类开发测试等。云耀云服务器L实例使用门槛较低,如果您是正在了解云计算服务的入门用户,或是需要在服务器中部署简单应用的个人开发者、中小企业,那么推荐您选择云耀云服务器L实例。

云耀云服务器L实例适用于支撑小型网站、Web应用、博客、论坛、云端开发环境等轻量级、低负载且访问量适中的应用场景。

  • 电商店铺管理:快速搭建外贸独立站、店铺管理环境,为海内外顾客提供稳定、优质的服务。
  • 建站:提供常用建站类应用模板,快速构建满足业务诉求的网站,如企业官网、资讯、博客、论坛、电商等。
  • 小程序后台:适合于构建微信小程序以及公众号后台服务,降低维护成本,让用户专注于业务开发。
  • 小游戏:帮助客户搭建PC单机游戏、休闲小游戏等,快速上线,性能稳定。
  • 开发测试:适合云端构建即开即用的远程开发、测试项目,运行定时任务、自动任务等。
  • 云端学习:帮助学生、开发者在云端做一些实验、论文等。
  • 搭建博客/论坛:方便个人开发者搭建博客、论坛,性价比高。

2. kafka简介

​ Kafka是由Apache软件基金会开发的一个开源流处理平台,由ScalaJava编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

3. 部署方案

​ kafka3.0之后不再强依赖zookeeper,可以使用kraft协议进行集群通信,本文将使用docker搭建三节点kafka集群。

4. 环境准备

4.1 华为云云耀云L实例准备

云耀云L实例

云耀云L实例

4.2 docker一键安装

一键安装脚本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
查看版本
docker -v
启动docker服务
systemctl start docker
停止docker服务
systemctl stop docker
设置开机自启
systemctl enable docker

4.3 拉取kafka镜像

docker pull bitnami/kafka:3.3.1

4.4 创建docker-compose文件

创建docker-compose-kafka.yml文件,内容如下:

注:新版的kafka不在强制依赖zookeeper,自己实现了集群算法kraft,目测应该是基于raft的。

此集群为三节点集群,分别为kafka1、kafka2、kafka3,下面只对kafka1配置进行说明,其中IP和端口需要修改
其中#号注释的部分,在使用时需要手动删除

version: "3.6"
services:
  kafka1:
    container_name: kafka1
    image: 'bitnami/kafka:3.3.1'
    user: root
    ports:
      - '9092:9092'
      - '9093:9093'
    environment:
      # 允许使用Kraft
      - KAFKA_ENABLE_KRAFT=yes
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      # 定义kafka服务端socket监听端口(Docker内部的ip地址和端口)
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
      # 定义安全协议
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      #定义外网访问地址(宿主机ip地址和端口)
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.116:9092
      - KAFKA_BROKER_ID=1
      # 统一集群ID,三节点一致,禁止修改
      - KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
      # 集群所有节点的虚拟IP列表
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
      # 设置broker最大内存,和初始内存
      - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M
    volumes:
	  # 磁盘挂载
      - /root/docker/kafka/broker01:/bitnami/kafka:rw
    networks:
      netkafka:
        # 指定kafka1的虚拟IP
        ipv4_address: 172.23.0.11
  kafka2:
    container_name: kafka2
    image: 'bitnami/kafka:3.3.1'
    user: root
    ports:
      - '19092:9092'
      - '19093:9093'
    environment:
      - KAFKA_ENABLE_KRAFT=yes
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.116:19092  #修改宿主机ip
      - KAFKA_BROKER_ID=2
      - KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M
    volumes:
      - /root/docker/kafka/broker02:/bitnami/kafka:rw
    networks:
      netkafka:
        ipv4_address: 172.23.0.12
  kafka3:
    container_name: kafka3
    image: 'bitnami/kafka:3.3.1'
    user: root
    ports:
      - '29092:9092'
      - '29093:9093'
    environment:
      - KAFKA_ENABLE_KRAFT=yes
      - KAFKA_CFG_PROCESS_ROLES=broker,controller
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.116:29092
      - KAFKA_BROKER_ID=3
      - KAFKA_KRAFT_CLUSTER_ID=iZWRiSqjZAlYwlKEqHFQWI
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@172.23.0.11:9093,2@172.23.0.12:9093,3@172.23.0.13:9093
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_HEAP_OPTS=-Xmx512M -Xms256M
    volumes:
      - /root/docker/kafka/broker03:/bitnami/kafka:rw
    networks:
      netkafka:
        ipv4_address: 172.23.0.13
networks:
  name:
  netkafka:
    driver: bridge
    name: netkafka
    ipam:
      driver: default
      config:
        - subnet: 172.23.0.0/25
          gateway: 172.23.0.1

4.5 一键运行kafka集群

执行docker compose命令运行

# docker compose分V1和v2版本
# v1版本
docker-compose -f docker-compose-kafka.yml up -d
# v2版本
docker compose -f docker-compose-kafka.yml up -d

4.6 一键停止kafka集群

执行docker compose命令运行

# docker compose分V1和v2版本
# v1版本
docker-compose -f docker-compose-kafka.yml stop
# v2版本
docker compose -f docker-compose-kafka.yml stop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值