openEuler2403安装部署Kafka

openEuler2403安装部署Kafka with KRaft

一、前言

1.简介

Apache Kafka 是一个开源分布式事件流平台,已被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。

KRaft(Kafka Raft)模式是从 Apache Kafka 2.8.0 版本开始引入,KRaft 旨在摒弃对 ZooKeeper 的依赖。在以前的版本中,Apache Kafka 依赖于 ZooKeeper 来管理集群元数据和协调集群,但这增加了系统的复杂性和运维负担。KRaft 模式通过引入 Raft 协议直接在 Kafka 内部处理这些功能,从而简化了 Kafka 的架构和部署过程。

2.架构

ARCHITECTURE - Apache Kafka

在这里插入图片描述

3.环境

  • Linux 发行版: openEuler-24.03-LTS-SP2-x86_64-dvd.iso
  • JDK 版本:Alibaba Dragonwell Extended Edition-11.0.27.24+6-GA
  • Kafka 版本:3.9.1

Kafka 官网:https://kafka.apache.org/

intro - Apache Kafka:https://kafka.apache.org/intro

Kafka QuickStart:https://kafka.apache.org/documentation/#quickstart

Kafbat UI 用户手册:https://ui.docs.kafbat.io/

openEuler2403安装部署Kafbat:https://blog.csdn.net/u011424614/article/details/151195306

openEuler常用操作指令:https://blog.csdn.net/u011424614/article/details/150942929

openEuler中LVM调整实现home与root分区空间平衡:https://blog.csdn.net/u011424614/article/details/150961763

openEuler安装部署JDK11:https://blog.csdn.net/u011424614/article/details/150961633

openEuler2403安装部署MySQL8:https://blog.csdn.net/u011424614/article/details/150966094

VirtualBox安装openEuler24.03:https://blog.csdn.net/u011424614/article/details/150725588

VMware安装openEuler24.03:https://blog.csdn.net/u011424614/article/details/150723134

二、正文

1.部署服务器

  • Kafka 默认端口
端口描述
9092Kafka Clients
9093Kafka Control Plane
8083Kafka Connect
8081Schema Registry
8082REST Proxy
8088ksqlDB
  • 服务器
  • 单机部署使用:192.168.249.121
  • 集群部署使用:192.168.249.121、192.168.249.122、192.168.249.123
IP节点部署
192.168.249.121Kafka 节点
192.168.249.122Kafka 节点
192.168.249.123Kafka 节点
192.168.249.124Know Streaming 管控平台 【CentOS7】

2.基础环境

1)JDK 安装部署

集群部署:需要在 3 台 Kafka 服务器上安装JDK

  • 安装参考:《openEuler安装部署JDK11
  • JDK 版本:Alibaba Dragonwell Extended Edition-11.0.27.24+6-GA
  • 安装目录:/opt/java/dragonwell-11.0.27.24+6-GA

2)关闭防火墙

集群部署:在 4 台服务器上执行

  • 可禁用防火墙,或配置开放的端口,后者比较安全
# 关闭防火墙
systemctl stop firewalld.service
# 开机禁用防火墙
systemctl disable firewalld.service
# 防火墙状态
systemctl status firewalld.service

3.单机部署

在 121 服务器上执行

1)下载软件包

  • 创建安装目录,并下载
mkdir /opt/kafka && cd /opt/kafka

# 下载软件包,如果 wget 无法下载,可使用浏览器或迅雷下载
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz --no-check-certificate
# 解压
tar -xzf kafka_2.13-3.9.1.tgz

# 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1

2)修改配置文件

  • 编辑 server.properties 配置文件
vim config/kraft/server.properties

内容(修改以下配置,其它不变)

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.121:9092,CONTROLLER://192.168.249.121:9093

# Kafka存储日志数据的目录路径
log.dirs=/data/kraft-combined-logs

3)格式化存储目录

  • 生成UUID
# 生成 UUID
bin/kafka-storage.sh random-uuid
# 输出内容:
FHWoeUzDRWymafTzEl0rEw
  • 格式化存储目录
  • 注意:1.替换生成的 UUID;2.文件路径:config/kraft/server.properties
bin/kafka-storage.sh format -t FHWoeUzDRWymafTzEl0rEw -c config/kraft/server.properties

4)单机启动

  • 启动
cd /opt/kafka/kafka_2.13-3.9.1
# 启动
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
  • 查看运行情况
jps

5)测试

  • 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1
  • 创建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.249.121:9092
  • 写入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.249.121:9092

# 写入内容
first event
second event
  • 读取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.249.121:9092

6)systemd服务管理

  • 创建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target

[Service]
Environment="JAVA_HOME=/opt/java/dragonwell-11.0.27.24+6-GA"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.9.1/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
  • 启动服务,并设置开机自启动
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
  • 查询进程状态
systemctl status kafka-server.service

4.集群部署

1)下载软件包

在 121 服务器上执行

  • 创建安装目录,并下载
mkdir /opt/kafka && cd /opt/kafka

# 下载软件包,如果 wget 无法下载,可使用浏览器或迅雷下载
wget https://downloads.apache.org/kafka/3.9.1/kafka_2.13-3.9.1.tgz --no-check-certificate
# 解压
tar -xzf kafka_2.13-3.9.1.tgz

# 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1

2)修改配置文件

在 121 服务器上执行

  • 编辑 server.properties 配置文件
vim config/kraft/server.properties
  • 内容(修改以下配置,其它不变)
# 节点ID,集群节点唯一
node.id=1

# 标识哪些节点是Quorum的投票者节点
controller.quorum.voters=1@192.168.249.121:9093,2@192.168.249.122:9093,3@192.168.249.123:9093

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.121:9092,CONTROLLER://192.168.249.121:9093

# Kafka存储日志数据的目录路径
log.dirs=/data/kraft-combined-logs

3)拷贝Kafka

在 122、123 服务器上执行

  • 122 和 123 服务器创建目录
mkdir /opt/kafka

在 121 服务器上执行

  • 拷贝 Kafka 到其它服务器
scp -r /opt/kafka/kafka_2.13-3.9.1 root@192.168.249.122:/opt/kafka
scp -r /opt/kafka/kafka_2.13-3.9.1 root@192.168.249.123:/opt/kafka

4)修改配置文件

在 122 服务器上执行

  • 编辑 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.9.1

vim config/kraft/server.properties
  • 内容(修改以下配置,其它不变;注意这里是 121 服务器拷贝,所以省了2个参数)
# 节点ID,集群节点唯一
node.id=2

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.122:9092,CONTROLLER://192.168.249.122:9093

在 123 服务器上执行

  • 编辑 server.properties 配置文件
cd /opt/kafka/kafka_2.13-3.9.1

vim config/kraft/server.properties
  • 内容(修改以下配置,其它不变;注意这里是 121 服务器拷贝,所以省了2个参数)
# 节点ID,集群节点唯一
node.id=3

# Kafka broker对外公布的监听地址和端口
advertised.listeners=PLAINTEXT://192.168.249.123:9092,CONTROLLER://192.168.249.123:9093

5)格式化存储目录

在 121 服务器上执行

  • 生成UUID
cd /opt/kafka/kafka_2.13-3.9.1

# 生成 UUID
bin/kafka-storage.sh random-uuid
# 输出内容:
OukPqtmXSAO2aYUs9kFFbg

在 121、122、123 服务器上执行

  • 格式化存储目录,使用生成的 UUID
bin/kafka-storage.sh format -t OukPqtmXSAO2aYUs9kFFbg -c config/kraft/server.properties

6)集群启动

在 121、122、123 服务器上执行

  • 启动
cd /opt/kafka/kafka_2.13-3.9.1
# 启动
bin/kafka-server-start.sh -daemon config/kraft/server.properties
# 停止
bin/kafka-server-stop.sh
  • 查看运行情况
jps

7)测试

在 121 服务器上执行

  • 进入安装目录
cd /opt/kafka/kafka_2.13-3.9.1
  • 创建 Topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server 192.168.249.121:9092
  • 写入 event
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server 192.168.249.121:9092

# 写入内容
first event
second event
  • 读取 event
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server 192.168.249.121:9092

8)systemd服务管理

在 121、122、123 服务器上执行

  • 创建 kafka-server.service
cat > /etc/systemd/system/kafka-server.service <<EOF
[Unit]
Description=Kafka Service
After=network.target

[Service]
Environment="JAVA_HOME=/opt/java/dragonwell-11.0.27.24+6-GA"
Type=simple
User=root
Group=root
ExecStart=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-start.sh /opt/kafka/kafka_2.13-3.9.1/config/kraft/server.properties
ExecStop=/opt/kafka/kafka_2.13-3.9.1/bin/kafka-server-stop.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
  • 启动服务,并设置开机自启动
systemctl daemon-reload
systemctl start kafka-server.service
systemctl enable kafka-server.service
  • 查询进程状态
systemctl status kafka-server.service

5.Kafka监控管理

在 124 服务器上执行

1)Kafka启动JMX

在 121、122、123 服务器上执行

  • 编辑 kafka-server-start.sh 启动脚本
cd /opt/kafka/kafka_2.13-3.9.1/

vim bin/kafka-server-start.sh

编辑内容:除注释外第一行,加入 JMX 端口指定服务器 IP

注意:替换不同服务器的 IP

export JMX_PORT=9999

KAFKA_OPTS="-Dcom.sun.management.jmxremote \
            -Dcom.sun.management.jmxremote.authenticate=false \
            -Dcom.sun.management.jmxremote.ssl=false \
            -Djava.rmi.server.hostname=192.168.249.121"
export KAFKA_OPTS
  • 重启 Kafka(选择其中一种重启方式)
# systemctl 重启
systemctl stop kafka-server.service
systemctl start kafka-server.service
systemctl status kafka-server.service

# 备用,非必要执行,脚本重启
cd /opt/kafka/kafka_2.13-3.9.1/
bin/kafka-server-stop.sh
bin/kafka-server-start.sh -daemon config/kraft/server.properties
  • 检测 JMX 端口
netstat -tunlp |grep 9999

2)安装Kafbat UI

Kafbat UI 是一款多功能、高效、轻量级且灵活的 Web 界面工具,专为监控和管理 Apache Kafka® 集群而设计。它由开发者打造、为开发者服务,提供直观的操作体验,帮助用户:实时洞察数据流、快速定位并解决问题、保障集群持续高性能运行。

三、其它

1.常用命令

命令说明
systemctl daemon-reload重新加载服务配置
systemctl start kafka-server.service启动服务
systemctl enable kafka-server.service开机自启动服务
systemctl status kafka-server.service查询服务状态
systemctl stop kafka-server.service停止服务
systemctl restart kafka-server.service重启服务
systemctl disable kafka-server.service禁用开机自启动服务
<think>嗯,用户需要一个在openEuler部署ELK+Kafka+Filebeat的完整教程。这个问题涉及多个组件的协同部署,技术细节相当复杂。用户提供的站内引用很有价值,特别是引用[3]提到了系统优化和目录配置,引用[4]则提供了详细的组件下载链接和用户权限设置。需要特别注意的是,这些引用都是基于CentOS环境的配置,而openEuler作为新兴系统,可能需要调整部分设置。从问题描述看,用户应该是个运维工程师或DevOps人员,正在搭建日志分析系统。用户特别强调"详细教程",说明ta需要可落地的操作指导,且对权限控制(如root和app用户切换)、目录结构等细节要求明确。在技术层面,这个部署需要重点考虑:第一是版本兼容性。ELK组件需版本严格匹配,选择6.7.2版本族较稳妥,用户引用的[4]也采用了这个版本组合。第二是系统差异。openEuler的SELinux策略、firewalld配置与CentOS存在差异,比如默认可能没开放5601端口。第三是内存管理。Elasticsearch的堆内存设置要遵循不超过物理内存50%的原则(引用[3]提到过)。第四是用户权限。必须像引用[4]那样创建专用用户,避免用root运行组件。安装步骤上可以分解为七个主要阶段:准备工作→JDK→ZooKeeper→Kafka→Elasticsearch→Logstash→Kibana→Filebeat。其中ES的配置最复杂,要处理jvm.options、elasticsearch.yml等多个文件,还需安装ik/pinyin分词插件。安全方面需要额外提醒:用户引用中都没提及SSL/TLS配置,但生产环境必须考虑加密通信,特别是Kafka的SASL认证和ES的xpack安全模块。最后生成的注意事项特别重要,比如内核参数调整和filebeat多行日志处理,这些都是实际部署中容易踩坑的点。考虑到用户环境,补充了openEuler特有的firewall-cmd用法。</think> 以下是在 openEuler 系统上部署 Elastic Stack(Elasticsearch/Logstash/Kibana) + Kafka + Filebeat 的详细步骤,结合系统特性和最佳实践: --- ### **一、环境准备** 1. **系统要求** - OpenEuler 20.03 LTS+(已验证版本) - 至少 8GB RAM(生产环境建议 16GB+) - 磁盘空间:50GB+(依据日志量调整) 2. **创建专用用户** ```bash sudo useradd elk -m -s /bin/bash # 创建elk用户 echo "elk:your_password" | sudo chpasswd # 设置密码 sudo chown elk:elk /opt -R # 授权/opt目录 ``` 3. **安装依赖** ```bash sudo dnf install java-11-openjdk-devel wget tar unzip firewalld -y sudo systemctl start firewalld ``` --- ### **二、组件安装与配置** #### **1. ZooKeeper 3.4.10** ```bash wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz tar -xzf zookeeper-3.4.10.tar.gz -C /opt cd /opt/zookeeper-3.4.10/conf cp zoo_sample.cfg zoo.cfg sed -i 's|dataDir=/tmp/zookeeper|dataDir=/opt/zookeeper/data|' zoo.cfg ``` **启动**: ```bash bin/zkServer.sh start ``` #### **2. Kafka 2.3.0** ```bash wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz tar -xzf kafka_2.12-2.3.0.tgz -C /opt cd /opt/kafka_2.12-2.3.0/config echo -e "listeners=PLAINTEXT://:9092\nlog.dirs=/opt/kafka/logs" >> server.properties ``` **启动**: ```bash bin/kafka-server-start.sh -daemon config/server.properties ``` #### **3. Elasticsearch 7.17.5**(推荐兼容版本) ```bash wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.5-linux-x86_64.tar.gz tar -xzf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /opt cd /opt/elasticsearch-7.17.5 ``` **配置修改** (`config/elasticsearch.yml`): ```yaml cluster.name: elk-openEuler node.name: node-1 path.data: /data/elasticsearch/data path.logs: /data/elasticsearch/logs network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node # 单节点模式 ``` **系统优化**: ```bash sudo sysctl -w vm.max_map_count=262144 # 解决内存映射错误 mkdir -p /data/elasticsearch/{data,logs} chown elk:elk /data/elasticsearch -R ``` **启动**: ```bash su elk -c "/opt/elasticsearch-7.17.5/bin/elasticsearch -d" ``` #### **4. Kibana 7.17.5** ```bash wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.5-linux-x86_64.tar.gz tar -xzf kibana-7.17.5-linux-x86_64.tar.gz -C /opt cd /opt/kibana-7.17.5 ``` **配置修改** (`config/kibana.yml`): ```yaml server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://localhost:9200"] ``` **开放防火墙端口**: ```bash sudo firewall-cmd --add-port=5601/tcp --permanent sudo firewall-cmd --reload ``` **启动**: ```bash su elk -c "nohup /opt/kibana-7.17.5/bin/kibana > /dev/null &" ``` #### **5. Logstash 7.17.5** ```bash wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.5.tar.gz tar -xzf logstash-7.17.5.tar.gz -C /opt ``` **创建配置文件** (`/opt/logstash-7.17.5/config/kafka_to_es.conf`): ```ruby input { kafka { bootstrap_servers => "localhost:9092" topics => ["logs"] } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "logs-%{+YYYY.MM.dd}" } } ``` **启动**: ```bash su elk -c "/opt/logstash-7.17.5/bin/logstash -f config/kafka_to_es.conf" ``` #### **6. Filebeat 7.17.5** ```bash wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.5-linux-x86_64.tar.gz tar -xzf filebeat-7.17.5-linux-x86_64.tar.gz -C /opt cd /opt/filebeat-7.17.5 ``` **配置修改** (`filebeat.yml`): ```yaml filebeat.inputs: - type: log enabled: true paths: - /var/log/*.log output.kafka: hosts: ["localhost:9092"] topic: logs ``` **启动**: ```bash sudo ./filebeat -e -c filebeat.yml ``` --- ### **三、验证部署** 1. **发送测试数据** ```bash echo "Test log from openEuler" >> /var/test.log ``` 2. **检查Kafka队列** ```bash /opt/kafka_2.12-2.3.0/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic logs ``` 3. **在Kibana查看日志** 访问 `http://<服务器IP>:5601` → Management → Index Patterns → 创建 `logs-*` 索引模式 --- ### **注意事项** 1. **权限问题** - 所有组件需以 `elk` 用户运行 - 数据目录权限:`chown elk:elk /data -R` 2. **内存限制** Elasticsearch 堆内存配置 (`config/jvm.options`): ``` -Xms4g -Xmx4g # 不超过物理内存50% ``` 3. **分词插件安装**(如需要) ```bash /opt/elasticsearch-7.17.5/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.5/elasticsearch-analysis-ik-7.17.5.zip ``` 4. **多行日志处理** 在 Filebeat 中添加多行合并配置: ```yaml multiline.pattern: '^\[' multiline.negate: true multiline.match: after ``` --- ### **故障排查关键点** 1. Elasticsearch 启动失败 - 检查 `/data/elasticsearch/logs/*.log` - 确认 `vm.max_map_count` 设置 2. Kafka 连接问题 - 验证 ZooKeeper 状态:`echo stat | nc localhost 2181` - 检查防火墙:`sudo firewall-cmd --list-ports` 3. Filebeat 无数据 - 运行调试模式:`sudo ./filebeat -e -c filebeat.yml -d "publish"` > 部署框架基于 ELK Stack 官方文档[^1]与 openEuler 系统适配实践,具体参数需按硬件配置调整[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

趴着喝可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值