设为首页 收藏本站
查看: 971|回复: 0

[经验分享] Kafka学习之Replication tools之controlled shutdown

[复制链接]

尚未签到

发表于 2017-5-23 18:37:02 | 显示全部楼层 |阅读模式
原文地址: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),因为会导致数据丢失。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379989-1-1.html 上篇帖子: Kafka学习之consumer配置(0.8.1版) 下篇帖子: Kafka学习之Replication tools之Reassign Partitions Tool
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表