kafka查看broker上主副本_kafka常用运维操作,你知道几个?

本文介绍了Kafka集群的运维操作,包括优雅关闭、副本领导权平衡、机架层面的副本均衡、跨集群数据镜像、消费者位移检查、消费者组管理以及如何扩展和退役集群。重点讲解了Kafka如何确保主副本的正确性和机架内的副本分布,以及如何管理和调整消费者组的偏移量。
摘要由CSDN通过智能技术生成
要想kafka跑的好,如下几点要知晓。

Graceful shutdown

建议开启如下参数:

controlled.shutdown.enable=true

注意: 只有在broker上承载的分区都具有副本时(副本大于1,且副本存活),controller节点才会成功关闭

Balancing leadership

每当Broker停止或崩溃时,该broker的分区的领导权就转移到其他副本。

这意味着,默认情况下,当broker重新启动时,它将只是所有分区的关注者,这意味着它不会用于客户端读写,这对于整个集群来说吞吐会受到1/N的降低(N表示集群节点数)

为了避免这种不平衡,kafka提供了一种优先副本的概念preferred replicas.

如果一个分区的副本列表是1、5、9,那么节点1比节点5或节点9更适合作为leader,因为它位于副本列表的前面。

可以使用如下命令来恢复已恢复副本的领导权:

# 老版本工具
bin/kafka-preferred-replica-election.sh --zookeeper zk_host:port/chroot

# 新版本工具

当然每次在服务器启动后执行该操作,可能很无聊,因此可以设置如下参数来自动执行:

auto.leader.rebalance.enable=true

Balancing Replicas Across Racks

机架层面的副本均衡。

机架感知特性将相同分区的副本分散到不同的机架上,这扩展了Kafka为broker失败提供的覆盖机架失败的保证,如果机架上的所有broker同时失败,就限制了数据丢失的风险。

该特性还可以应用于其他broker分组,如EC2中的可用性区域。

您可以通过向broker配置添加属性来指定broker属于特定的机架:

broker.rack=my-rack-id

当创建、修改或重新分发一个主题时,将遵循机架约束,确保副本尽可能多地跨越多个机架(一个分区将跨越最小(#机架,复制因子)不同的机架)。

用于将副本副本分配给broker的算法,会确保每个broker的leader数量是恒定的,而不管broker是如何分布在机架上的。这确保了平衡的吞吐量。

注意: 明智的做法是为每个机架配置相同数量的broker

Mirroring data between clusters

我们将在Kafka集群之间复制数据的过程称为“镜像”,以避免与单个集群中节点之间的复制混淆。

Kafka附带一个用于在Kafka集群之间镜像数据的工具,即MirrorMaker,该工具可以从源集群进行消费,并生产到目标集群。

常用的场景就是在另外一个数据中心提供副本。

您可以运行许多这样的镜像进程来提高吞吐量和容错能力。

使用mirrormaker进行迁移topic到另外的集群:

bin/kafka-mirror-maker.sh
      --consumer.config consumer.properties
      --producer.config producer.properties --whitelist my-topic

需要注意,我们必须使用--whitelist参数指定topic,该参数支持java的正则表达式结构,比如--whitelist 'A|B',或者--whitelist '*' .

通常在使用kafka-mirror-maker时,建议配合auto.create.topics.enable=true使用,可以大批量的进行topic迁移。

Checking consumer position

检查消费者的位移,有时候了解消费者当前的位置时很有必要的。

kafka有一个工具,它将显示所有消费者在一个消费者组中的位置,以及他们与日志结束的距离

# 在my-group的消费者上消费my-topic的主题
# 可以查看整个消费者组的消费情况
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

Managing Consumer Groups

ConsumerGroupCommand工具可以list, describe, or delete一个消费组,消费者组可以手动删除,也可以在该组最后提交的偏移量过期时自动删除。

只有在组中没有任何活动成员时,手动删除才有效。

如下命令可以列出所有主题的所有消费者组:

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

查看指定消费者组

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group

当然可用试用一些额外的参数来查看更多的消费者信息:

  • --members: 查看消费者组中活跃的消费者
  • --members --verbose: 该参数还可以查看分配给每个成员的分区
  • --offsets: 该参数实际上可以被--describe参数中的内容覆盖掉
  • --state: 该参数可以提供组级别的信息
  • --delete: 该参数可以手动删除一个或多个消费者组
  • -reset-offsets: 该参数用于重置消费者组的偏移量,此选项在同一时间支持一个消费者组,同时需要使用--all-topics或--topic指定范围
# 查看消费者组成员
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --members

CONSUMER-ID                                    HOST            CLIENT-ID       #PARTITIONS
consumer1-3fc8d6f1-581a-4472-bdf3-3515b4aee8c1 /127.0.0.1      consumer1       2
consumer4-117fe4d3-c6c1-4178-8ee9-eb4a3954bee0 /127.0.0.1      consumer4       1
consumer2-e76ea8c3-5d30-4299-9005-47eb41f3d3c4 /127.0.0.1      consumer2       3
consumer3-ecea43e4-1f01-479f-8349-f9130b75d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值