zoukankan      html  css  js  c++  java
  • kafka集群的错误处理--kafka一个节点挂了,导致消费失败

    今天由于kafka集群搭建时的配置不当,由于一台主消费者挂掉(服务器崩了,需要维修),导致了所有新版消费者(新版的offset存储在kafka)都无法拉取消息。

    由于是线上问题,所以是绝对不能影响用户的,使用老版客户端(offset存储在zk)进行消费,然后将kafka迁移到备用服务。

    下面来说一下这次事故的具体处理思路

    1. 首先要确保获取到的消息不能丢失,所以老版消费者进行消费
    2. 线上服务通过均衡负载一台一台的进行切换kafka服务,当原生产者数据都消费完时,将消费者切换到备用服务
    3. 开始配置线上kafka服务

    主要做了如下修改

    offsets.topic.replication.factor=3

    设置副本数量为3,这样当一台消费者宕机时,其他消费者也可以进行消费

    为了使topic可以进行复制副本,这里采用了比较粗暴的方法,直接清空topic和offset
    分为以下几个步骤

    ./zookeeper-shell.sh 127.0.0.1:24500
    rmr /brokers/topics/topic-name
    rmr /config/topics/topic-name
    rmr /admin/delete_topics/topic-name

    此时已经将topic完全删除,然后进行topic的新建

    bin/kafka-topics --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic topic-name

    这时可以启动生产者和消费者进行查看,已经不再出现一开始的异常

    Connection to node -1 could not be established. Broker may not be available.

    这时我进行了测试,对三台broker中的任意一台进行下线,服务会自动选择其他节点进行生产和消费。



    作者:Stalary
    链接:https://www.jianshu.com/p/afa462ffc1ae
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    简单线程池的设计
    MFC开发--截图工具
    Win32小游戏--蜘蛛纸牌
    C++语言动态创建对象
    C++语言类之间的关系
    c++语言虚函数实现多态的原理(更新版)
    5-24 c++语言之【基础知识】
    小细节--关于printf的输出问题
    Win32小游戏--贪吃蛇
    2020北大夏令营 终末游记
  • 原文地址:https://www.cnblogs.com/jing1617/p/10719937.html
Copyright © 2011-2022 走看看