kafka 集群企业部署最佳实践

news2024/12/23 9:49:41

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.关于Kafka
    • 📣 2.环境准备
      • ✨ 2.1 节点规划
      • ✨ 2.2 防火墙及selinux
      • ✨ 2.3 配置主机名
      • ✨ 2.4 JDK环境
    • 📣 3.zookeeper集群部署
      • ✨ 3.1 解压安装
      • ✨ 3.2 环境变量
      • ✨ 3.3 集群配置
      • ✨ 4.4 zookeeper管理
    • 📣 4.kafka集群部署
    • 📣 5.kafka 运维
      • ✨ 5.1 kafka 命令
      • ✨ 5.2 kafka-eagle部署

前言

Kafka 是一款高性能、高可靠性、可水平扩展的分布式消息队列系统

📣 1.关于Kafka

Kafka 是一款高性能、高可靠性、可水平扩展的分布式消息队列系统,由 Apache 软件基金会开发和维护。它可以实现消息的异步处理和分布式计算,被广泛应用于大数据、实时数据流处理、监控报警等领域。
除了实现高效的分布式消息订阅之外,还提供数据实时流处理和数据存储功能。当然Kafka还可以将数据集成到大数据平台或者数据中台中.

官方网址:https://kafka.apache.org/
下载二进制安装包即可:kafka_2.13-3.5.1.tgz

在这里插入图片描述

📣 2.环境准备

✨ 2.1 节点规划

在这里插入图片描述

✨ 2.2 防火墙及selinux

##以下操作每个节点均操作
1.关闭防火墙
查看防火墙是状态
[root@Kafka1 ~]# systemctl status firewalld
关闭防火墙
[root@Kafka1 ~]# systemctl stop firewalld
取消开机自启动
[root@Kafka1 ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

2.关闭selinux
修改参数文件/etc/sysconfig/selinux中SELINUX的值为disabled
[root@Kafka1 ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
修改完成后需要重启服务器才生效

✨ 2.3 配置主机名

#每个节点做相关的操作
hostnamectl set-hostname kafka1
hostnamectl set-hostname kafka2
hostnamectl set-hostname kafka3

编辑host 文件
vi /etc/hosts
172.18.12.40 kafka1
172.18.12.41 kafka2
172.18.12.42 kafka3

✨ 2.4 JDK环境

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序

1.下载Linux环境下的jdk1.8
https://www.oracle.com/java/technologies/downloads/#java8

2.JDK压缩包解压
tar -zxvf jdk-8u391-linux-x64.tar.gz -C /usr/local

3.环境变量导入
vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_391
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

##环境变量生效
source /etc/profile

##确认安装是否成功
javac
java -version

[root@doris ~]# java -version
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

📣 3.zookeeper集群部署

直接从这个网址下载即可:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/
安装前注意事项:
1)zookeeper节点必须是奇数个,因为zookeeper选举的规则:leader选举,要求可用节点数量必须大于总节点数量/2
2)zookeeper 是使用 java 来运行的,所以需要依赖 JDK,所以安装 zookeeper 之前需要安装部署 JDK
3) 注意关闭节点服务器的防火墙
这里要注意!!!官网上有两个tar.gz文件,bin名称结尾的包就是我们要下载的,可以直接使用。
里面有编译好的二进制包,上一个普通的tar.gz包只包含源码,不能直接使用。
在这里我们下载的是3.8.2版本

✨ 3.1 解压安装

tar -zxvf apache-zookeeper-3.8.2-bin.tar.gz
mv apache-zookeeper-3.8.2-bin /usr/local/zookeeper

✨ 3.2 环境变量

添加我们需要的配置信息,ZOOKEEPER_HOME 为你安装的zookeeper目录
vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:JRE_HOME/bin: Z O O K E E P E R H O M E / b i n : ZOOKEEPER_HOME/bin: ZOOKEEPERHOME/bin:PATH

cat >> /etc/profile << "EOF"
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
EOF
##使环境变量生效
source /etc/profile
##查看是否生效
echo $ZOOKEEPER_HOME

✨ 3.3 集群配置

1)创建数据存储及日志目录
mkdir -p /usr/local/zookeeper/data
mkdir -p /usr/local/zookeeper/log

2)zookeeper配置文件
cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg 
vi zoo.cfg
##修改以下内容
# 心跳时间
tickTime=2000
# follow连接leader的初始化连接时间,表示tickTime的倍数
initLimit=10
# syncLimit配置表示leader与follower之间发送消息,请求和应答时间长度。
如果followe在设置的时间内不能与leader进行通信,那么此follower将被丢弃,tickTime的倍数
syncLimit=5
# 客户端连接超时时间ms
maxClientCnxns=600
# 客户端连接端口,访问 zookeeper的端口
clientPort=2181
# 节点数据存储及日志目录,需要提前创建
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log

server.1=172.18.12.40:2888:3888
server.2=172.18.12.41:2888:3888
server.3=172.18.12.42:2888:3888

3)每台机器配置节点id
##每台机器分别执行
在机器1上执行:
echo 1 >/usr/local/zookeeper/data/myid
在机器2上执行:
echo 2 >/usr/local/zookeeper/data/myid
在机器3上执行:
echo 3 >/usr/local/zookeeper/data/myid

在这里插入图片描述

✨ 4.4 zookeeper管理

1.手动启动
cd /usr/local/zookeeper/bin/
./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/…/conf/zoo.cfg
Starting zookeeper … STARTED

##查看zookeeper启动状态
sh zkServer.sh status
[root@kafka1 bin]# sh zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/…/conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

##验证zookeeper
启动成功后可以随便选择一个节点尝试连接另一个节点验证
sh zkCli.sh -server 172.18.12.41:2181
成功进入后显示:
[zk: 172.18.12.41:2181(CONNECTED) 0]

📣 4.kafka集群部署

https://kafka.apache.org/downloads

在这里插入图片描述

1.解压安装
mkdir -p /usr/local/kafka
#kafka数据目录 
mkdir -p /data/kafka/kafka-logs

tar -zxf /opt/kafka_2.13-3.5.1.tgz -C /usr/local/kafka

[root@Kafka1 ~]# ll /usr/local/kafka/kafka_2.13-3.5.1
total 64
drwxr-xr-x 3 root root  4096 Jul 15 00:53 bin
drwxr-xr-x 3 root root  4096 Jul 15 00:53 config
drwxr-xr-x 2 root root  4096 Nov  4 12:03 libs
-rw-rw-r-- 1 root root 14722 Jul 15 00:50 LICENSE
drwxr-xr-x 2 root root  4096 Jul 15 00:53 licenses
-rw-rw-r-- 1 root root 28184 Jul 15 00:50 NOTICE
drwxr-xr-x 2 root root  4096 Jul 15 00:53 site-docs

2.Kafka配置
[root@Kafka1 ~]# cd /usr/local/kafka/kafka_2.13-3.5.1
--编辑配置文件,节点1修改
/usr/local/kafka/kafka_2.13-3.5.1/config/server.properties
 
 
vi /etc/profile
#KAFKA_HOME
export KAFKA_HOME=/usr/local/kafka/kafka_2.13-3.5.1
export PATH=$PATH:$KAFKA_HOME/bin

--编辑kafka1 的配置
broker.id=1
#listeners=PLAINTEXT://172.18.12.40:9092
advertised.listeners=PLAINTEXT://172.18.12.40:90927
# 连接zookeeper的集群地址
zookeeper.connect=172.18.12.40:2181,172.18.12.41:2181,172.18.12.42:2181

--编辑kafka2 的配置
broker.id=2
#listeners=PLAINTEXT://172.18.12.40:9092
advertised.listeners=PLAINTEXT://172.18.12.41:90927
# 连接zookeeper的集群地址
zookeeper.connect=172.18.12.40:2181,172.18.12.41:2181,172.18.12.42:2181


--编辑kafka3 的配置
broker.id=3
#listeners=PLAINTEXT://172.18.12.40:9092
advertised.listeners=PLAINTEXT://172.18.12.42:90927
# 连接zookeeper的集群地址
zookeeper.connect=172.18.12.40:2181,172.18.12.41:2181,172.18.12.42:2181


启动kafka服务
kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
kafka-server-start.sh -daemon  $KAFKA_HOME/config/server.properties
kafka-server-start.sh -daemon  $KAFKA_HOME/config/server.properties

关闭kafka服务
kafka-server-stop.sh

📣 5.kafka 运维

✨ 5.1 kafka 命令

1.创建 topic

cd /usr/local/kafka/kafka_2.13-3.5.1

./bin/kafka-topics.sh --bootstrap-server broker_host:port --create --topic my_topic_name \
--partitions 20 --replication-factor 3 --config x=y

注 :此命令是在kafka部署目录中操作
kafka-topics.sh --bootstrap-server 172.18.12.40:9092 --create --topic my_topic_name
kafka-topics.sh --bootstrap-server 172.18.12.40:9092 --delete --topic my_topic_name

--列出主题
kafka-topics.sh --list --bootstrap-server 172.18.12.40:9092
my_topic_name




参数 详解 :

--bootstrap-server : kafka集群地址
--create :执行创创建操作
--topic :topic名称
--partitions :topic 的分区数
--replication-factor topic 的副本
--config: 可选,创建 topic指定topic参数 配置


创建生产者生产数据
[root@kafka1 bin]# kafka-console-producer.sh --broker-list 172.18.12.40:9092,172.18.12.41:9092,172.18.12.42:9092 --topic my_topic_name
>这是一个测试

测试消费者是否可以消费数据
[root@kafka2 config]# kafka-console-consumer.sh --bootstrap-server 172.18.12.40:9092 --topic my_topic_name --from-beginning
这是一个测试

✨ 5.2 kafka-eagle部署

kafka-eagle现在更名为 EFAK
官网:https://www.kafka-eagle.org/

##解压缩包重命名目录
mkdir /opt/software
tar xf kafka-eagle-bin-3.0.1.tar.gz -C /opt/software/
cd /opt/software/kafka-eagle-bin-3.0.1
tar xf efak-web-3.0.1-bin.tar.gz
mv efak-web-3.0.1 kafka-eagle

##配置环境变量
vim /etc/profile
export KE_HOME= /opt/software/kafka-eagle-bin-3.0.1/kafka-eagle
PATH=$PATH:$KE_HOME/bin

##更新环境变量
source /etc/profile

##修改Kafka-Eagle配置文件
cd $KE_HOME/conf
vim system-config.properties

######################################
# multi zookeeper&kafka cluster list
# zookeeper和kafka集群配置
######################################
kafka.eagle.zk.cluster.alias=cluster
cluster.zk.list=172.18.12.40:2181,172.18.12.41:2181,172.18.12.42:2181
######################################
# kafka eagle webui port 
# web页面访问端口号
######################################
kafka.eagle.webui.port=8048
######################################
# kafka jdbc driver address
# kafka默认使用sqlite数据库,Centos自带,注意配置下数据库存放路径就行
######################################
kafka.eagle.driver=org.sqlite.JDBC
#修改到对应路径下面,不然启动回报错
kafka.eagle.url=jdbc:sqlite:/opt/software/kafka-eagle/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=www.kafka-eagle.org

######################################
# kafka mysql jdbc driver address
######################################
efak.driver=com.mysql.cj.jdbc.Driver
efak.url=jdbc:mysql://127.0.0.1:3306/ke?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
efak.username=root
efak.password=123456


##启动kafka-eagle

cd …/bin/
chmod +x ke.sh
./ke.sh start
此处注意脚本

./ke.sh stop

mroe /opt/software/kafka-eagle-bin-3.0.1/kafka-eagle/logs/error.log


#  网址密码
* Kafka Eagle Service has started success.
* Welcome, Now you can visit 'http://192.168.3.15:8048/ke'
* Account:admin ,Password:123456

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1191859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Git安装配置保姆级教程和Git创建仓库的基本原理和常用命令

目录 前言 一、Git简介 1.Git 与 SVN 区别点 2.Git的介绍 3.Git 工作流程 4.Git 工作区、暂存区和版本库 二、Git安装配置 1.Linux 平台上安装 2.Windows 平台上安装 三、Git 创建仓库和下载 1、首先需要注册一个gitee账号 2.git初始化并提交到远程仓库 3.另一用户…

chrome 的vue3的开发者devtool不起作用

问题&#xff1a; 刚刚vue2升级到vue3&#xff0c;旧的devtool识别不了vue3数据。 原因&#xff1a; devtool版本过低。升级到最新。 解决&#xff1a; 去github下载vuetool项目代码&#xff1a; GitHub - vuejs/devtools: ⚙️ Browser devtools extension for debugging…

Linux学习笔记之五(父子进程、孤儿进程、僵尸进程、守护进程)

Linux 1、进程1.1、进程的六种状态1.2、创建子进程1.3、添加子进程任务1.4、孤儿进程、僵尸进程、守护进程1.4.1、避免僵尸进程1.4.2、创建守护进程1.4.3、杀死守护进程 1.5、综合练习 1、进程 进程可以简单的理解为一个正在执行的程序&#xff0c;它是计算机系统中拥有资源和…

django建站过程(4)创建文档显示页面

django建站过程&#xff08;4&#xff09;创建文档显示页面 创建文档显示页面项目主文件夹schoolapps中的文件urls.py在APP“baseapps”中创建url.py文件编写视图模板继承bootstrap创建head.html创建doclist.html创建docdetail.html 使用 markdown 编辑器安装模块Model 模型的d…

Hello World背后的逻辑

一门语言的开发入门&#xff0c;总是抬手就能整出一个「Hello World Demo」。比如下面这样&#xff1a; 显然&#xff0c;熟悉 iOS 开发的同学都知道&#xff0c;上面这个来自 Objective-C。 今天&#xff0c;我们就从这熟悉的代码入手&#xff0c;来一起研究研究「Hello Worl…

泄露35TB数据,医疗巨头Henry Schein遭受黑猫勒索组织攻击

近日&#xff0c;据Bleeping Computer 网站消息&#xff0c;BlackCat&#xff08;黑猫&#xff09;勒索软件团伙将医疗保健巨头Henry Schein 添加到了其暗网泄露网站&#xff0c;并声称其破坏了该公司的网络&#xff0c;窃取了35 TB的敏感文件&#xff0c;这些文件包括了Henry …

BES 在大规模向量数据库场景的探索和实践

导读 本文整理自 2023 年 9 月 5 日 QCon 全球软件开发大会 2023 北京站 —— 向量数据库分论坛的同名主题演讲《BES 在大规模向量数据库场景的探索和实践》。 全文5989字&#xff0c;预计阅读时间15分钟。 向量数据库是一种专门用于存储和查询向量数据的数据库系统。通过 Emb…

verdi如何打开时可以加载配置比如字体

打开tcl使能 找到配置字体的命令 其实其他有需要的文件配置都可以在这里找到对应的指令 存储文件 新建verdi001.tcl文件 输入想要调整的字体以及大小 verdiSetFont -font "Bitstream Vera Sans" -size "18" verdiSetFont -monoFont "Courier&q…

【 云原生 | K8S 】kubectl 详解

目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器&#xff08;deployment&#xff09;来启动Pod&#xff08;nginx-wl…

做哪些副业可以日赚一百?对程序员来说简直不要太容易!

日赚一百&#xff1f;对程序员来说简直不要太容易&#xff01;下面给程序员们推荐一些日赚100的副业&#xff1a; ①外包接单 程序员简单粗暴赚钱的副业之一。 外包接单的类型包括但不限于&#xff1a;软件开发、硬件开发、小程序功能开发、web开发……大到一个系统的开发、…

什么样的CRM系统更适合外贸企业?

外贸CRM系统作为外贸客户关系管理的工具&#xff0c;已经成为了当下外贸企业对外贸易过程中不可或缺的一环。那什么样的CRM系统更适合外贸企业&#xff1f;小Z向您推荐Zoho CRM。下面说说它到底有什么好处和作用。 一、搭建更高效的客户关系管理系统 外贸企业从前期推广、开发…

202205(第13届)蓝桥杯Scratch图形化编程青少组(国赛_中级)真题

202205(第13届)蓝桥杯Scratch图形化编程青少组(国赛_中级)真题 第 1 题 以下程序&#xff0c;小猫在移动完成后不能回到初始位置的是&#xff1f;&#xff08; &#xff09; A&#xff1a; B&#xff1a; C&#xff1a; D&#xff1a; 第 2 题 以下程序&#xff0c;询问…

SAP 10策略测试及简介

从今天开始将把PP模块中常用的一些策略进行一个测试,编写成系统的文档,有点策略经常不用自己都忘了一些策略的特性。所以还是有必须形成文档的形式记录下来 1、首先准备好物料 成品物料为AB0,在MRP3视图中维护对应的策略组的10 同时选择消耗模式为2.消耗期间都是999 2、其他…

环境变量小结

一 常见环境变量介绍 1 PATH 到了现在&#xff0c;我们也知道我们轻轻敲下ls指令&#xff0c;其实会转为一个可执行文件在运行&#xff0c;也就变成了一个进程&#xff0c;所以ls是让文件运行&#xff0c;./test也是让文件运行&#xff0c;凭什么我们的可执行文件就要加个./(这…

IDEA调试总结

前言 由于 IDEA 每个人使用的版本不同以及快捷键的设置不同&#xff0c;所以忽略了快捷键的使用。如果不知道快捷键请在 IDEA 工具栏里面点开 Run 菜单即可知悉 图标介绍 下面咱们进入看图说话环节&#xff0c;下列图标小伙伴知道是啥功能么&#xff1f;日常开发进行 Debug 使…

Spring-Security前后端分离权限认证

前后端分离 一般来说&#xff0c;我们用SpringSecurity默认的话是前后端整在一起的&#xff0c;比如thymeleaf或者Freemarker&#xff0c;SpringSecurity还自带login登录页,还让你配置登出页,错误页。 但是现在前后端分离才是正道&#xff0c;前后端分离的话&#xff0c;那就…

React状态管理方案盘点

您好&#xff0c; 如果喜欢我的文章或者想上岸大厂&#xff0c;可以关注公众号「量子前端」&#xff0c;将不定期关注推送前端好文、分享就业资料秘籍&#xff0c;也希望有机会一对一帮助你实现梦想 前言 本文不会介绍各个状态管理工具的具体使用或者如何二次封装&#xff0c…

自动驾驶系统激光雷达传感器反射率标定板

自动驾驶技术正在全球范围内快速发展和推广。在中国&#xff0c;自动驾驶技术也得到了高度重视和大力支持。中国政府已经出台了一系列政策&#xff0c;推动自动驾驶技术的发展和应用。例如&#xff0c;上海、北京等地已经开放了自动驾驶测试道路&#xff0c;并开展了自动驾驶公…

选择CRM系统主要看哪些指标?

很多企业都想选择一款好用的CRM客户管理系统&#xff0c;但是面对众多类型、品牌的CRM却犯了难。下面我们来说说&#xff0c;企业要想选到一款适合自己的、好用的CRM系统&#xff0c;主要看哪些指标&#xff1f;这里有6个步骤&#xff0c;可以帮您做到。 第1步&#xff1a;了解…

亚马逊鲲鹏系统六大优势

亚马逊鲲鹏系统六大优势凭借其独特的能力&#xff0c;完全模拟真实的人类行为。只需几个简单的步骤 就可以自由安排任务&#xff0c;让所有账户随时发挥最大的作用。 1、全自动化操作 可以全自动批量注册买家号、AI智能养号、全自动批量测评&#xff0c;模拟人类的操作行为例…