Kafka集群搭建可视化指南

news/2024/10/20 8:49:20/

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

Kafka集群搭建可视化指南

    • 前言
    • 准备工作
      • 硬件要求
      • 环境准备
    • kafka集群的部署与配置
      • 3.1 单节点部署与多节点集群搭建
        • 单节点部署:
        • 多节点集群搭建:
      • 3.2 Broker配置与优化
      • 3.3 Topic的创建与管理
      • 3.4 安全性配置与权限管理
    • knowstreaming
      • docker-compose搭建
      • 引入kafka集群

前言

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

准备工作

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

硬件要求

  1. 服务器资源:

    • 确保每个服务器都有足够的 CPU 和内存资源来运行 Kafka 和 ZooKeeper。资源需求会根据你的实际使用情况而变化。
  2. 网络连接:

    • 确保服务器之间有稳定的网络连接,这对 Kafka 集群的正常运行至关重要。

环境准备

  1. Java 安装:

    • 安装 Java Development Kit (JDK)。Kafka 是用 Java 编写的,因此需要在服务器上安装 Java。推荐使用 Java 8 或更高版本。
  2. ZooKeeper 安装:

    • Kafka 集群依赖于 ZooKeeper 进行协调和管理。在安装 Kafka 之前,确保 ZooKeeper 已经安装并正常运行。你可以参考 ZooKeeper 的官方文档安装和配置 ZooKeeper。

kafka_31">kafka集群的部署与配置

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

单节点部署:
  1. 下载 Kafka:

    • 访问 Kafka 的官方网站,下载最新版本的 Kafka。
  2. 解压 Kafka:

    • 将下载的 Kafka 压缩文件解压到你选择的目录。
  3. 配置 Kafka:

    • 进入 Kafka 目录,编辑 config/server.properties 文件。
    • 修改 broker.id 为唯一的整数,表示单节点的 Broker ID。
    • 根据需要修改其他配置,如监听端口、日志目录等。
  4. 启动 Kafka 服务器:

    • 在 Kafka 目录运行以下命令启动 Kafka 服务器:

      bin/kafka-server-start.sh config/server.properties
      
多节点集群搭建:
  1. 配置不同的 Broker:

    • 在每个 Kafka 服务器上,根据需要修改 config/server.properties 中的 broker.id 和其他配置。
    • 每个 Broker 的 broker.id 必须是唯一的。
  2. 配置 ZooKeeper:

    • config/server.properties 中设置 ZooKeeper 连接信息,如:

      zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
      

      其中,zk1, zk2, zk3 是你 ZooKeeper 集群的地址。

  3. 启动 Kafka 服务器:

    • 在每个 Kafka 服务器上运行以下命令启动 Kafka 服务器:

      bin/kafka-server-start.sh config/server.properties
      

3.2 Broker配置与优化

  1. 配置文件详解:

    • config/server.properties 包含了 Kafka 服务器的配置。根据需要修改其中的参数,如 listenerslog.dirsnum.partitions 等。
  2. JVM 配置:

    • 配置 Kafka 的 JVM 参数,可通过 config/server.properties 中的 KAFKA_HEAP_OPTS 来设置内存大小。
  3. 硬盘与网络优化:

    • 配置正确的硬盘路径 (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
      
  2. 查看 Topic 列表:

    • 使用 kafka-topics.sh 工具查看已创建的主题列表:

      bin/kafka-topics.sh --list --bootstrap-server kafka1:9092
      
  3. 查看 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 配置项。
  2. SASL 配置:

    • 配置 Kafka 使用 SASL 进行身份验证。编辑 config/server.properties 文件,设置 SASL 配置项。
  3. ACL 权限管理:

    • 配置 Kafka ACL(Access Control Lists)进行精确的权限管理。编辑 config/server.properties 文件,设置 ACL 配置项。
  4. 认证与授权:

    • 配置 Kafka 使用其他认证和授权机制,如 Kerberos。编辑 config/server.properties 文件,设置相应的配置项。

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

knowstreaming_138">knowstreaming

可视化官方文档

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

image-20240313163512595

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.0container_name: knowstreaming-managerprivileged: truerestart: alwaysdepends_on:- elasticsearch-single- knowstreaming-mysqlexpose:- 80command:- /bin/sh- /ks-start.shenvironment: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:/logsknowstreaming-ui:image: knowstreaming/knowstreaming-ui:0.7.0container_name: knowstreaming-uirestart: alwaysports:- '8081:80'environment:TZ: Asia/Shanghaidepends_on:- knowstreaming-manager#    extra_hosts:#      - "hostname:x.x.x.x"elasticsearch-single:image: elasticsearch:7.16.3container_name: elasticsearch-singlerestart: alwaysexpose:- 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-filediscovery.type: single-node# 数据持久化路径volumes:- /Users/xiaobo/DockerImage/knowstreaming/data:/usr/share/elasticsearch/data# es初始化服务,与manager使用同一镜像# 首次启动es需初始化模版和索引,后续会自动创建knowstreaming-init:image: knowstreaming/knowstreaming-manager:0.7.0container_name: knowstreaming-initdepends_on:- elasticsearch-singlecommand:- /bin/bash- /es_template_create.shenvironment:TZ: Asia/Shanghai# es服务地址SERVER_ES_ADDRESS: elasticsearch-single:9200knowstreaming-mysql:image: knowstreaming/knowstreaming-mysql:0.7.0container_name: knowstreaming-mysqlrestart: alwaysenvironment: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_263">引入kafka集群

image-20240313164448058


http://www.ppmy.cn/news/1428185.html

相关文章

XiaodiSec day028 Learn Note 小迪渗透学习笔记

XiaodiSec day028 Learn Note 小迪渗透学习笔记 记录得比较凌乱,不尽详细 day 28 还是 sql 注入 知识点 提交方式的注入 在 php, spring boot, flask 都有相关的提交方式 提交方式的注入 数据以某种方式提交到后端 数据大小和数据类型和提交方式有关 如身份…

if __name__ == ‘__main__‘ 是个什么鬼?

有句话经典的概括了这段代码的意义: “Make a script both importable and executable” 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。 咋一看,其实我也不理解到底是个什么球意思,这里我们写两个…

Ubuntu - 网络

本文简单介绍几个网络相关的命令 ip ip addr show 显示所有网卡的地址ip addr show ens33 显示ens33网卡地址ip addr add 192.168.13.143/24 dev ens33 为ens33网卡设置地址ip route show 显示所有网卡路由ip route get 110.242.68.3 展示110.242.68.3到本机的哪个网卡ip -s l…

数据可视化-ECharts Html项目实战(13)

在之前的文章中,我们深入学习ECharts动态主题切换和自定义ECharts主题。想了解的朋友可以查看这篇文章。同时,希望我的文章能帮助到你,如果觉得我的文章写的不错,请留下你宝贵的点赞,谢谢。 数据可视化-ECharts Html项…

C++多重继承解决方法

eg1&#xff1a;解决方法&#xff1a;添加作用域标识符&#xff0c;消除成员限定的二义性 #include <iostream> #include<iostream> #include<vector> using namespace std; class A { public: void f() { cout << "A::f()&quo…

Java程序员学习路线指南

Java程序员学习路线指南 Java是一种广泛使用的编程语言&#xff0c;拥有庞大的生态系统和丰富的应用场景。成为一名优秀的Java程序员需要不断学习和实践。本文将为你提供一条清晰的Java学习路线&#xff0c;帮助你从入门到精通&#xff0c;逐步成为Java领域的专家。 1. Java基…

计算机网络----第十三天

DNS协议和文件传输协议 DNS&#xff1a; 含义&#xff1a;用于域名和IP地址的互相解析 DNS域名&#xff1a; 背景&#xff1a;通过IP地址访问目标主机&#xff0c;不便于记忆 域名的树形层次化结构&#xff1a; ①根域 ②顶级域&#xff1a;主机所处的国家/区域&#xf…

Redis中的Lua脚本(一)

Lua脚本 概述 Redis从2.6版本开始引入对Lua脚本的支持&#xff0c;通过在服务器中嵌入Lua环境,Redis客户端可以使用Lua脚本&#xff0c;直接在服务器端原子地执行多个Redis命令。其中使用EVAL命令可以直接对输入的脚本进行求值: 127.0.0.1:6379> EVAL "return hello…