kafka资源进行物理隔离

实际场景

在创建kafka的topic时,一般会指定partition以及其副本数,kafka会自动将这些partiton分配到不同的broker上。但是有时候想对每个topic使用的机器进行物理隔离,也就是说,某个topic只能使用kafka集群中的某些broker机器。这样就把每个topic需要的资源从broker级别进行了隔离。

实现方式

在创建topic的时候可以指定replica-assignment参数。本文基于HDP 2.5.0.0-1245版本。

  1. 查看每个broker的id,登录zk在/brokers/ids中记录了所有broker的id,通过get命令,例如get /brokers/ids/1008可以知道id对应的host

  2. 创建topic的时候加上replica-assignment参数,后面的值用逗号分隔每个partition,每个partition中冒号分隔副本所在的broker。例如通过下面的命令创建一个topic。

./kafka-topics.sh --zookeeper hostA:2181  --create --topic xt0 --replica-assignment 1008:1001,1007:1002
  1. 参看创建之后的partition分布,partition0的leader是1008,副本在1008和1001,partition1也是和预期的一致。
./kafka-topics.sh --describe --zookeeper hostA:2181 --topic xt0

Topic:xt0       PartitionCount:2        ReplicationFactor:2     Configs:
        Topic: xt0      Partition: 0    Leader: 1008    Replicas: 1008,1001     Isr: 1008,1001
        Topic: xt0      Partition: 1    Leader: 1007    Replicas: 1007,1002     Isr: 1007,1002

你可能感兴趣的:(kafka资源进行物理隔离)