kafka集群节点临时下线操作流程:
首先,我们需要确保在将 Kafka 集群中的节点临时下线之前,集群处于健康状态。然后,我们可以按照以下步骤执行临时下线操作:
1.停止 Kafka 服务:在要下线的节点上停止 Kafka 服务,确保该节点不再参与集群中的任何活动。
2.从 ZooKeeper 中移除节点:使用 ZooKeeper 的命令行工具,手动将要下线的节点从 ZooKeeper 中移除。这将触发集群重新平衡,以确保其他节点接管该节点的分区。
3.监控集群健康状态:在节点下线后,监控集群的健康状态,确保其他节点成功接管了下线节点的分区,并且集群仍然能够正常工作。
4.恢复节点:当需要将节点重新加入集群时,启动 Kafka 服务,并确保节点的配置与其他节点保持一致。集群将自动检测到节点的重新加入,并进行必要的重新平衡操作。
注意,临时下线节点可能会导致集群的负载增加,因此在进行此操作时,需要谨慎考虑集群的整体健康状况以及业务需求。
kafka集群节点临时下线操作步骤:
1. 确保具备适当的权限和访问 Kafka 集群的方式。进入要下线的 Kafka 节点所在的服务器。此处提供的命令仅适用于 Apache Kafka 的默认安装和文件结构。如果你的安装方式或目录结构不同,请相应地修改命令。
2. 进入要下线的 Kafka 节点所在的服务器。
./zkServer.sh status echo stat | nc <ZooKeeper IP> 2181 echo mntr | nc <ZooKeeper IP> 2181 echo isro | nc <ZooKeeper IP> 2181 systemctl status kafka.service
3. 停止 Kafka 服务器进程:
bin/kafka-server-stop.sh 或者 systemctl stop kafka.service
4. 确保 Kafka 服务器进程已经成功停止:
ps aux | grep kafka
在操作kafka节点下线过程中,同时登陆zookeeper集群,实时观察下线节点是否已从 zookeeper 节点中移除或重新注册
1)登陆zookeeper
./zkCli.sh -server 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181 # 查看kafka节点 [zk: 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181(CONNECTED) 3] ls /brokers/ids [1, 2, 3]
2)检查节点状态:使用以下命令检查要下线的节点是否已从 ZooKeeper 中移除:
get /brokers/ids/<node_id>
如果返回结果为空,表示该节点已从 ZooKeeper 中移除。
[zk: 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181(CONNECTED) 4] get /brokers/ids/1 {"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://172.16.157.51:9092"],"jmx_port":9099,"host":"172.16.157.51","timestamp":"1704536493719","port":9092,"version":4} [zk: 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181(CONNECTED) 0] ls /brokers/ids [1, 3] [zk: 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181(CONNECTED) 1] get /brokers/ids/2 Node does not exist: /brokers/ids/2
3)移除节点:如果节点仍然存在,可以使用以下命令将节点从 ZooKeeper 中移除:
rmr /brokers/ids/<node_id>
这将删除指定节点的所有相关信息。最好是直接将要下线的kafka节点服务停掉,直接删除要小心误操作。
4)验证节点移除:再次使用 get 命令检查节点状态,确保节点已成功从 ZooKeeper 中移除。
5. 在 Kafka 集群的其他节点上,运行命令 describe,检查集群的状态,确保被下线的节点已被正确标记为“下线”状态:
bin/kafka-topics.sh --describe --zookeeper <zookeeper_host>:<zookeeper_port>
替换 <zookeeper_host> 和 <zookeeper_port> 为你的 ZooKeeper 节点的主机和端口。
kafka-topics.sh --describe --zookeeper 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181
6. 在下线节点完成维护或修复后,可以按需重启 Kafka 服务器来将其重新加入集群。使用以下命令启动 Kafka 服务器:
bin/kafka-server-start.sh config/server.propertie 或者 systemctl start kafka.service
[zk: 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181(CONNECTED) 6] ls /brokers/ids [1, 2, 3] [zk: 172.16.157.51:2181,172.16.157.58:2181,172.16.157.70:2181(CONNECTED) 7] get /brokers/ids/2 {"listener_security_protocol_map":{"PLAINTEXT":"PLAINTEXT"},"endpoints":["PLAINTEXT://172.16.157.58:9092"],"jmx_port":9099,"host":"172.16.157.58","timestamp":"1704695617038","port":9092,"version":4}
确保 Kafka 服务器配置文件的路径和名称正确。
7.使用 kafka-consumer-groups.sh 命令来查看消费者组的详细信息:
kafka-consumer-groups.sh --bootstrap-server 172.16.157.51:9092,172.16.157.58:9092,172.16.157.70:9092 --describe --group test
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG CONSUMER-ID HOST CLIENT-ID test 1 20338977140 20340687475 1710335 test-1-7cac8552-2423-40ba-8b28-b2324e693f16 /172.16.157.6 test-1 test 0 21425799531 21427549842 1750311 test-0-3a8d66fd-90ac-47ac-a9b4-8410d04a2712 /172.16.157.6 test-0 test 2 20340552082 20342297849 1745767 test-10-0f56f4c4-b46a-4cc2-a34a-dc858a97f627 /172.16.157.6 test-10