Kafka新节点加入集群操作指南

一、环境准备

1. Java环境安装

# 安装JDK
apt-get update
apt-get install openjdk-8-jdk -y

2. 下载并解压

wget https://archive.apache.org/dist/kafka/2.8.1/kafka_2.13-2.8.1.tgz
tar xf kafka_2.13-2.8.1.tgz
mv kafka_2.13-2.8.1 kafka

二、配置环境变量

1. 创建kafka.sh

vim /etc/profile.d/kafka.sh# 添加以下内容
export KAFKA_HOME=/data/kafka
export PATH=$PATH:$KAFKA_HOME/bin
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export KAFKA_OPTS="-Djava.security.auth.login.config=/data/kafka/config/kafka_jaas.conf"

2. 使环境变量生效

source /etc/profile.d/kafka.sh

三、配置文件准备

拷贝之前的

1. 修改server.properties

# 基础配置
broker.id=4  # 确保集群中唯一
delete.topic.enable=true# 认证配置
listeners=SASL_PLAINTEXT://172.24.77.18:9092  # 修改为本机IP
advertised.listeners=SASL_PLAINTEXT://172.24.77.18:9092  # 修改为本机IP
inter.broker.listener.name=SASL_PLAINTEXT
security.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
sasl.enabled.mechanisms=SCRAM-SHA-256,PLAIN# ACL配置
allow.everyone.if.no.acl.found=true
super.users=User:super
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer# 性能配置
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600# 日志配置
log.dirs=/data/kafka/data
num.partitions=3
num.recovery.threads.per.data.dir=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000# ZooKeeper配置
zookeeper.connect=172.24.77.13:2181,172.24.77.14:2181  # 修改为实际ZK地址
zookeeper.connection.timeout.ms=18000
zookeeper.set.acl=true# 复制配置
default.replication.factor=3
min.insync.replicas=2

2. 配置kafka_jaas.conf

KafkaServer {org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="super"password="super_password";
};
Client {org.apache.zookeeper.server.auth.DigestLoginModule requiredusername="super"password="super_password";
};
# 客户端会youxian
KafkaClient {    org.apache.kafka.common.security.scram.ScramLoginModule requiredusername="super"password="super_password";
};

3. 配置admin-config.properties

sasl.mechanism=SCRAM-SHA-256
security.protocol=SASL_PLAINTEXT
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \username="super" \password="super_password";

四、启动服务

1. 启动Kafka

cd /data/kafka
bin/kafka-server-start.sh -daemon config/server.properties

2. 检查启动状态

# 查看进程
jps | grep Kafka# 查看日志
tail -200 /data/kafka/logs/server.log

五、验证配置并迁移topic

1. 检查集群状态

# 创建测试主题
bin/kafka-topics.sh --create \--topic test \--partitions 3 \--replication-factor 3 \--bootstrap-server localhost:9092 \--command-config config/admin-config.properties# 查看主题信息
bin/kafka-topics.sh --describe \--topic test \--bootstrap-server localhost:9092 \--command-config config/admin-config.properties

2. 验证复制

# 检查topic
bin/kafka-topics.sh --list     --bootstrap-server 172.24.77.18:9092     --command-config config/admin-config.properties
# 检查分区分布
bin/kafka-topics.sh --describe \--topic test-cluster \--bootstrap-server 172.24.77.18:9092 \--command-config config/admin-config.properties

3. 查看节点状态

[zk: localhost:2181(CONNECTED) 2] ls /brokers/ids
[1, 2, 3, 4]
[zk: localhost:2181(CONNECTED) 3] get /brokers/ids/4
{"features":{},"listener_security_protocol_map":{"SASL_PLAINTEXT":"SASL_PLAINTEXT"},"endpoints":["SASL_PLAINTEXT://172.24.77.18:9092"],"jmx_port":-1,"port":-1,"host":null,"version":5,"timestamp":"1731397341315"}

说明节点加入成功了

4. 假装broker3不要了,换成broker4
# 查看当前topic详情
bin/kafka-topics.sh --describe \--topic test-cluster \--bootstrap-server 172.24.77.18:9092 \--command-config config/admin-config.properties# 当前状态:
Topic: test-cluster	
Partition: 0	Leader: 1	Replicas: 3,2,1	Isr: 1
Partition: 1	Leader: 1	Replicas: 2,3,1	Isr: 1
Partition: 2	Leader: 1	Replicas: 2,1,3	Isr: 1
5. 执行分区重新分配
# 1. 先列出要迁移的topics
cat > move-topics.json << EOF
{"topics": [{"topic": "test-cluster"}],"version": 1
}
EOF# 2. 生成迁移计划
bin/kafka-reassign-partitions.sh \--bootstrap-server 172.24.77.18:9092 \--command-config config/admin-config.properties \--topics-to-move-json-file move-topics.json \--broker-list "1,2,4" \--generate
会有两段json配置,当前分区信息和预分配的分区信息
Current partition replica assignment   ---这个保存下来回滚使用
...
Proposed partition reassignment configuration   ---这个迁移使用
...
# 3.  reassignment.json`Proposed partition reassignment configuration`下的内容放到reassignment.json里
# 4. 执行迁移并限流,限流100MB
bin/kafka-reassign-partitions.sh   --bootstrap-server 172.24.77.18:9092   --command-config config/admin-config.properties \
--reassignment-json-file reassignment.json   --execute   --throttle 100000000# 5. 迁移后解除限流可以使用--verify参数,验证的同时解除限流
bin/kafka-reassign-partitions.sh \--bootstrap-server 172.24.77.18:9092 \--command-config config/admin-config.properties \--reassignment-json-file reassignment.json \--verify
提示:
Clearing broker-level throttles on brokers ...  # 清除 broker 级别的限流
Clearing topic-level throttles on topic ...     # 清除 topic 级别的限流验证过程:
先检查所有分区的迁移状态
如果迁移完成,自动清除 broker 级别的限流
自动清除 topic 级别的限流

6. 理解限流的影响

Broker1: - topic-A (迁移中)- topic-B (正常)- topic-C (正常)Broker2:- topic-D (完全不参与迁移)Broker1 参与迁移,所以它上面的 topic-A、B、C 都会受到带宽限制
Broker2 没参与迁移,完全不受影响所以在生产环境中要注意:
合理设置限流值,考虑到 broker 上其他 topic 的正常运行
尽量在业务低峰期进行迁移
可以分批迁移 topic,避免影响面过大# 查看topic详细信息$ /data/kafka/bin/kafka-topics.sh --describe --topic test-cluster \--bootstrap-server 172.24.77.18:9092 --command-config config/admin-config.properties

六、故障排查

1. 常见问题检查

# 检查端口
netstat -nltp | grep 9092# 检查连接
telnet localhost 9092# 检查ZK连接
echo stat | nc localhost 2181

2. 日志检查

# 检查Kafka日志
tail -f /data/kafka/logs/server.log# 检查系统日志
journalctl -u kafka

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

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

相关文章

git配置用户信息

在 Git 中配置用户信息&#xff0c;主要是设置你的用户名和电子邮件地址&#xff0c;这些信息会被 Git 用来记录提交的作者信息。以下是配置用户信息的步骤&#xff1a; 打开命令行工具。 设置你的用户名&#xff1a; git config --global user.name "你的名字"例如…

vue3项目初始化完整流程,vue3+TypeScript+vue-router+pinia+element-plus+axios+unocss+mock

2.1项目初始化 今天来带大家从0开始搭建一个vue3版本的后台管理系统。一个项目要有统一的规范&#xff0c;需要使用eslintstylelintprettier来对我们的代码质量做检测和修复&#xff0c;需要使用husky来做commit拦截&#xff0c;需要使用commitlint来统一提交规范&#xff0c;…

[Import REC] Import REC下载及使用Import REC重建引入表Import table详细过程(附有下载文件)

前言 下载 使用夸克网盘打开链接&#xff0c;给出的是绿化版免安装 Import REC 链接&#xff1a;https://pan.quark.cn/s/552e4c1ea7d6 提取码&#xff1a;qEMM 下载之后解压得到 里面有使用更新说明 使用修复import table 演示 现在有一个程序&#xff0c;放入PEiD进行查壳…

MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中

MySQL技巧之跨服务器数据查询&#xff1a;高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中 基础篇已经描述&#xff1a;借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的…

AI制作表情包,每月躺赚1W+,完整流程制作多重变现教学

项目介绍 AI制作表情包项目是一个利用ai&#xff0c;快速生成表情包的副业项目。 在社交平台如微信、QQ等&#xff0c;表情包已成为日常沟通不可或缺的一部分。通过AI技术&#xff0c;我们可以轻松制作出大量表情包&#xff0c;并通过多种渠道实现变现&#xff0c;非常适合追…

入侵排查之Linux

目录 1.黑客入侵后的利用思路 2.入侵排查思路 2.1.账号安全 2.1.1.用户信息文件/etc/passwd 2.1.2.影子文件/etc/shadow 2.1.3.入侵排查 2.1.3.1.排查当前系统登录信息 2.1.4.2.查询可以远程登录的账号信息 2.2.历史命令 2.2.1.基本使用 2.2.1.1.root历史命令 2.2.…

【OceanBase 诊断调优】—— 止血良方「SQL 限流」

1. 知识点 1. 对于Oceanbase&#xff0c;限流的意思是限制其在单台主机上处理的并发度&#xff0c;因此假设对某SQL限流的并发度为1&#xff0c;该集群有N台机器可以执行该SQL&#xff0c;则实际并发度是N。 2. OceanBase 是通过在 SQL 上绑定 Outline 的方式来实现的&#x…

excel使用

上中下旬的逾期金额 步骤&#xff1a; 1、先判断上中下旬的时间范围 2、根据城市和时间求和&#xff0c;算出对应的逾期金额 问题&#xff1a;当从左插入列时&#xff0c;列的格式与原本一致&#xff0c;当我们想看数值时&#xff0c;发现为日期 解决&#xff1a;在开始-数据格…

MySQL远程连接错误解决:Host is not allowed to connect to this MySQL server

1. 异常错误 通过远程客户端访问MySQL服务器时会遇到“Host is not allowed to connect to this MySQL server”的错误提示。 2. 原因 MySQL服务器当前配置不允许来自特定主机的连接尝试。 3. 解决方法 允许远程主机访问MySQL服务器&#xff0c;按照以下步骤操作&#xff…

MySQL算数运算符基础:详解与入门

目录 背景&#xff1a; 过程&#xff1a; 1.加法与减法运算符 1.2扩展&#xff1a; 1.3运算结果得出结论 &#xff1a; 2.乘法和除法运算 ​2.1练习&#xff1a; 2.2运算结果得出结论 &#xff1a; 3.求模取余运算符 3.1练习&#xff1a; 总结&#xff1a; 背景&a…

7天用Go从零实现分布式缓存GeeCache(学习)

参考资料 前置知识 在 Go 的 HTTP 服务器开发中&#xff0c;ServeHTTP 方法的参数 w http.ResponseWriter 和 r *http.Request 用于处理 HTTP 请求和构建响应。以下是它们的详细解释&#xff1a; 1. w http.ResponseWriter w 是一个 http.ResponseWriter 类型&#xff0c;用…

[HarmonyOS]简单说一下鸿蒙架构

鸿蒙操作系统&#xff08;HarmonyOS&#xff09;是由华为公司开发的一款面向全场景的操作分布式系统。它旨在提供一个统一的操作系统平台&#xff0c;支持多种设备&#xff0c;包括智能手机、平板电脑、智能电视、可穿戴设备、智能家居等。鸿蒙架构的设计目标是实现设备之间的无…

centos7.9安装mysql5.7完整版

centos7.9安装mysql5.7完整版 1. 更新yum源 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# ls -lh #备份镜像源 [rootlocalhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.backup #下载阿里云centos7镜像 [rootlocalhost yum.repos.d]# …

2024年AI办公工具API:高效办公的智能选择

在2024年&#xff0c;AI技术已经深入到我们工作生活的方方面面&#xff0c;极大地提高了办公效率和质量。这些工具通过集成先进的算法和模型&#xff0c;使得日常任务自动化、数据分析智能化、内容创作高效化。以下是2024年最受欢迎的AI办公工具API&#xff0c;它们正在重新定义…

[UnLua]动态创建SceneCapture2d相机,并且添加渲染目标纹理

在 Unlua 开发中&#xff0c;相机相关的操作是构建场景视觉效果的重要部分。以下我们来详细分析一段涉及相机实例化和为相机赋予纹理目标的 Unlua 代码。 -- 实例化相机local World self:GetWorld()maskCamera World:SpawnActor(UE.ASceneCapture2D)-- 给相机赋值纹理目标lo…

力扣 LeetCode 142. 环形链表II(Day2:链表)

解题思路&#xff1a; 使用set判断是否重复添加&#xff0c;如果set加入不进去证明之前到达过该节点&#xff0c;有环 public class Solution {public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();ListNode cur head;while (cur …

基于Spring Boot的电子商务系统设计

5 系统实现 系统实现部分就是将系统分析&#xff0c;系统设计部分的内容通过编码进行功能实现&#xff0c;以一个实际应用系统的形式展示系统分析与系统设计的结果。前面提到的系统分析&#xff0c;系统设计最主要还是进行功能&#xff0c;系统操作逻辑的设计&#xff0c;也包括…

数据驱动的投资分析:民锋科技的量化模型探索

在全球金融市场中&#xff0c;数据驱动的投资分析正在变革传统投资方式。民锋科技通过精密的量化模型和智能算法&#xff0c;为投资者提供更加科学的市场预测和投资分析工具&#xff0c;以帮助他们更好地理解市场波动、优化投资组合&#xff0c;实现风险管理。 #### 一、数据驱…

论文阅读《BEVFormer v2》

BEVFormer v2: Adapting Modern Image Backbones to Bird’s-Eye-View Recognition via Perspective Supervision 目录 摘要1 介绍2 相关工作2.1 BEV三维目标检测器 摘要 我们提出了一种具有透视监督的新型鸟瞰图&#xff08;BEV&#xff09;检测器&#xff0c;其收敛速度更快…

使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏

作者&#xff1a;BLACK595 “小恐龙酷跑”&#xff0c;它是一款有趣的离线游戏&#xff0c;是Google给Chrome浏览器加的一个有趣的彩蛋。当我们浏览器断网时一只像素小恐龙便会出来提示断网。许多人认为这只是一个可爱的小图标&#xff0c; 但当我们按下空格后&#xff0c;小恐…