3台Centos7快速部署Kafka集群

首先,我要说,Kafka 是强依赖于 ZooKeeper 的,所以在设置 Kafka 集群之前,我们首先需要设置一个 ZooKeeper 集群。
部署ZooKeeper需要安装jdk
yum install java-1.8.0-openjdk
安装完以后
下面是详细的步骤:

1. 安装和配置 ZooKeeper 集群

1.1 下载 ZooKeeper:

cd /data1
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zookeeper-3.8.3-bin.tar.gz

1.2 解压缩:

tar -zxvf apache-zookeeper-3.8.3-bin.tar.gz
cd /data1/
mkdir kafka
mv apache-zookeeper-3.8.3-bin /data1/kafka/zookeeper

1.3 在每台机器上创建 myid 文件,并存放在一个特定的目录,例如 /data1/zookeeper_data。文件中的内容是每台机器的唯一ID,从 1 开始增加。

mkdir /data1/zookeeper_data
echo "1" > /data1/zookeeper_data/myid # 对于第二台机器为2,第三台为3

1.4 编辑 ZooKeeper 的配置文件:

cd /data1/kafka/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

编辑 zoo.cfg:

vi zoo.cfg

添加/修改以下内容:

dataDir=/data1/zookeeper_data
clientPort=2181
initLimit=10
syncLimit=5
tickTime=2000
server.1=192.142.25.119:2888:3888
server.2=192.142.25.120:2888:3888
server.3=192.142.25.121:2888:3888

2. 安装和配置 Kafka 集群

2.1 下载 Kafka:

cd /data1
wget https://downloads.apache.org/kafka/3.6.0/kafka_2.13-3.6.0.tgz

2.2 解压缩:

tar -zxvf kafka_2.13-3.6.0.tgz
mv kafka_2.13-3.6.0 /data1/kafka/kafka

2.3 编辑 Kafka 的配置文件:

cd /data1/kafka/kafka/config
vi server.properties

添加/修改以下内容:

broker.id=1 # 对于第二台机器为2,第三台为3
zookeeper.connect=192.142.25.119:2181,192.142.25.120:2181,192.142.25.121:2181
log.dirs=/data1/kafka/kafka-logs

2.4 设置 Kafka 的堆内存:

export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"

3. 启动 ZooKeeper 和 Kafka 集群

在每台机器上:

# 启动 ZooKeeper(先把3台的zookeeper都启动,再分别启动kafka)
/data1/kafka/zookeeper/bin/zkServer.sh start# 启动 Kafka
/data1/kafka/kafka/bin/kafka-server-start.sh /data1/kafka/kafka/config/server.properties &

4. Spring Boot 连接到 Kafka 集群

添加 Maven 依赖:

<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>your_version</version>
</dependency>

配置 application.yml 或 application.properties:

spring:kafka:bootstrap-servers: 192.142.25.119:9092,192.142.25.120:9092,192.142.25.121:9092

之后,你可以使用 @KafkaListenerKafkaTemplate 来进行消息的消费和生产。

注意:以上步骤提供了基本的集群设置,可能需要根据实际环境进行适当调整。尤其在生产环境中,需要考虑安全性、高可用性和性能优化等问题。




为 Kafka 设置身份验证通常涉及使用 SASL。在这里,我将向您展示如何使用 SASL/PLAIN 为 Kafka 设置简单的用户名和密码,并为 Spring Boot 提供相应的连接方式。

1. Kafka 设置使用 SASL/PLAIN:

1.1. 编辑 Kafka 的 server.properties:

cd /data1/kafka/kafka/config
vi server.properties

在文件中添加以下内容:

listeners=SASL_PLAINTEXT://:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

1.2. 在 Kafka 配置目录下创建一个 JAAS 配置文件,例如 kafka_server_jaas.conf:

vi /data1/kafka/kafka/config/kafka_server_jaas.conf

添加以下内容:

KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="admin-secret"user_admin="admin-secret"user_otheruser="otherpassword";
};

在这里,我们创建了两个用户:adminotheruser

1.3. 在启动 Kafka 之前,设置以下环境变量:

export KAFKA_OPTS="-Djava.security.auth.login.config=/data1/kafka/kafka/config/kafka_server_jaas.conf"

1.4. 重启 Kafka 服务器以应用更改。

2. Spring Boot 连接到受密码保护的 Kafka:

2.1. 在您的 pom.xmlbuild.gradle 文件中确保已添加了以下依赖:

<dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>your_version</version>
</dependency>

2.2. 在 application.ymlapplication.properties 文件中添加以下内容:

spring:kafka:bootstrap-servers: 192.142.25.119:9092,192.142.25.120:9092,192.142.25.121:9092consumer:group-id: your-group-idkey-deserializer: org.apache.kafka.common.serialization.StringDeserializervalue-deserializer: org.apache.kafka.common.serialization.StringDeserializerproducer:key-serializer: org.apache.kafka.common.serialization.StringSerializervalue-serializer: org.apache.kafka.common.serialization.StringSerializerproperties:security.protocol: SASL_PLAINTEXTsasl.mechanism: PLAINsasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="admin-secret";

这里我们使用了 admin 用户和对应的密码来连接到 Kafka。根据您的需求调整用户名和密码。

现在,您应该能够使用 Spring Boot 连接到受密码保护的 Kafka 集群并进行消息生产和消费。

注意:SASL/PLAIN 文本身份验证不提供传输安全性。在生产环境中,您应该考虑使用 SSL/TLS 与 SASL/PLAIN 结合来确保数据的机密性和完整性。

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

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

相关文章

iOS_Crash 四:的捕获和防护

文章目录 1.Crash 捕获1.2.NSException1.2.C异常1.3.Mach异常1.4.Unix 信号 2.Crash 防护2.1.方法未实现2.2.KVC 导致 crash2.3.KVO 导致 crash2.4.集合类导致 crash2.5.其他需要注意场景&#xff1a; 1.Crash 捕获 根据 Crash 的不同来源&#xff0c;分为以下三类&#xff1a…

NReco.LambdaParser使用案例

使用案例集合&#xff1a; private async void RuleEngine_Click(object sender, EventArgs e){#region 获取变量string expression this.Rule.Text.Trim();string pattern "\$(.*?)\$";MatchCollection matches Regex.Matches(expression, pattern);foreach (Ma…

day38(VueJS)概念 开发模式 框架的特点 启动步骤 指令 以及 小案例

概念 概念&#xff1a;Vue 是一套使用 Javascript 构建用户界面的渐进式框架。 Vue 框架涉及的内容有&#xff1a;Vue.js 开发概述、环境搭建、 Vue 指令、组件化应用构建、组件通信、组件嵌套、自定义指令、 自定义过滤器、组件属性、组件的路由、路由跳转。 注意&#xff1a…

unity 基于UGUI的无限动态滚动列表

基于UGUI的动态滚动列表&#xff0c;主要支持以下功能&#xff1a; 继承自UGUI的SrollRect&#xff0c;支持ScrollRect的所有功能&#xff1b; 使用对象池来管理列表元素&#xff0c;以实现列表元素的复用&#xff1b; 支持一行多个元素或一列多个元素&#xff1b; 可使用不…

ubuntu 22.04 jammy 手动安装 python 3.6

1 准备编译器 sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \ libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \ libgdbm-dev libnss3-dev libedit-dev libc…

vue3 项目搭建教程整理

这里写目录标题 一、node二、npm三、搭建项目四、安装插件 一、node 查node版本&#xff1a;node –v 管理nodejs的版本 二、npm 查npm版本&#xff1a; npm –v1、安装指定版本&#xff08;6.14是具体的版本号&#xff09; npm install npm6.14 -g2、安装最新版本 npm ins…

【MyBatis Plus】深入探索 MyBatis Plus 的条件构造器,自定义 SQL语句,Service 接口的实现

文章目录 前言一、条件构造器1.1 什么是条件构造器1.2 QueryWrapper1.3 UpdateWrapper1.4 LambdaWrapper 二、自定义 SQL 语句2.1 自定义 SQL 的基本用法2.2 自定义 SQL 实现多表查询 三、Service 接口3.1 对 Service 接口的认识3.2 实现 Service 接口3.3 实现增删改查功能3.4 …

el-form那些事

vue3element-plus el-form那些事 输入框后拼接文字 输入框后拼接文字 <el-form-item :label"t(location.locationLength)" prop"locationLength"><el-input v-model"form.locationLength" :placeholder"t(location.inputLocation…

Windoes定时任务、设置定时重启系统

步骤一&#xff1a; 打开计算机管理 通过&#xff1a;control(控制面板&#xff09;或者compmgmt.msc(计算机管理&#xff09;打开程序 步骤二&#xff1a;打开——>系统工具 步骤三&#xff1a; 选择——>任务计划程序 步骤四&#xff1a; 可选择创建新文件命名&…

正点原子嵌入式linux驱动开发——Linux PWM驱动

PWM是很常用到功能&#xff0c;可以通过PWM来控制电机速度&#xff0c;也可以使用PWM来控制LCD的背光亮度。本章就来学习一下如何在Linux下进行PWM驱动开发。 PWM驱动解析 不在介绍PWM是什么了&#xff0c;直接进入使用。 给LCD的背光引脚输入一个PWM信号&#xff0c;这样就…

记一次企业微信的(CorpID)和密钥(Secret)泄漏的利用案例

文章目录 一、介绍二、利用过程1、获取AccessToken2、获取企业微信接口IP段3、获取企业微信回调IP段4、通过部门ID,查看返回的ID5、通过部门ID,查看用户列表6、通过便利ID,发现用户信息泄露,可以进行提交报告7、通过添加接口,添加企业账号8、登陆企业账号进行测试三、参考…

【随机过程】布朗运动

这里写目录标题 Brownian motion Brownian motion The brownian motion 1D and brownian motion 2D functions, written with the cumsum command and without for loops, are used to generate a one-dimensional and two-dimensional Brownian motion, respectively. 使用cu…

主动调度是如何发生的

计算机主要处理计算、网络、存储三个方面。计算主要是 CPU 和内存的合作&#xff1b;网络和存储则多是和外部设备的合作&#xff1b;在操作外部设备的时候&#xff0c;往往需要让出 CPU&#xff0c;就像上面两段代码一样&#xff0c;选择调用 schedule() 函数。 上下文切换主要…

【杂记】java 大集合进行拆分

日常中需要对一个大的集合进行拆分成多个小集合&#xff0c;其主要思路为&#xff1a; 设置需要拆分多少个小集合 A大集合里面有多少条数据 B计算出每个集合里面有多个条数据 CB/A计算出看是否存在余数 DB%A采用集合(List.subList())的方法对大集合进行拆分,循环A变进行集合拆…

Kafka - 3.x 图解Broker总体工作流程

文章目录 Zk中存储的kafka的信息Kafka Broker总体工作流程1. broker启动后向zk中注册2. Controller谁先启动注册&#xff0c;谁说了算3. 由选举出来的Controller监听brokers节点的变化4. Controller决定leader选举5. Controller将节点信息上传到Zk中6. 其他Controller从zk中同步…

Fourier分析导论——第1章——Fourier分析的起源(E.M. Stein R. Shakarchi)

第 1 章 Fourier分析的起源 (The Genesis of Fourier Analysis) Regarding the researches of dAlembert and Euler could one not add that if they knew this expansion, they made but a very imperfect use of it. They were both persuaded that an arbitrary and d…

jenkins配置gitlab凭据

下载Credentials Binding插件&#xff08;默认是已经安装了&#xff09; 在凭据配置里添加凭据类型 点击保存 Username with password&#xff1a; 用户名和密码 SSH Username with private 在凭据管理里面添加gitlab账号和密码 点击全局 点击添加凭据&#xff08;版本不同…

Go RESTful API 接口开发

文章目录 什么是 RESTful APIGo 流行 Web 框架-GinGo HelloWorldGin 路由和控制器Gin 处理请求参数生成 HTTP 请求响应Gin 的学习内容实战用 Gin 框架开发 RESTful APIOAuth 2.0接口了解用 Go 开发 OAuth2.0 接口示例 编程有一个准则——Don‘t Repeat Yourself&#xff08;不要…

如何在Windows和Linux系统上监听文件夹的变动?

文章目录 如何在Windows和Linux系统上监听文件夹的变动&#xff1f;读写文件文件系统的操作缓冲和流文件改变事件 如何在Windows和Linux系统上监听文件夹的变动&#xff1f; libuv库实现了监听整个文件夹的修改。本文详细介绍libuv库文件读写和监听的的实现方法。libuv库开发了…

Unity的碰撞检测(六)

温馨提示&#xff1a;本文基于前一篇“Unity的碰撞检测(五)”继续探讨两个游戏对象具备刚体的BodyType均为Dynamic&#xff0c;但是Collision Detection属性不同的碰撞检测&#xff0c;阅读本文则默认已阅读前文。 &#xff08;一&#xff09;测试说明 在基于两个游戏对象都具…