1、kafka集群管理内部翼支付Kafka集群管理(内部)需求规格说明书编写:xxx评审:XXX批准:XXX日期:2015-03-13文档信息及修改历史项目名称Kafka集群管理(内部)设计文档文档编号文档密级机密/秘密/内部/公开版本号修改日期编写评审批准修改内容填写说明:1、文档密级是该文档允许扩散的范围。2、版本号是指该文档的版本次序号,该文档首次发布时可确定为1.0,如果在上一版的基础上有细微的调整和修改,则可在小数点后次版本号加1;如果该文档内容总体上有重大变化或增加/删除了重要章节,则小数点主版本号加1。 1引言1.1编写目的本文档制定使用kafka集群的管理维护要求,解决因无规则操作
2、而引起kafka集群的稳定性,制定规范命名和流程化的使用规则,从而降低后期维护、扩容、管理的成本。1.2编写原则根据内部项目管理规范则,从业务人员的角度对需求的阐述,以及对需求描述的细化程度。此文档将在开发过程随着需求的变更而更改和修订。1.3读者对象项目经理、开发人员、业务人员、测试人员。1.4需求来源中间件团队。1.5术语定义1.5.1名词释义术语解释 KafkaApache kafka,高吞吐量的分布式消息系统2操作2.1Kafka集群排错在不借助任何工具的情况下,对kafka集群进行排错。(此方法快速有效)2.1.1整体排错运行bin/kafka-topics.sh -describe
3、 -zookeeper 172.17.162.235:2181Isr:活着的broker节点Leader:使用的broker节点查看isr,如果所有broker集群包含在里面,并且Leader都有相应的broker,则认为集群正常,否则缺什么集群就单独进行排错。2.1.2消费延迟排错当发现消费延迟时运行pid offset:为当前消费组的每个分区的消费偏移量logSize: 为当前的日志大小。Lag:延迟消费数量。解决:当发现此分区消费延迟过高,就可以通过命令进行进行平衡。bin/kafka-preferred-replica-election.sh -zookeeper 172.17.162
4、.235:2181Successfully started preferred replica election for partitions Set(test,1, test,0)2.1.3日志logs/server.log:为服务器运行日志。logs/ kafkaServer-gc.log:为服务器运行日志。2.2kafka集群搭建参数配置此配置是在搭建kafka环境之前进行修改的。字段名默认描述num.partitions待定默认创建分区数,跟业务集群数对等。log.retention.ms,minutes,hours7day在删除log文件之前,保存在磁盘的时间,log.retenti
5、on.bytes-1topic每个分区的最大文件大小,达到要求则执行删除。auto.create.topics.enableFalse是否允许自动创建topic。(我们来管理topic,所有是禁止自动创建的。)offsets.topic.num.partitions100偏移的提交topic的分区数目。 由于目前不支持部署之后改变,我们建议您使用生产较高的设置(例如,100-200)。auto.leader.rebalance.enableTrue每当一个broker停止或崩溃,broke转移到其他的副本。在默认情况下,当这个broker重新启动,它也只会跟随它的所有分区。并不会用于客户端的读
6、和写。自动平衡注意:此配置像在搭建环境之前需要进行修改设定的。更多配置需要等待kafka集群测试报告后,在新增加进去。2.3Kafka迁移如果集群新增机器5,6,部分集群机器的topic要进行迁移到新的broker节点上去。例:新增broker节点5,6,原有数据要迁移到5,6上去。2.3.1创建迁移脚本创建要进行迁移的topic cat topics-to-move.jsontopics: topic: foo1, topic: foo2, version:12.3.2生成迁移规则bin/kafka-reassign-partitions.sh -zookeeper localhost:21
7、81 -topics-to-move-json-file topics-to-move.json -broker-list 5,6 -generate Current partition replica assignmentversion:1, partitions:topic:foo1,partition:2,replicas:1,2, topic:foo1,partition:0,replicas:3,4, topic:foo2,partition:2,replicas:1,2, topic:foo2,partition:0,replicas:3,4, topic:foo1,partiti
8、on:1,replicas:2,3, topic:foo2,partition:1,replicas:2,3Proposed partition reassignment configurationversion:1, partitions:topic:foo1,partition:2,replicas:5,6, topic:foo1,partition:0,replicas:5,6, topic:foo2,partition:2,replicas:5,6, topic:foo2,partition:0,replicas:5,6, topic:foo1,partition:1,replicas
9、:5,6, topic:foo2,partition:1,replicas:5,6新建expand-cluster-reassignment.json,复制生成的规则放到文件中。2.3.3执行确认无误后,开始执行。bin/kafka-reassign-partitions.sh -zookeeper localhost:2181 -reassignment-json-file expand-cluster-reassignment.json -executeCurrent partition replica assignmentversion:1, partitions:topic:foo1,
10、partition:2,replicas:1,2, topic:foo1,partition:0,replicas:3,4, topic:foo2,partition:2,replicas:1,2, topic:foo2,partition:0,replicas:3,4, topic:foo1,partition:1,replicas:2,3, topic:foo2,partition:1,replicas:2,3Save this to use as the -reassignment-json-file option during rollbackSuccessfully started
11、reassignment of partitionsversion:1, partitions:topic:foo1,partition:2,replicas:5,6, topic:foo1,partition:0,replicas:5,6, topic:foo2,partition:2,replicas:5,6, topic:foo2,partition:0,replicas:5,6, topic:foo1,partition:1,replicas:5,6, topic:foo2,partition:1,replicas:5,6、2.3.4验证迁移结果 bin/kafka-reassign-
12、partitions.sh -zookeeper localhost:2181 -reassignment-json-file expand-cluster-reassignment.json -verifyStatus of partition reassignment:Reassignment of partition foo1,0 completed successfullyReassignment of partition foo1,1 is in progressReassignment of partition foo1,2 is in progressReassignment o
13、f partition foo2,0 completed successfullyReassignment of partition foo2,1 completed successfully Reassignment of partition foo2,2 completed successfully 数据迁移一旦开始无法停止,也不要强行停止集群,这样会造成数据不一致,带来无法挽回的后果。注 意:kafka数据迁移的原理是先拷贝数据到目标节点,然后再删除原节点的数据。这样的话如果集群原节点空间不足,不要继续指定其为迁移broker,这 样将造成原节点空间用尽,例如原节点是broker为0,1
14、,2,3,4就不要这样指定 -broker-list 0,1,2,3,4,应该这样 -broker-list 5,6、2.4Kafka topic管理2.4.1创建topicbin/kafka-topics.sh -create -zookeeper localhost:2181 -replication-factor 1 -partitions 1 -topic test由运维人员对开发人员申请的kafka新建topic主题进行统一管理,统一命名。创建的kafka主题分区数和副本数不得超过集群本身,根据实际业务场景进行创建。副本数最好一主一备,超过则影响性能。2.4.2Topic新增分区新增分区bin/kafka-topics.s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1