开启跨可用区路由
在收取跨可用区流量费的云(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
配置的格式如下:
-
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
配置格式如下:
-
不同 Zone 之间的配置用
<>
分隔。 -
每个 Zone 的配置:首先是 Zone 开头,然后中间是
@
分隔,后面拼接当前 Zone 的 CIDR 列表。CIDR 列表之间的CIDR 使用,
分隔。
kafka-config.sh
动态更改,命令样例如下:
automq.zone.cidr.blocks
适合的场景:
- Client 所在的 Zone 之间有明确的 CIDR 分段。
- Flink / Spark / Presto 等计算引擎不方便根据负载所在的 Zone 设置不同的 Client 配置。
client.id
> automq.zone.cidr.blocks
> Consumer client.rack
。