跳转到主要内容
在 AWS、GCP 等云环境,跨 AZ 传输会产生流量费用。使用 AutoMQ 可以规避 Kafka 的生产、消费和服务端副本复制流量。 配置 AutoMQ 节省跨 AZ 流量传输,需要满足如下条件:
  1. 云厂商环境约束 :目前仅建议在AWS、GCP 环境进行多 AZ 部署 时才配置 AutoMQ 多点写入。如果应用架构为单 AZ,或者是其他云厂商(跨 AZ 传输暂不收费)则不建议配置。
  2. 多 AZ 部署约束: 使用 AutoMQ 多点写入架构节省跨 AZ 传输流量,需要应用和 AutoMQ 满足多 AZ 部署。
    1. AZ数量约束: 目前仅支持Producer、Consumer、AutoMQ 进行三 AZ部署,如果 Producer 和 Consumer 多于三 AZ,仍然会产生部分跨 AZ流量。
    2. AZ容量均衡约束: 目前仅支持 AZ均衡部署,即 Producer、Consumer 应用在每个 AZ的容量相同。如果容量不均衡,仍然会产生部分跨 AZ流量。

创建 AutoMQ 实例

使用 AutoMQ 节省跨 AZ 流量传输,首先需要确保创建符合条件的 AutoMQ 实例。具体操作步骤如下:
  1. 登录 AutoMQ BYOC 环境。
  2. 创建实例,网络配置中选择三可用区。WAL 类型选择 S3WAL 或 FSWAL
注意:创建 AutoMQ 实例时, AZ必须和 Kafka 生产者、消费者所在的部署区域一致,并保证所有 AZ内的容量均衡。如果容量不均衡,则可能仍然会产生一定比例的跨 AZ 传输流量。举例:Kafka 生产者、消费者部署在 A、B、C 三个区域,且三个区域的应用容量相同,此时创建 AutoMQ 实例时,也选择 A、B、C 三个区域。

配置映射规则,识别客户端来源 CIDR 所在 Rack

由于 Kafka 协议的限制,服务端无法感知 Client 所属的 Rack。AutoMQ 为了感知 Client 所属的 Rack,避免跨可用区生产消费,提供了客户端配置▸和服务端两种 Rack 配置方式。本章节介绍基于服务端的动态配置方法。 automq.zone.cidr.blocks
在云环境中 Rack 通常设置为 ZoneId,后面提到的 Rack 和 Zone 概念可以互相替换。
automq.zone.cidr.blocks 配置格式如下:

# ex. [email protected]/19,10.0.32.0/19<>[email protected]/19<>[email protected]/19

$zone1@$CIDRBlock1,$CIDRBlock2<>$zone2@$CIDRBlock3<>$zone3@$CIDRBlock4,$CIDRBlock5

  • 不同 Zone 之间的配置用 <> 分隔。
  • 每个 Zone 的配置:首先是 Zone 开头,然后中间是 @ 分隔,后面拼接当前 Zone 的 CIDR 列表。CIDR 列表之间的CIDR 使用 , 分隔。
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