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,一经查实,立即删除!

相关文章

[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;非常适合追…

excel使用

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

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

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

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

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

力扣 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;也包括…

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

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

Attention is all you need详细解读

transformer目的是解决NLP中使用RNN不能并行计算问题。 Encoder-Decoder, Attention, Transformer 三者关系 1.基础储备 &#xff08;1&#xff09;CV基础知识 1.首先拿CV中的分类任务来说&#xff0c;训练前我们会有以下几个常见步骤&#xff1a; 2.获取图片 3.定义待分类的类…

面向对象的需求分析和设计(一)

[toc] 1. 引言 前一篇文章《我对需求分析的理解》提到了面向对象分析和设计&#xff0c;正好最近又重新有重点的读了谭云杰著的《Think in UML》&#xff0c;感觉有必要写把书中一些核心内容观点以及自己的想法整理出来&#xff0c;一是方便自己日后的复习&#xff0c;另外也…

Window下PHP安装最新sg11(php5.3-php8.3)

链接: https://pan.baidu.com/s/10yyqTJdwH_oQJnQtWcwIeA 提取码: qz8y 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 (链接失效联系L88467872) 1.下载后解压文件&#xff0c;将对应版本的ixed.xx.win文件放进php对应的ext目录下&#xff0c;如图所示 2.修改ph…

基于Spring Boot与Redis的令牌主动失效机制实现

目录 前言1. 项目结构和依赖配置1.1 项目依赖配置1.2 Redis连接配置 2. 令牌主动失效机制的实现流程2.1 登录成功后将令牌存储到Redis中2.2 使用拦截器验证令牌2.3 用户修改密码后删除旧令牌 3. Redis的配置与测试4. 可能的扩展与优化结语 前言 在现代Web系统中&#xff0c;用…

Linux学习笔记之组管理和权限管理

组管理 文件/目录 所有者 一般文件所有者是文件的创建者&#xff0c;谁创建了该文件&#xff0c;就自然成为该文件的所有者 ls -ahl &#xff08;查看文件的所有者&#xff09; chown 用户名 文件名 &#xff08;修改文件所有者&#xff09; 文件/目录 所在组 当某个用户…

『黄河遗韵』数字非遗馆的守护之旅

创意定位 腾讯云推出的以“守护黄河文明&#xff0c;探索数字非遗馆”为主题的创意H5作品&#xff0c;通过长卷寻宝VR展馆形式&#xff0c;描绘了黄河文明中的非物质文化遗产&#xff0c;旨在唤起公众对黄河文明的保护意识&#xff0c;并邀请大家参与互动&#xff0c;深入了解…

前端监控与埋点 全总结

一、概念 前端埋点是指在网页或者应用程序中插入特定的代码&#xff0c;用于收集用户的行为数据并发送给服务器进行分析。这些数据可以包括用户的点击、浏览、输入等操作&#xff0c;帮助开发者了解用户的在其网站中的行为&#xff0c;从而进行针对性的优化和改进。 前端埋点…

全面介绍软件安全测试分类,安全测试方法、安全防护技术、安全测试流程

一、软件系统设计开发运行安全 1、注重OpenSource组件安全检查和版本更新&#xff08;black duck&#xff09; 现在很多云、云服务器都是由开源的组件去搭成的&#xff0c;对于OpenSource组件应该去做一些安全检查和版本更新&#xff0c;尤其是版本管理&#xff0c;定期对在运…

十、文件上传和下载

文章目录 1. 文件下载2. 文件上传 1. 文件下载 使用ResponseEntity实现下载文件的功能 2. 文件上传

Springboot整合Prometheus+grafana实现系统监控

前言 Prometheus是一个开源的服务监控系统和时序数据库&#xff0c;它提供了强大的功能和灵活的架构&#xff0c;是目前主流的监控和管理应用系统的工具。 而Grafana是一个开源的数据可视化工具&#xff0c;与Prometheus集成&#xff0c;就可以可视化地监控系统的各个指标。 …

新增支持Elasticsearch数据源,支持自定义在线地图风格,DataEase开源BI工具v2.10.2 LTS发布

2024年11月11日&#xff0c;人人可用的开源BI工具DataEase正式发布v2.10.2 LTS版本。 这一版本的功能变动包括&#xff1a;数据源方面&#xff0c;新增了对Elasticsearch数据源的支持&#xff1b;图表方面&#xff0c;对地图类和表格类图表进行了功能增强和优化&#xff0c;增…