`
邢邢色色
  • 浏览: 226096 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Kafka学习之Replication tools之controlled shutdown

阅读更多

原文地址:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-1.ControlledShutdown

controlled shutdown是啥意思?

在0.8版本中,每一个partition可以有多个replica。这些replica分布在多个broker上,提供了高可用。在任意的时间点上,只有一个replica可以提供读和写服务。换句话说,只有一个replica可以充当leader的角色。当一个broker需要关闭时(如果需要升级版本,改变配置参数时需要关闭),那么需要把当前broker上提供服务的leader partition迁移到其他同步中(in-sync)的replica上,这就是controlled shutdown工具的作用。

 

总的来说,它会减少不可用的时间窗口。如果我们简单的关闭一个broker而没有controlled shutdown的话,该broker上的leader partition就会不可用,直到选出一个新的leader。然后我们会顺序的每次选出一个partition作为leader,这个操作对ZK进行读写,选出所有的leader会花掉一些时间,特别是当有很多partition的时候。做一次controlled shutdown允许我们主动的转移leader,以此来减少不可用的时间窗口,有两种方法可以做到这一点。

 

第一种方法是在broker的配置文件中设置controlled.shutdown.enable。这样在broker关闭之前会尝试转移自己的leader到其他的broker上。还可以设置controlled.shutdown.max.retries和controlled.shutdown.retry.backoff.ms来控制在执行过程中的最大耗费时间和重试次数。

 

第二种方法是运行一个命令行工具。

下面是这个工具的工作步骤的汇总:

 

1,找到controller所在的broker的jmx端口。

2,使用要shutdown的broker的端口,向controller发出一个shutdown命令。
3,controller找到broker上当前的leader partition。
4,对于每一个leader partition,controller找到其他broker上的in-sync replica,并在其中选出一个作为leader。
5,如果不能选出leader,那么shutdown失败。
6,命令行工具等待controller的响应。如果发现shutdown不成功,就会重试(可配置)并最终基于controller的响应成功或失败。

 

注意这个工具仅仅把leadership转移到其他的可用的broker上。它并不会terminate当前的broker。你需要手动的关闭它。

 

如何使用?

bin/kafka-run-class.sh kafka.admin.ShutdownBroker --zookeeper localhost:12913/kafka --broker #brokerId# --num.retries 3 --retry.interval.ms 60

此工具接收一个zookeeper host列表的参数(如果有namespace的话需要包括进去)和想要shutdown的broker id,这两个是必填参数。另外还有一个可选的重试次数和重试之间的时间间隔的设置。如果controller进行shutdown失败,在指定的间隔后会重试。

 

FAQ

当ack为0时,此工具如何工作?

当一个partition的leadership改变时,当client(producer和consumer)还在对老的leader进行生产,消费,或者等待一个响应时会得到一个错误,client然后会从ZK刷新partition的元数据,并获得partition的新的leader,然后重试。但当producer client设置ack=0的话就不会这样做,这是因为producer不会等待响应结果,也就不知道leadership改变。client会end up loosing messages直到shutdown的broker重新跑起来。

 

当一个partition的in-sync集合中没有其他的replica时会发生什么?

When a partition does not have any other replicas that are in the "in-sync" set, the tool fails to shutdown the broker. This is to ensure that we do not have an unclean leader election (choosing a replica that is outside the "in-sync" set) and thereby causing data loss. 当这种情况发生时,此工具的shutdown会失败。因为要保证不会出现一个unclean的leader选举(选择一个不再in-sync集合的replica),因为会导致数据丢失。

分享到:
评论

相关推荐

    kafka学习之路

    kafka原理和架构及使用

    kafka-connect-tools

    kafka-connect-tools

    kafka学习指南

    kafka学习指南kafka学习指南kafka学习指南kafka学习指南kafka学习指南

    Kafka学习资料.pdf

    Kafka学习资料.pdf

    Python库 | kafka-dev-tools-0.0.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:kafka-dev-tools-0.0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    kafka学习笔记.doc

    1.kafka的基础知识(安装、部署、基础概念,版本) 2.kafka的特性 3. kafka客户端 4.kafka中的zookeeper 5. kafka如何不丢消息 6.kafka多线程消费 7.kafka重组平衡 ...11. 代码见《kafka学习代码》

    Kafka全套学习笔记.zip

    Kafka全套学习笔记

    kafka学习资料.zip

    Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。该资料中包含了图片解析,java代码对接kafka,kafka的学习文档和心得总结与安装包。

    kafka学习代码(java开发kafka)

    kafka学习代码

    kafka学习资料ppt

    大数据,kafka

    kafka学习kafka学习.zip

    kafka

    kafka消息队列学习笔记

    kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列学习笔记,kafka消息队列...

    Kafka全套学习视频

    Kafka全套学习视频,包含源码

    kafka tools.zip

    kafka tools,里面包含使用教程。一个可视化的kafka消费和topic结构工具,非常好用,推荐给大家。

    Kafka学习笔记.doc

    Kafka学习笔记,包括Kafka术语、学习过程中单机版Kafka安装与配置、基于Docker的Kafka集群安装与配置、kafka消息机制与原理、学习方法

    kafka学习资料

    kafka是最初由Linkedin公司开发,使用Scala语言编写,Kafka是一个分布式、分区的、多副本的、多订阅者的日志系统(分布 式MQ系统),可以用于web/nginx日志,搜索日志,监控日志,访问日志等等。 Kafka是一种分布式的...

    kafka学习经典教程,非常棒的学习材料

    kafka学习经典教程 kafka学习经典教程 kafka学习经典教程

    kafka学习笔记

    该笔记从零开始学习kafka,笔记内容包括:kafka的简介、下载、安装、配置、运行,以及springboot整合kafka实例

    kafka学习文档(Kafka基本概念、Kafka内部逻辑组成).docx

    kafka学习文档(Kafka基本概念、Kafka内部逻辑组成)。记录我的学习之旅,每份文档倾心倾力,带我成我大牛,回头观望满脸笑意,望大家多多给予意见,有问题或错误,请联系 我将及时改正;借鉴文章标明出处,谢谢

    Kafka学习

    Kafka学习 资料

Global site tag (gtag.js) - Google Analytics