Skip to content

Kafka

相关链接

Apache Kafka

UI for Apache Kafka

RHEL - 安装部署

安装目录示例

bash
|---data                                    --     
|---|---app                                 --    
|---|---|---data                            --
|---|---|---|---kafka                       -- Kafka数据目录
|---|---|---|---|---node-1                  -- Kafka节点一日志目录 
|---|---|---|---|---node-2                  -- Kafka节点二日志目录 
|---|---|---tools                           -- 
|---|---|---|---kafka                       -- Kafka安装目录

解压缩到安装目录下

bash
# 创建安装目录和日志目录
sudo mkdir -p /data/app/tools/kafka
sudo mkdir -p /data/app/data/kafka/node-1
sudo mkdir -p /data/app/data/kafka/node-2
# 解压缩后复制到安装目录
tar zxvf kafka_2.13-3.7.0.tgz
mv ./kafka_2.13-3.7.0/** /data/app/tools/kafka

设置环境变量

shell
# 创建一个环境变量
sudo vi /etc/profile.d/kafka.sh
# 添加以下环境变量
export KAFKA_HOME=/data/app/tools/kafka
export PATH=$PATH:$KAFKA_HOME/bin
# 加载环境变量
source /etc/profile.d/kafka.sh

修改配置文件,配置集群节点信息

bash
# 复制配置文件
sudo cp /data/app/tools/kafka/config/kraft/server.properties /data/app/tools/kafka/config/kraft/server-1.properties
sudo cp /data/app/tools/kafka/config/kraft/server.properties /data/app/tools/kafka/config/kraft/server-2.properties
# 编辑节点一配置文件
sudo vi /data/app/tools/kafka/config/kraft/server-1.properties
# 编辑节点二配置文件
sudo vi /data/app/tools/kafka/config/kraft/server-2.properties

节点一主要修改配置项如下

bash
node.id=1
log.dirs=/data/app/data/kafka/node-1
num.partitions=2

节点二主要修改配置项如下

bash
node.id=2
log.dirs=/data/app/data/kafka/node-2

完成集群初始化

bash
# 进入安装目录
cd /data/app/tools/kafka/bin
# 生成集群标识
sh kafka-storage.sh random-uuid
# 格式化节点一目录
sh kafka-storage.sh format -t YKCQgip5SaiwBWXY04sKXw -c /data/app/tools/kafka/config/kraft/server-1.properties --ignore-formatted
# 格式化节点二目录
sh kafka-storage.sh format -t YKCQgip5SaiwBWXY04sKXw -c /data/app/tools/kafka/config/kraft/server-2.properties --ignore-formatted
# 启动节点一
sh kafka-server-start.sh -daemon /data/app/tools/kafka/config/kraft/server-1.properties
# 启动节点二
sh kafka-server-start.sh -daemon /data/app/tools/kafka/config/kraft/server-2.properties
# 查看是否启动成功
jps
# 停止服务
sh kafka-server-stop.sh

创建启动脚本

bash
# 创建启动脚本
sudo vi /data/app/tools/start-kafka.sh

内容如下

bash
#!/bin/sh
export KAFKA_HOME=/data/app/tools/kafka
export PATH="$KAFKA_HOME/bin:$PATH"
# Start Kafka 1
echo Starting Kafka 1......
$KAFKA_HOME/bin/kafka-server-start.sh -daemon "$KAFKA_HOME/config/kraft/server-1.properties"
# Start Kafka 2
echo Starting Kafka 2......
$KAFKA_HOME/bin/kafka-server-start.sh -daemon "$KAFKA_HOME/config/kraft/server-2.properties"

创建停止脚本

bash
# 创建启动脚本
sudo vi /data/app/tools/stop-kafka.sh

内容如下

bash
#!/bin/sh
export KAFKA_HOME=/data/app/tools/kafka
export PATH="$KAFKA_HOME/bin:$PATH"
# Stop Kafka
echo Stop Kafka......
$KAFKA_HOME/bin/kafka-server-stop.sh

创建系统服务

shell
sudo rm -rf /lib/systemd/system/kafka.service
sudo vi /lib/systemd/system/kafka.service
shell
[Unit]    
Description=Kafka Server
After=network.target
[Service]  
Type=simple
ExecStart=/data/app/tools/start-kafka.sh
ExecStop=/data/app/tools/stop-kafka.sh
Restart=on-abnormal
[Install]  
WantedBy=multi-user.target
bash
# 开机启动    
sudo systemctl enable kafka.service
# 查看状态  
sudo systemctl status kafka.service    
# 启动服务  
sudo systemctl start kafka.service    
# 关闭服务    
sudo systemctl stop kafka.service    
# 禁用开机启动服务
sudo systemctl disable kafka.service
# 修改配置文件后重启启动服务
sudo systemctl daemon-reload
sudo systemctl restart kafka.service
# 检查端口确认是否已启动
sudo netstat -lanp | grep 9092
sudo netstat -lanp | grep 9093
# 查看进程
sudo ps -ef | grep kafka

MacOS - 安装部署

安装目录

bash
|---~                                       
|---|---Tools                               -- 
|---|---|---Kafka                           -- 
|---|---|---|---logs                        -- Kafka日志目录
|---|---|---|---server                      -- Kafka安装目录

修改配置文件

bash
log.dirs=/Users/elvea/Tools/kafka/logs

解压缩到安装目录下

bash
# 创建安装目录和日志目录
mkdir -p /Users/elvea/Tools/kafka/server
mkdir -p /Users/elvea/Tools/kafka/data/node-1
mkdir -p /Users/elvea/Tools/kafka/data/node-2
# 解压缩后复制到安装目录
tar zxvf kafka_2.13-3.7.0.tgz
mv ./kafka_2.13-3.7.0/** /Users/elvea/Tools/kafka/server
#
cp /Users/elvea/Tools/kafka/server/config/kraft/server.properties /Users/elvea/Tools/kafka/server/config/kraft/server-1.properties
cp /Users/elvea/Tools/kafka/server/config/kraft/server.properties /Users/elvea/Tools/kafka/server/config/kraft/server-2.properties

修改节点一配置文件

bash
log.dirs=/Users/elvea/Tools/kafka/data/node-1

修改节点二配置文件

bash
log.dirs=/Users/elvea/Tools/kafka/data/node-2

手工启动

bash
# 进入安装目录
cd /Users/elvea/Tools/kafka/server/bin
# 生成集群标识
sh kafka-storage.sh random-uuid
# 格式化
sh kafka-storage.sh format -t GvF4_OPpQpmtH9pFPjraag -c /Users/elvea/Tools/kafka/server/config/kraft/server.properties --ignore-formatted
# 启动集群
sh kafka-server-start.sh -daemon /Users/elvea/Tools/kafka/server/config/kraft/server.properties
sh kafka-server-start.sh /Users/elvea/Tools/kafka/server/config/kraft/server.properties
# 停止服务
sh kafka-server-stop.sh
#
kafka-topics.sh --bootstrap-server localhost:9092 --list

创建启动脚本,并加入环境变量

bash
#!/bin/sh
########################################################################################################################
# Kafka
########################################################################################################################
export KAFKA_HOME=~/Tools/kafka/server
export PATH="$KAFKA_HOME/bin:$PATH"
#
echo "Current Kafka Home - $KAFKA_HOME"
# Generate Cluster ID
KAFKA_CLUSTER_ID="$($KAFKA_HOME/bin/kafka-storage.sh random-uuid)"
echo "UUID - $KAFKA_CLUSTER_ID"
# Stop Kafka
echo Stop Kafka......
$KAFKA_HOME/bin/kafka-server-stop.sh
# Format Log
echo Format Log Directories......
$KAFKA_HOME/bin/kafka-storage.sh format -t "$KAFKA_CLUSTER_ID" -c "$KAFKA_HOME/config/kraft/server.properties" --ignore-formatted
# Start Kafka
echo Starting Kafka......
$KAFKA_HOME/bin/kafka-server-start.sh "$KAFKA_HOME/config/kraft/server.properties"

测试

bash
#
kafka-topics.sh --create --topic kraft-test --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
#
kafka-topics.sh --bootstrap-server localhost:9092 --list

Windows - 安装部署

理论上可以,实际上有很多问题,建议在WSL中安装

安装目录

bash
|---D                                       
|---|---Tools 
|---|---|---Kafka 
|---|---|---|---Logs      -- Kafka数据目录
|---|---|---|---Server    -- Kafka安装目录
|---|---|---|---UI        -- Kafka工具目录

修改配置文件

bash
log.dirs=D:\\Tools\\Kafka\\Logs

手工设置

shell
# 进入安装目录
cd D:\Tools\Kafka\Server\bin\windows
# 生成集群表示
kafka-storage.bat random-uuid
# 格式化
kafka-storage.bat format -t 9-Ct0IOaR76FqjZzbg-8Iw -c ..\..\config\kraft\server.properties --ignore-formatted
# 启动
kafka-server-start.bat ..\..\config\kraft\server.properties

手工启动

bash
#
kafka-storage.sh format -t "$KAFKA_CLUSTER_ID" -c "$KAFKA_HOME/config/kraft/server.properties" --ignore-formatted
#
kafka-topics.sh --bootstrap-server localhost:9092 --list

创建启动脚本,并加入环境变量

shell
@echo off
rem ##############################################################################
rem Kafka
rem ##############################################################################
setLocal
set KAFKA_HOME=D:\Tools\Kafka
rem Generate Cluster ID
echo Generate Cluster ID......
call %KAFKA_HOME%\bin\windows\kafka-storage.bat random-uuid > uuid.txt
set /p KAFKA_CLUSTER_ID= < uuid.txt
echo UUID - %KAFKA_CLUSTER_ID%
rem Stop Kafka
echo Stop Kafka......
call %KAFKA_HOME%\bin\windows\kafka-server-stop.bat
rem Start Kraft
echo Starting Kraft......
call %KAFKA_HOME%\bin\windows\kafka-storage.bat format -t %KAFKA_CLUSTER_ID% -c "%KAFKA_HOME%\config\kraft\server.properties" --ignore-formatted
rem Start Kafka
echo Starting Kafka......
call %KAFKA_HOME%\bin\windows\kafka-server-start.bat "%KAFKA_HOME%\config\kraft\server.properties"
rem Clean
del uuid.txt
endLocal

测试

bash
#
kafka-topics.sh --create --topic kraft-test --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
#
kafka-topics.sh --bootstrap-server localhost:9092 --list