• Kafka一个节点挂掉,导致服务不可消费


    问题:Kafka一个节点挂掉,导致服务不可消费。

    工作中遇到的一个问题,解决方法如下。

    一、修改系统_offsets副本数为3

    1、首先查看系统的_offsets副本是几个?

    /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181|grep consumer_offsets
    
    • 1

    查看结果如下图:副本数为1。
    在这里插入图片描述

    2、修改kafka的核心配置文件server.properties

    将num.partitions参数(默认为1)修改为3,
    另外需要添加auto.create.topics.enable=true ,如果没有对用的topic可以主动创建topic。
    在这里插入图片描述
    由于__consumer_offsets是kafka默认的主题,无法删除,我们可以删除zookeeper中的__consumer_offsets。
    进入zookeeper/bin目录执行./zkCli.sh

    cd /usr/local/zookeeper/bin
    ./zkCli.sh
    ls /broksers/topics
    # 如果此命令报错,用下面代替
    rmr /broksers/topics/__consumer_offsets 
    # 新版本zk去除了rmr命令,在这里我们用 
    deleteall /broksers/topics/__consumer_offsets
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    然后重启zookeeper、kafka

    # 停止
    /usr/local/zookeeper/bin/zkServer.sh stop
    /usr/local/kafka/bin/kafka-server-stop.sh -daemon /usr/local/kafka/config/server.properties
    
    # 启动
    /usr/local/zookeeper/bin/zkServer.sh start
    /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、再次查看系统的_offsets副本是几个?

    /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181|grep consumer_offsets
    
    • 1

    在节点1修改__consumer_offsets后,在节点2和节点3查看__consumer_offsets发现副本数已经变为3,不需要再进行修改。
    在这里插入图片描述
    !!!注意、到此问题没有解决,这里只是解决了系统的offsets副本,原先的topic的副本数依然为1,需要我们对已有的topic进行扩副本!!!

    二、为现有普通topic扩副本

    1、查看某个topic的副本数

    /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181,192.6.36.161:2181,192.6.36.162:2181 --topic portal_device_info
    
    • 1

    在这里插入图片描述

    2、制定分区及副本分配策略

    添加json文件

    vi /opt/portal_device_info.json
    
    • 1
    {
        "version": 1,
        "partitions": [
            {
                "topic": "portal_device_info",
                "partition": 0,
                "replicas": [
                    0,
                    1,
                    2
                ]
            }
        ]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3、扩副本

    /usr/local/kafka/bin/kafka-reassign-partitions.sh --zookeeper  192.6.36.159:2181,192.6.36.161:2181,192.6.36.162:2181 --reassignment-json-file /opt/portal_device_info.json –execute
    
    • 1

    如下图,表示成功。
    在这里插入图片描述

    4、再次查看副本数量

    /usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper 192.6.36.159:2181,192.6.36.161:2181,192.6.36.162:2181 --topic portal_device_info
    
    • 1

    在这里插入图片描述
    至此,问题已解决,我们测试一下,把其中一个节点停掉,kafka依然可以正常消费。

    参考:
    https://blog.csdn.net/DreamsArchitects/article/details/108573887
    https://blog.csdn.net/yabingshi_tech/article/details/120443647

  • 相关阅读:
    基于nodejs+vue教学辅助管理系统
    免费分享一个springboot+vue校园宿舍管理系统,挺漂亮的
    数据库第六章作业
    Qt的定时器QTimer
    怎么清晰地理解、表达 IaaS 、 PaaS 、 SaaS ?
    如何保护 PHP Web 应用程序并防止攻击?
    蓝桥杯:模拟、枚举
    探索APP流量变现的新途径
    .NET 6当中的Web API版本控制
    代码随想录算法训练营第三十六天| LeetCode435. 无重叠区间、LeetCode763. 划分字母区间、LeetCode56. 合并区间
  • 原文地址:https://blog.csdn.net/lifulian318/article/details/126852758