Kafka16:Kafka_Broke_Leader选举

Kafka16:Kafka_Broke_Leader选举

1. 环境准备

  • Zookeeper集群
  • Kafka集群
机器名
IP
Zookeeper(2181)
Kafka(9092)
redis01
192.168.92.145
redis02
192.168.92.146
redis03
192.168.92.147
redis04
192.168.92.148
  • redis01、redis02、redis03三台机器配置了Zookeeper启动脚本、Kafka启动脚本,可以快速启动
# 先启动ZK root@redis01:/usr/local/kafka# /home/bigdata/bin/zk1.sh start # 在启动Kafka root@redis01:/usr/local/kafka# /home/bigdata/bin/kf.sh start
  • redis04没有添加再启动脚本,需要手动启动
root@redis04:/usr/local/kafka# bin/kafka-server-start.sh -daemon config/server.properties root@redis04:/usr/local/kafka# jps 3413 Jps 3386 Kafka
notion image
 

2. Kafka_Broke_Leader选举

2.1 新建4个分区4个副本

  • 创建一个新的topic,4个分区,4 个副本
# 创建 root@redis01:/usr/local/kafka# ./bin/kafka-topics.sh --bootstrap-server redis01:9092 --topic henggao --create --partitions 4 --replication-factor 4 # 查看 root@redis01:/usr/local/kafka# ./bin/kafka-topics.sh --bootstrap-server redis01:9092 --topic henggao --describe
notion image

2.2 停止redis04的kafka

root@redis04:/usr/local/kafka# ./bin/kafka-server-stop.sh
notion image
在redis01查看Kafka集群
# 查看 root@redis01:/usr/local/kafka# ./bin/kafka-topics.sh --bootstrap-server redis01:9092 --topic henggao --describe
notion image
  • 分析:由于机器redis04对应的是ISR中的3,redie04节点宕机
  • 有一个发生变化
    • Leader:3,Replicas:3,0,2,1 —>Leader:0
    • leader:1,Replicas:1,2,3,0 —>Leader:1
    • leader:0,Replicas:0,3,1,2 —>Leader:0
    • leader:2,Replicas:2,1,0,3 —>Leader:2

2.3 停止redis03的kafka

root@redis03:/usr/local/kafka# ./bin/kafka-server-stop.sh
notion image
在redis01查看Kafka集群
# 查看 root@redis01:/usr/local/kafka# ./bin/kafka-topics.sh --bootstrap-server redis01:9092 --topic henggao --describe
notion image
  • 分析:由于机器redis03对应的是ISR中的2,redie03节点宕机,
  • 有一个发生变化
    • Leader:0,Replicas:3,0,2,1 —>Leader:0
    • leader:1,Replicas:1,23,0 —>Leader:1
    • leader:0,Replicas:0,3,1,2 —>Leader:0
    • leader:2,Replicas:2,1,0,3 —>Leader:1

2.4 启动redis04的kafka

 
root@redis04:/usr/local/kafka# bin/kafka-server-start.sh -daemon config/server.properties
notion image
Leader没有变化,Isr中添加了3。

2.5 启动redis03的kafka

 
root@redis03:/usr/local/kafka# bin/kafka-server-start.sh -daemon config/server.properties
notion image
Leader没有变化,Isr中添加了2。
 
 

2.7 停止redis02的kafka

root@redis02:/usr/local/kafka# ./bin/kafka-server-stop.sh
notion image
在redis01查看Kafka集群
# 查看 root@redis01:/usr/local/kafka# ./bin/kafka-topics.sh --bootstrap-server redis01:9092 --topic henggao --describe
notion image
  • 分析:由于机器redis02对应的是ISR中的1,redie02节点宕机,
  • 有三个发生变化
    • Leader:0,Replicas:3,0,2,1 —>Leader:3
    • leader:1,Replicas:1,2,3,0 —>Leader:2
    • leader:0,Replicas:0,3,1,2 —>Leader:0
    • leader:1,Replicas:2,1,0,3 —>Leader:2
参考:Leader Partition负载均衡
Kafka19:Leader Parttition自动平衡
Kafka19:Leader Parttition自动平衡

2.8 启动redis02的kafka

 
root@redis02:/usr/local/kafka# bin/kafka-server-start.sh -daemon config/server.properties
notion image
Leader没有变化,Isr中添加了2。