您的位置:首页 > 其它

Kafka 消息不能接收的问题

2017-03-24 16:58 211 查看

问题现象

应用系统上做了一个操作后,后续操作未执行。 操作之间的衔接是通过kafka消息来通讯的

问题排查

可能原因猜测: 1. 消费类挂掉了,没有监听? 2. kafka故障?

看下消费类所在的应用,发现有异常挂掉了。

问题在此,重启解决之。启动日志看到消费类正常建立监听的信息。

手工推送一个消息,还是未收到。

kafka自己启动了一个consumer来进行消息消费

手工推送一个消息,没有消费掉

./kafka-console-consumer.sh --zookeeper 127.0.0.1:2181 --from-beginning --topic DATA_SEND_SendContractGoods_sit


此时怀疑kafka有问题,但不是很确定,因为集群中部署了三个kafka应用,不可能同时出现故障

自己手工建立了一个test topic,创建、消费消息,正常

./kafka-console-consumer.sh --zookeeper 192.168.6.33:2181 --from-beginning --topic test_ax


此时比较困惑了,kafka正常 or 异常

此时误打误撞,看了下topic的信息

Topic:DATA_SEND_SendContractGoods_sit   PartitionCount:1    ReplicationFactor:1 Configs:
Topic: DATA_SEND_SendContractGoods_sit  Partition: 0    Leader: -1  Replicas: 1 Isr:
Topic:EFFECTIVE_COST_SIT    PartitionCount:1    ReplicationFactor:1 Configs:
Topic: EFFECTIVE_COST_SIT   Partition: 0    Leader: 2   Replicas: 2 Isr: 2


Leader:-1,看着这个觉得不对劲,百度下,Leader 为-1的情况:

1.broker shutdown的时候,partition的leader在此broker上,controller选主没有成功,移除此broker后,对应的partition的leader就被赋值成-1了。

2.给此broker发送stopReplicaRequest

调用controller.removeReplicaFromIsr,从zk读取当前partition的状态,从isr中移除此broker,并更新zk信息(如果leader为此broker,则新leader被置为-1,代表没有leader,为什么没有选择isr中其他broker为leader?)

发送leaderAndIsrRequest到此partition的leader,发送updateMetaRequest给所有broker

更新ReplicaStateMachine中replicaState的状态。

比对看了下建立的测试的topic, Leader是3,故能正常消费

Topic:test_ax   PartitionCount:1    ReplicationFactor:1 Configs:
Topic: test_ax  Partition: 0    Leader: 3   Replicas: 3 Isr: 3


将三台kafka重启后,通讯正常

问题原因:

公司部署的kafka有三台机器组成了一个集群,这个topic只建立了一个分区, 对应分区挂掉后,leader变成了-1,无法进行消息处理? 重启这台机器后也不行?

据运维同事反应,早上有一台kafka挂掉了,然后重启了。

待验证的猜想: kafka集群中,某个topic只有一个分区,对应分区机器挂掉后重启,Leader仍无法恢复?

自己本机验证的时候,创建topic只有一个分区,对应leader的kafka关掉后,消息发送异常,leader为-1, 再启动此kafka,其他的kafka不重启,消息可以正常通讯

解决思路

修改默认topic创建的分区数,可以是集群机器的整数倍。

对已有topic调整。 1:重新部署kafka,修改配置。 此时原有消息内容全部丢失; 2:针对具体topic来修改分区数

参考资料

http://blog.csdn.net/lizhitao/article/details/45380811

http://blog.csdn.net/lizhitao/article/category/2194509
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Kafka 消息消费