搭建分布式Kafka集群

yaml 复制代码
title: 搭建分布式Kafka集群
date: 2024-12-1 14:00:00
categories: 
- 服务器
tags:
- Kafka
- 大数据

搭建分布式Kafka集群

在主节点上安装Kafka

Kafka使用Zookeeper服务器来存储元数据信息

  • 本次实验环境:Centos 7-2009、Hadoop-3.1.4、JDK 8、Zookeeper-3.6.3、Kafka(2.11-2.3.1)

前提

  • Kafka-2.8.0版本以前,运行Kafka需要预先安装Zookeeper

  • Kafka 2.8.0版本以后,引入了Kraft (Kafka Raft)模式,可以使Kafka在不依赖外部Zookeeper的前提下运行

  • 除此之外KafkaScala语言编写,而Scala语言是由JAVA语言发展而来,所以需要JVM的运行环境

功能规划

Master Slave1 Slave2
主节点 代理服务器 代理服务器
192.168.66.6 192.168.66.7 192.168.66.21

开始安装

1. 上传Kafka服务器

  • 首先上传/下载Kafka的文件到服务器上
bash 复制代码
# 解压文件到指定目录
tar -zxvf kafka_2.11-2.3.1.tgz -C /opt/module/

#  重命名文件夹
mv /opt/module/kafka_2.11-2.3.1/ /opt/module/kafka

2. 配置用户环境变量

bash 复制代码
cat >>  ~/.bashrc << "EOF"

# ------------------- Kafka 配置--------------------
# 设置Kafka环境变量,指向Kafka安装目录
export KAFKA_HOME=/opt/module/kafka

# 将Kafka的bin目录添加到PATH环境变量
export PATH=$PATH:$KAFKA_HOME/bin
# -------------------------------------------------
EOF
bash 复制代码
-----------------------------------------------------------
                          说明

举例   export PATH=$Kafka_HOME/bin:$PATH

英文冒号代表分隔

这段代码表示
1. 当你输入一个命令时,shell会首先在"KAFKA_HOME"这个变量的"bin"子目录中查找,
2. 最后,若找不到,则在"PATH"的指定目录中查找

-------------------------------------------------------------

3. 修改配置文件

bash 复制代码
# 创建Kafka日志目录
mkdir /opt/module/kafka/logs

# 备份kafka配置文件
cp /opt/module/kafka/config/server.properties /opt/module/kafka/config/server.properties.bak

# 修改Kafka的日志存储目录
sed -i 's|log.dirs=/tmp/kafka-logs|log.dirs=/opt/module/kafka/logs|' /opt/module/kafka/config/server.properties

# 配置Kafka依靠指定ZooKeeper服务器进行集群管理和元数据存储
sed -i 's|zookeeper.connect=localhost:2181|zookeeper.connect=master:2181,slave1:2181,slave2:2181|' /opt/module/kafka/config/server.properties

----------------------------------------------
       说明

1. 可以使用IP地址或使用主机名,前提是配置好hosts/DNS解析
2. 根据自己的配置,修改连接的主机的信息
-----------------------------------------------

4. 同步文件

bash 复制代码
# 同步到slave1机器
scp -r /opt/module/kafka/ slave1:/opt/module/
scp  ~/.bashrc root@slave1:/root

# 同步到slave2机器
scp -r /opt/module/kafka/ slave2:/opt/module/
scp  ~/.bashrc root@slave2:/root

5. 修改从节点配置

bash 复制代码
# 修改Slave1的broker-ID值
ssh slave1 "sed -i 's|broker.id=0|broker.id=1|' /opt/module/kafka/config/server.properties"

# 修改Slave2的broker-ID值
ssh slave2 "sed -i 's|broker.id=0|broker.id=2|' /opt/module/kafka/config/server.properties"

6. 环境变量生效

bash 复制代码
# master节点环境变量生效
source  ~/.bashrc

# slave1节点环境变量生效
ssh slave1 'source  ~/.bashrc'

# slave2节点环境变量生效
ssh slave2 'source  ~/.bashrc'

安装结束

7. 前台启动一台Kafka服务器

在当前控制台前台启动Kafka,使用Ctrl``C停止kafka

bash 复制代码
# 在master节点上执行
kafka-server-start.sh $KAFKA_HOME/config/server.properties 

8. 后台启动Kafka服务器集群

bash 复制代码
# 在master节点上执行
nohup $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties > $KAFKA_HOME/logs/nohup.out 2>&1 &

# 在slave1节点上执行
ssh slave1
nohup $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties > $KAFKA_HOME/logs/nohup.out 2>&1 & 
exit

# 在slave2节点上执行
ssh slave2 
nohup $KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties > $KAFKA_HOME/logs/nohup.out 2>&1 & 
exit

9.查看kafka进程

  • master会有Kafka的进程

  • slave1会有Kafka的进程

  • slave2会有Kafka的进程

bash 复制代码
# 命令
jps

10. 停止Kafka

bash 复制代码
# 停止master节点的Kafka服务
kafka-server-stop.sh

# 停止slave1节点的Kafka服务
ssh slave1 kafka-server-stop.sh

# 停止slave2节点的Kafka服务
ssh slave2 kafka-server-stop.sh

参考文档

  1. Linux 搭建 Kafka 环境 - 详细教程_linux安装kafka-CSDN博客

  2. kafka-2.3.1版本的安装_kafka2.3.1下载-CSDN博客

  3. JVM-合理配置堆内存_xms和xmx设置多少合适-CSDN博客

  4. Kafka的分布式安装及基本操作-刘宇_头歌kafka安装-CSDN博客

相关推荐
zyxzyx66629 分钟前
Redisson实现分布式锁
java·笔记·分布式·后端·spring cloud
<e^πi+1=0>1 小时前
Docker搭建kafka环境
docker·kafka
爱吃香蕉的猴哥1 小时前
消息系统之 Kafka
分布式·kafka
Hanson Huang1 小时前
【MySQL】优雅的使用MySQL实现分布式锁
数据库·分布式·mysql
IT培训中心-竺老师2 小时前
OceanBase 数据库分布式与集中式 能力
数据库·分布式·oceanbase
叫我DPT3 小时前
ZooKeeper分布式协调工具
分布式·zookeeper·云原生
许墨の小蝴蝶3 小时前
Python发送带key的kafka消息
python·kafka
<e^πi+1=0>3 小时前
使用k6进行kafka负载测试
kafka·k6
编程、小哥哥3 小时前
在 DDD 中优雅的发送 Kafka 消息
分布式·kafka