当前位置: 首页 > news >正文

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"

确实,当您直接在终端中执行export命令设置环境变量时,这些设置只对当前的shell会话有效。当会话结束或您关闭终端时,这些设置会丢失。为了让这些设置在每次用户登录或开启新的shell会话时都生效,您需要将这些export命令添加到某些特定的shell初始化文件中。

以下是几种常见的shell以及相关的初始化文件:

  1. bash:

    • /etc/profile: 所有用户都会执行此文件。
    • ~/.bashrc~/.bash_profile: 只对特定用户生效。
  2. zsh:

    • /etc/zsh/zshenv: 所有用户都会执行此文件。
    • ~/.zshrc: 只对特定用户生效。

根据您的需要和所用的shell,您可以选择将以下内容添加到相应的文件中:

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

例如,如果您使用的是bash并希望这些设置对所有用户都生效,可以执行以下命令:

echo 'export KAFKA_HEAP_OPTS="-Xmx2G -Xms2G"' | sudo tee -a /etc/profile
echo 'export KAFKA_OPTS="-Djava.security.auth.login.config=/data1/kafka/kafka/config/kafka_server_jaas.conf"' | sudo tee -a /etc/profile

或者,如果您只希望这些设置对当前用户生效,您可以将上述export命令添加到您的~/.bashrc~/.bash_profile中。

完成上述步骤后,您可以通过执行source命令来重新加载配置文件,使设置立即生效,例如:

source /etc/profile

或者

source ~/.bashrc

这样,每次您登录或开启新的shell会话时,这些环境变量设置都会自动应用。

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.lryc.cn/news/211250.html

相关文章:

  • 最小栈(C++解法)
  • Python 算法高级篇:堆排序的优化与应用
  • 视频下载软件 Downie4 mac中文介绍
  • 计算机操作系统重点概念整理-第一章 计算机系统概述【期末复习|考研复习】
  • 树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统
  • Web项目如何做单元测试
  • MySQL主从复制(基于GTID--事务ID方式)
  • 3.72 Command Buffer及URP概述
  • 分布式理论和分布式锁知识点总结
  • IOC课程整理-17 Spring事件
  • 大数据Flink(一百零五):SQL性能调优
  • ESP8266,手机与电脑之间的TCP通讯
  • vue的数据监听是如何实现的?
  • 埋点日志解决方案——Golang+Gin+Sarama VS Java+SpringCloudGateway+ReactorKafka
  • LeetCode 541 反转字符串 II 简单
  • 从入门到精通:深入了解CSS中的Grid网格布局技巧和应用!
  • Android Studio Giraffe 添加 maven { url “https://jitpack.io“ }报错
  • Linux C/C++ 实现网络流量分析(性能工具)
  • python门牌制作,统计某个数字出现的次数
  • 轻量封装WebGPU渲染系统示例<7>-材质多pass(源码)
  • 0030Java程序设计-积分管理系统论文
  • H5游戏源码分享-考眼力游戏猜猜金币在哪
  • 2023 年值得关注的国外网络安全初创公司
  • 搞定蓝牙-第六篇(HID
  • Open3D(C++) 最小二乘拟合平面(直接求解法)
  • lua移植及使用
  • 【鸿蒙软件开发】ArkTS基础组件之Select(下拉菜单)、Slider(滑动条)
  • linux ssh 免密登录
  • 秒级启动的集成测试框架
  • Redux 数据仓库