运维实战:速通kafka高可用集群与认证

前言

Kafka是一个开源的分布式流处理平台,具有高吞吐低延时的特性,适合实时数据管道,消息队列等场景。本文将从零开始演示如何搭建一个高可用的Kafka分布式集群,以及如何配置认证功能提高安全性。

Kafka组件

在部署kafka前,我们先来了解下kafka的基本组件:

组件 用途
Producer 数据生产者,将消息发布到kafka的Topic中(如日志流数据)
Consumer 消费者,从Topic中订阅和处理消息
Broker kafka服务器节点,负责存储和转发消息
Topic 消息主题,从逻辑上将数据流进行分类
Partition 分区,通常一个Topic会分为多个Partition(有序),提高并行性
Offset 消息在Partition中的唯一位置标识
Replica 副本,为了保证数据可用性,每个Partition都会有若干个副本
kafka部署

从kafka 2.8+开始支持不依赖zookeeper的KRaft模式运行,生产环境建议从Kafka 3.3+版本开始使用;

在部署集群前,先了解如何部署一个kafka实例,这里使用docker方式;

mkdir -p kafka-broker/data && cd kafka-broker && chown 1001.1001 -R data
vim docker-compose.yml
--

services:
  kafka-broker1:
    image: bitnami/kafka:3.9
    container_name: kafka-broker1
    restart: unless-stopped
    network_mode: host
    environment:
      - TZ=Asia/Shanghai
      # 启用KRaft模式必要配置
      - KAFKA_ENABLE_KRAFT=yes
      # Kafka节点的ID
      - KAFKA_CFG_NODE_ID=1
      # 节点的角色,这里既是控制器也是代理
      - KAFKA_CFG_PROCESS_ROLES=controller,broker
      # 控制器仲裁投票者的配置
      - KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@10.0.0.82:9093
      # 定义了监听的端口和协议
      - KAFKA_CFG_LISTENERS=PLAINTEXT://10.0.0.82:9092,CONTROLLER://10.0.0.82:9093
      # 对外公布的监听器地址
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://10.0.0.82:9092
      # 监听协议映射,这里是明文
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
      # 控制器监听器的名称(负责管理集群元数据、协调分区副本状态等关键任务)
      - KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
      # 代理间通信的监听器名称(Broker之间进行同步元数据、复制消息等)
      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT
      # 允许自动创建Topic
      - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
      # 消息刷盘间隔
      - KAFKA_CFG_LOG_FLUSH_INTERVAL_MESSAGES=10000
      # 日志保留时间(小时)
      - KAFKA_CFG_LOG_RETENTION_HOURS=72
      # 设置默认的副本数
      - KAFKA_CFG_DEFAULT_REPLICATION_FACTOR=1
      # 设置默认的分区数
      - KAFKA_CFG_NUM_PARTITIONS=2
    volumes:
      # 配置文件目录: /opt/bitnami/kafka/config
      # 数据目录: /bitnami/kafka
      - /etc/localtime:/etc/localtime:ro
      - ./data:/bitnami/kafka
      
--

docker compose up -d
docker compose ps

测试消息生产/消费;

# 创建一个topic(不指定分区和副本数则按照默认的值生成)
docker exec -it kafka-broker1 kafka-topics.sh --create \
--bootstrap-server 10.0.0.82:9092 \
--replication-factor 1 \
--partitions 1 \
--topic demo

# 查看topic信息
docker exec -it kafka-broker1 kafka-topics.s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值