Broker 配置
开启跨可用区路由
在收取跨可用区流量费的云(AWS),配置 automq.zonerouter.channels
开启跨可用区路由功能。开启跨可用区路由后,客户端只会连接到同 Zone 的 AutoMQ 节点进行 Produce 和 Consume。以下图为例,假设 AZ2 的 Client 想要发送消费的分区在 AZ1:
-
对于 Producer:AZ2 的 AutoMQ 会作为 AZ1 的 AutoMQ 的 Proxy 节点,将 Produce 请求通过 Rack-Aware Router 代理转发到 AZ1 的 AutoMQ。
-
对于 Consumer:AZ2 的 AutoMQ 直接从 S3 读取已经写入的数据返回给客户端。

automq.zonerouter.channels
配置的格式如下:
automq.zonerouter.channels=0@s3://$bucket?region=$region[&endpoint=$endpoint][&pathStyle=$enablePathStyle][&authType=$authType][&accessKey=$accessKey][&secretKey=$secretKey][&batchInterval=250][&maxBytesInBatch=8388608]
配置由两部分组成:
-
Channel 连接信息:
$bucket?region=$region[&endpoint=$endpoint][&pathStyle=$enablePathStyle][&authType=$authType][&accessKey=$accessKey][&secretKey=$secretKey]
-
Channel 攒批设置:默认 Proxy 节点 250ms (
batchInterval=250
)或 8MiB(maxBytesInBatch=8388608
)攒一批 Produce 请求路由到 Main 节点。配置的值越大,S3 API 调用成本越低,但跨可用区写入延迟越高。反之,设置的值越大,S3 API 调用成本越高,但跨可用区写入延迟越低。
配置映射规则,识别客户端来源 CIDR 所在 Rack
由于 Kafka 协议的限制,服务端无法感知 Client 所属的 Rack。AutoMQ 为了感知 Client 所属的 Rack,避免跨可用区生产消费,提供了客户端配置▸和服务端两种 Rack 配置方式。本章节介绍基于服务端的动态配置方法。 automq.zone.cidr.blocks
。
在云环境中 Rack 通常设置为 ZoneId,后面提到的 Rack 和 Zone 概念可以互相替换。
automq.zone.cidr.blocks
配置格式如下:
# ex. us-east-1a@10.0.0.0/19,10.0.32.0/19<>us-east-1b@10.0.64.0/19<>us-east-1c@10.0.96.0/19
$zone1@$CIDRBlock1,$CIDRBlock2<>$zone2@$CIDRBlock3<>$zone3@$CIDRBlock4,$CIDRBlock5
-
不同 Zone 之间的配置用
<>
分隔。 -
每个 Zone 的配置:首先是 Zone 开头,然后中间是
@
分隔,后面拼接当前 Zone 的 CIDR 列表。CIDR 列表之间的CIDR 使用,
分隔。
该配置可以通过 kafka-config.sh
动态更改,命令样例如下:
./bin/kafka-configs.sh --broker-defaults --add-config automq.zone.cidr.blocks=$config_value --alter --bootstrap-server $bootstrap_server
AutoMQ 会根据 Client 连接的 IP 依次根据 CIDR 匹配出 Client 所属的 Zone。服务端配置 automq.zone.cidr.blocks
适合的场景:
-
Client 所在的 Zone 之间有明确的 CIDR 分段。
-
Flink / Spark / Presto 等计算引擎不方便根据负载所在的 Zone 设置不同的 Client 配置。
若同时设置了服务端配置和客户端配置,那么配置优先级为: client.id
> automq.zone.cidr.blocks
> Consumer client.rack
。