Kafka集群搭建可视化指南

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: Kafka集群搭建可视化指南

前言

想象一下,你正在开发一款新的实时数据分析工具,但在处理大规模数据流时遇到了瓶颈。你需要一种可靠、高效的数据传输系统来帮助你实现这一目标。在这个挑战中,Kafka就是你的得力助手。本文将为你揭开Kafka集群搭建的神秘面纱,让你轻松掌握数据处理的主动权。

准备工作

在搭建 Kafka 集群之前,首先需要准备好硬件和环境。以下是一些准备工作的关键步骤:

硬件要求

  1. 服务器资源:
  • 确保每个服务器都有足够的 CPU 和内存资源来运行 Kafka 和 ZooKeeper。资源需求会根据你的实际使用情况而变化。
  1. 网络连接:
  • 确保服务器之间有稳定的网络连接,这对 Kafka 集群的正常运行至关重要。

环境准备

  1. Java 安装:
  • 安装 Java Development Kit (JDK)。Kafka 是用 Java 编写的,因此需要在服务器上安装 Java。推荐使用 Java 8 或更高版本。
  1. ZooKeeper 安装:
  • Kafka 集群依赖于 ZooKeeper 进行协调和管理。在安装 Kafka 之前,确保 ZooKeeper 已经安装并正常运行。你可以参考 ZooKeeper 的官方文档安装和配置 ZooKeeper。

kafka集群的部署与配置

3.1 单节点部署与多节点集群搭建

单节点部署:
  1. 下载 Kafka:
  • 访问 Kafka 的官方网站,下载最新版本的 Kafka。
  1. 解压 Kafka:
  • 将下载的 Kafka 压缩文件解压到你选择的目录。
  1. 配置 Kafka:
  • 进入 Kafka 目录,编辑 config/server.properties 文件。
  • 修改 broker.id 为唯一的整数,表示单节点的 Broker ID。
  • 根据需要修改其他配置,如监听端口、日志目录等。
  1. 启动 Kafka 服务器:
  • 在 Kafka 目录运行以下命令启动 Kafka 服务器:
bin/kafka-server-start.sh config/server.properties
多节点集群搭建:
  1. 配置不同的 Broker:
  • 在每个 Kafka 服务器上,根据需要修改 config/server.properties 中的 broker.id 和其他配置。
  • 每个 Broker 的 broker.id 必须是唯一的。
  1. 配置 ZooKeeper:
  • config/server.properties 中设置 ZooKeeper 连接信息,如:
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
  • 其中,zk1, zk2, zk3 是你 ZooKeeper 集群的地址。
  1. 启动 Kafka 服务器:
  • 在每个 Kafka 服务器上运行以下命令启动 Kafka 服务器:
bin/kafka-server-start.sh config/server.properties

3.2 Broker配置与优化

  1. 配置文件详解:
  • config/server.properties 包含了 Kafka 服务器的配置。根据需要修改其中的参数,如 listenerslog.dirsnum.partitions 等。
  1. JVM 配置:
  • 配置 Kafka 的 JVM 参数,可通过 config/server.properties 中的 KAFKA_HEAP_OPTS 来设置内存大小。
  1. 硬盘与网络优化:
  • 配置正确的硬盘路径 (log.dirs),确保 Kafka 有足够的磁盘空间。
  • 确保服务器之间的网络连接是高速和稳定的。

3.3 Topic的创建与管理

  1. 创建 Topic:
  • 使用 kafka-topics.sh 工具创建主题,例如:
bin/kafka-topics.sh --create --topic my_topic --bootstrap-server kafka1:9092 --partitions 3 --replication-factor 2
  1. 查看 Topic 列表:
  • 使用 kafka-topics.sh 工具查看已创建的主题列表:
bin/kafka-topics.sh --list --bootstrap-server kafka1:9092
  1. 查看 Topic 详细信息:
  • 使用 kafka-topics.sh 工具查看主题的详细信息:
bin/kafka-topics.sh --describe --topic my_topic --bootstrap-server kafka1:9092

3.4 安全性配置与权限管理

  1. SSL 配置:
  • 配置 Kafka 使用 SSL 进行安全通信。编辑 config/server.properties 文件,设置 SSL 配置项。
  1. SASL 配置:
  • 配置 Kafka 使用 SASL 进行身份验证。编辑 config/server.properties 文件,设置 SASL 配置项。
  1. ACL 权限管理:
  • 配置 Kafka ACL(Access Control Lists)进行精确的权限管理。编辑 config/server.properties 文件,设置 ACL 配置项。
  1. 认证与授权:
  • 配置 Kafka 使用其他认证和授权机制,如 Kerberos。编辑 config/server.properties 文件,设置相应的配置项。

请注意,确保配置和安全性设置符合你的生产环境需求。详细的配置选项和更多的信息可以参考 Kafka 的官方文档

knowstreaming

可视化官方文档

一定要注意脚本单机搭建风险提示,一定注意:

docker-compose搭建

docker-compose操作手册

这个是在官网的基础上做了部分修改

  1. ui端口映射改到了8081,这个最好先试一下你的端口是否被占用了lsof -i tcp:port
  2. es的镜像对于我的系统没有匹配的,也做了修改
  3. 官网默认没有挂载相关的日志以及数据,这里建议挂载一下。
  4. 启动之后如果出现登录网络异常,请稍微等一下再试,你可以看下manage的日志,还没有完全启动
  5. 首次启动之后init模块加载完成后会自动退出
version: '2'
services:
  # *不要调整knowstreaming-manager服务名称,ui中会用到
  knowstreaming-manager:
    image: knowstreaming/knowstreaming-manager:0.7.0
    container_name: knowstreaming-manager
    privileged: true
    restart: always
    depends_on:
      - elasticsearch-single
      - knowstreaming-mysql
    expose:
      - 80
    command:
      - /bin/sh
      - /ks-start.sh
    environment:
      TZ: Asia/Shanghai
      # mysql服务地址
      SERVER_MYSQL_ADDRESS: knowstreaming-mysql:3306
      # mysql数据库名
      SERVER_MYSQL_DB: know_streaming
      # mysql用户名
      SERVER_MYSQL_USER: root
      # mysql用户密码
      SERVER_MYSQL_PASSWORD: admin2022_
      # es服务地址
      SERVER_ES_ADDRESS: elasticsearch-single:9200
      # 服务JVM参数
      JAVA_OPTS: -Xmx1g -Xms1g
      # 对于kafka中ADVERTISED_LISTENERS填写的hostname可以通过该方式完成
  #    extra_hosts:
  #      - "hostname:x.x.x.x"
  # 服务日志路径
    volumes:
      - /Users/xiaobo/DockerImage/knowstreaming/log:/logs
  knowstreaming-ui:
    image: knowstreaming/knowstreaming-ui:0.7.0
    container_name: knowstreaming-ui
    restart: always
    ports:
      - '8081:80'
    environment:
      TZ: Asia/Shanghai
    depends_on:
      - knowstreaming-manager
  #    extra_hosts:
  #      - "hostname:x.x.x.x"
  elasticsearch-single:
    image: elasticsearch:7.16.3
    container_name: elasticsearch-single
    restart: always
    expose:
      - 9200
      - 9300
    #    ports:
    #      - '9200:9200'
    #      - '9300:9300'
    environment:
      TZ: Asia/Shanghai
      # es的JVM参数
      ES_JAVA_OPTS: -Xms512m -Xmx512m
      # 单节点配置,多节点集群参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docker.html#docker-compose-file
      discovery.type: single-node
      # 数据持久化路径
    volumes:
      - /Users/xiaobo/DockerImage/knowstreaming/data:/usr/share/elasticsearch/data
  # es初始化服务,与manager使用同一镜像
  # 首次启动es需初始化模版和索引,后续会自动创建
  knowstreaming-init:
    image: knowstreaming/knowstreaming-manager:0.7.0
    container_name: knowstreaming-init
    depends_on:
      - elasticsearch-single
    command:
      - /bin/bash
      - /es_template_create.sh
    environment:
      TZ: Asia/Shanghai
      # es服务地址
      SERVER_ES_ADDRESS: elasticsearch-single:9200
  knowstreaming-mysql:
    image: knowstreaming/knowstreaming-mysql:0.7.0
    container_name: knowstreaming-mysql
    restart: always
    environment:
      TZ: Asia/Shanghai
      # root 用户密码
      MYSQL_ROOT_PASSWORD: admin2022_
      # 初始化时创建的数据库名称
      MYSQL_DATABASE: know_streaming
      # 通配所有host,可以访问远程
      MYSQL_ROOT_HOST: '%'
    expose:
      - 3306
#    ports:
#      - '3306:3306'
# 数据持久化路径
    volumes:
      - /Users/xiaobo/DockerImage/knowstreaming/mysql:/data/mysql

引入kafka集群


相关文章
|
17天前
|
消息中间件 存储 监控
构建高可用性Apache Kafka集群:从理论到实践
【10月更文挑战第24天】随着大数据时代的到来,数据传输与处理的需求日益增长。Apache Kafka作为一个高性能的消息队列服务,因其出色的吞吐量、可扩展性和容错能力而受到广泛欢迎。然而,在构建大规模生产环境下的Kafka集群时,保证其高可用性是至关重要的。本文将从个人实践经验出发,详细介绍如何构建一个高可用性的Kafka集群,包括集群规划、节点配置以及故障恢复机制等方面。
49 4
|
1月前
|
消息中间件 监控 数据可视化
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
51 2
|
15天前
|
消息中间件 存储 Prometheus
Kafka集群如何配置高可用性
Kafka集群如何配置高可用性
|
1月前
|
消息中间件 分布式计算 监控
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
大数据-78 Kafka 集群模式 集群的应用场景与Kafka集群的搭建 三台云服务器
61 6
|
3月前
|
消息中间件 Kafka 测试技术
【Kafka揭秘】Leader选举大揭秘!如何打造一个不丢失消息的强大Kafka集群?
【8月更文挑战第24天】Apache Kafka是一款高性能分布式消息系统,利用分区机制支持数据并行处理。每个分区含一个Leader处理所有读写请求,并可有多个副本确保数据安全与容错。关键的Leader选举机制保障了系统的高可用性和数据一致性。选举发生于分区创建、Leader故障或被手动移除时。Kafka提供多种选举策略:内嵌机制自动选择最新数据副本为新Leader;Unclean选举快速恢复服务但可能丢失数据;Delayed Unclean选举则避免短暂故障下的Unclean选举;Preferred选举允许基于性能或地理位置偏好指定特定副本为首选Leader。
69 5
|
3月前
|
消息中间件 监控 Java
联通实时计算平台问题之监控Kafka集群的断传和积压情况要如何操作
联通实时计算平台问题之监控Kafka集群的断传和积压情况要如何操作
|
3月前
|
消息中间件 监控 Java
【Kafka节点存活大揭秘】如何让Kafka集群时刻保持“心跳”?探索Broker、Producer和Consumer的生死关头!
【8月更文挑战第24天】在分布式系统如Apache Kafka中,确保节点的健康运行至关重要。Kafka通过Broker、Producer及Consumer间的交互实现这一目标。文章介绍Kafka如何监测节点活性,包括心跳机制、会话超时与故障转移策略。示例Java代码展示了Producer如何通过定期发送心跳维持与Broker的连接。合理配置这些机制能有效保障Kafka集群的稳定与高效运行。
70 2
|
4月前
|
消息中间件 Kafka
kafka 集群环境搭建
kafka 集群环境搭建
69 8
|
3月前
|
消息中间件 Java Kafka
Linux——Kafka集群搭建
Linux——Kafka集群搭建
48 0
|
3月前
|
消息中间件 Kafka Apache
部署安装kafka集群
部署安装kafka集群