本文旨在解释 AutoMQ 部署过程中涉及的配置参数,包括配置定义、描述、设置范围和规范等,以帮助开发者在生产环境中进行必要的自定义调整。
AutoMQ 是存算分离版的 Apache Kafka,所以支持 Apache Kafka 除多副本存储之外的所有的参数,这部分参数本文档并未列出,可参考官方配置文档。
公共配置
elasticstream.enable
列表项
| 说明
|
---|
配置描述
| 是否启动 AutoMQ,该参数必须设置为 true。
|
值类型
| boolean
|
默认值
| false
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
s3.endpoint
s3.region
列表项
| 说明
|
---|
配置描述
| 对象存储服务的的地域标识,参考云厂商文档,例如 us-east-1。
|
值类型
| string
|
默认值
| null
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
s3.bucket
列表项
| 说明
|
---|
配置描述
| 对象存储 bucket,用于保存消息。
|
值类型
| string
|
默认值
| null
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
s3.path.style
列表项
| 说明
|
---|
配置描述
| 是否启用对象存储路径格式。当使用 MinIO 作为存储服务时,必须设置为 true。
|
值类型
| boolean
|
默认值
| false
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
S3Stream 相关配置
s3.wal.path
列表项
| 说明
|
---|
配置描述
| 用于存储本地 WAL 的块存储设备挂载路径,例如 /dev/xxx 或者其他路径。
|
值类型
| string
|
默认值
| null
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
s3.wal.capacity
列表项
| 说明
|
---|
配置描述
| AutoMQ 的本地 WAL(Write-Ahead Logging)的大小。该配置决定了在数据上传到对象存储之前,可以写入缓冲区的最大数据量。更大的容量可以容忍对象存储中更多的写入抖动。
|
值类型
| long,单位为 byte
|
默认值
| 2147483648
|
合法输入范围
| [10485760, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.wal.cache.size
列表项
| 说明
|
---|
配置描述
| WAL(预写日志)缓存是一个FIFO(先进先出)队列,其中包含尚未上传到对象存储的数据,以及已经上传但尚未从缓存中逐出的数据。当尚未上传的缓存数据填满整个容量时,存储将会对后续请求产生回压,直到完成数据上传。默认情况下,它会根据内存设置一个合理的值。
|
值类型
| long,单位为 byte
|
默认值
| -1,由程序自动设置合适的参数值
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.wal.iops
列表项
| 说明
|
---|
配置描述
| 数据在写入 WAL 时,会进行攒批,以一定的频率持久化写入到 WAL 盘当中。该配置项决定了数据写入 WAL 的频次,配置值越高,每秒写入次数增多,延迟减少。然而,各种块设备的 IOPS 性能各不相同,如果设定值超出了设备 IOPS 的上限,可能会由于排队引起延迟增高。
|
值类型
| int,单位为 iops
|
默认值
| 3000
|
合法输入范围
| [1, ...]
|
重要级别
| 高,建议设置为 WAL 盘实际可用的 IOPS 数值
|
s3.wal.upload.threshold
列表项
| 说明
|
---|
配置描述
| 触发 WAL 向对象存储上传的阈值。配置值需要小于 s3.wal.cache.size。配置值越大,数据聚合度越高,元数据存储的成本越低。默认情况下,它会根据内存设置一个合理的值。
|
值类型
| long,单位为 byte
|
默认值
| -1,由程序自动设置合适的参数值
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.block.cache.size
列表项
| 说明
|
---|
配置描述
| s3.block.cache.size 是 block cache 的大小。block cache 用于缓存从对象存储读取的冷数据。建议将此配置项设置为大于 4MB * 每个分区的并发冷读数,以实现更好的冷读性能。默认情况下,它会根据内存设置一个合理的值。
|
值类型
| long,单位为 byte
|
默认值
| -1,由程序自动设置合适的参数值
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.object.compaction.interval.minutes
列表项
| 说明
|
---|
配置描述
| Stream object 进行 compaction 的间隔周期。间隔越大,API调用的成本越低,但它增加了元数据存储的规模。
|
值类型
| int,单位是分钟
|
默认值
| 30
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.object.compaction.max.size.bytes
列表项
| 说明
|
---|
配置描述
| Stream object compaction 允许合成的对象的最大大小。这个值越大,API调用的成本越高,但元数据存储的规模越小。
|
值类型
| long,单位为 byte
|
默认值
| 1073741824
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.set.object.compaction.interval.minutes
列表项
| 说明
|
---|
配置描述
| 设置 stream object compaction 的间隔。这个值越小,元数据存储的规模就越小,数据变得紧凑的时间也会更早。然而,最终生成的流对象经历的压缩次数会增加。
|
值类型
| int,单位是分钟
|
默认值
| 20
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.set.object.compaction.cache.size
列表项
| 说明
|
---|
配置描述
| 在 stream object compaction 过程中可用的内存大小。这个值越大,API调用的成本越低。
|
值类型
| long,单位是 byte
|
默认值
| 209715200
|
合法输入范围
| [1048576, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.set.object.compaction.stream.split.size
列表项
| 说明
|
---|
配置描述
| 在 Stream object compaction 过程中,如果单个 Stream 中的数据量超过此阈值,这个 Stream 的数据将直接被分割并写入单个 Stream 对象。这个值越小,数据从 Stream set object 中分割的时间就越早,Stream object compaction 的后续 API 调用成本就越低,但是分割的 API 调用成本就越高。
|
值类型
| long,单位为 byte
|
默认值
| 8388608
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.set.object.compaction.max.num
列表项
| 说明
|
---|
配置描述
| 一次最多可以压缩的 stream set object 的数量。
|
值类型
| int
|
默认值
| 500
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.network.baseline.bandwidth
列表项
| 说明
|
---|
配置描述
| 对象存储请求的总可用带宽。这是用来防止 stream set object compaction 和追赶读取占据正常读写流量。生产和消费也会分别消耗进出流量。 例如,假设这个值设置为100MB/s,而正常的读写流量是80MB/s,那么用于 stream set object compaction 的可用流量就是 20MB/s。
|
值类型
| long,单位为 byte/s
|
默认值
| 104857600
|
合法输入范围
| [1, ...]
|
重要级别
| 低,设置相对宽泛
|
s3.stream.allocator.policy
列表项
| 说明
|
---|
配置描述
| S3Stream 内存分配器策略。请注意,当配置为使用DIRECT内存时,需要修改虚拟机选项中的堆大小(例如,-Xmx)和直接内存大小(例如,-XX:MaxDirectMemorySize)。您可以通过环境变量KAFKA_HEAP_OPTS来设置它们。
|
值类型
| string
|
默认值
| POOLED_HEAP
|
合法输入范围
| POOLED_HEAP, POOLED_DIRECT
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.metrics.enable
列表项
| 说明
|
---|
配置描述
| 是否开启 OTel metrics exporter。
|
值类型
| boolean
|
默认值
| true
|
合法输入范围
| true, false
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.metrics.level
列表项
| 说明
|
---|
配置描述
| 设置记录 Metrics 的级别。 "INFO"级别包括大多数用户应该关心的指标,例如常见流操作的吞吐量和延迟。"DEBUG"级别包括有助于诊断的详细指标,例如写入底层块设备时不同阶段的延迟。
|
值类型
| string
|
默认值
| INFO
|
合法输入范围
| INFO, DEBUG
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.metrics.exporter.type
列表项
| 说明
|
---|
配置描述
| Metrics exporter 类型列表:
- "otlp"类型将使用OTLP协议将度量导出到后端服务。
- "prometheus"类型将启动一个内置的HTTP服务器,允许Prometheus后端从中抓取度量。
|
值类型
| list
|
默认值
| null
|
合法输入范围
| otlp, prometheus
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.exporter.report.interval.ms
列表项
| 说明
|
---|
配置描述
| 设置 Metrics 导出的时间间隔。
|
值类型
| int,单位是毫秒
|
默认值
| 30000
|
合法输入范围
| N/A
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.exporter.otlp.protocol
列表项
| 说明
|
---|
配置描述
| OTLP exporter 使用的传输协议。
|
值类型
| string
|
默认值
| grpc
|
合法输入范围
| grpc, http
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.exporter.otlp.endpoint
列表项
| 说明
|
---|
配置描述
| 使用 OTLP Exporter 时,后端服务暴露的地址。
|
值类型
| string
|
默认值
| null
|
合法输入范围
| N/A
|
重要级别
| 低,设置相对宽泛
|
s3.telemetry.exporter.otlp.compression.enable
列表项
| 说明
|
---|
配置描述
| OTLP exporter 是否启用数据压缩,如果开启,OTLP 会使用 gzip 压缩算法压缩 Metrics。
|
值类型
| boolean
|
默认值
| false
|
合法输入范围
| true, false
|
重要级别
| 低,设置相对宽泛
|
s3.metrics.exporter.prom.host
列表项
| 说明
|
---|
配置描述
| 用于透出 OTel Metrics 的内置 Prometheus HTTP server 地址。
|
值类型
| string
|
默认值
| null
|
合法输入范围
| N/A
|
重要级别
| 低,设置相对宽泛
|
s3.metrics.exporter.prom.port
列表项
| 说明
|
---|
配置描述
| 用于透出 OTel Metrics 的内置 Prometheus HTTP server 端口。
|
值类型
| int
|
默认值
| 0
|
合法输入范围
| N/A
|
重要级别
| 低,设置相对宽泛
|
持续数据重平衡配置
metric.reporters
列表项
| 说明
|
---|
配置描述
| metrics reporters 的类列表。实现org.apache.kafka.common.metrics.MetricsReporter接口可以实现动态加载新的 Metrics。JmxReporter总是被包含在内,以注册JMX统计信息。要启用自动平衡(AutoBalancing),metric.reporters必须包含kafka.autobalancer.metricsreporter.AutoBalancerMetricsReporter。
|
值类型
| list
|
默认值
| ""
|
合法输入范围
| N/A
|
重要级别
| 低,设置相对宽泛
|
autobalancer.reporter.metrics.reporting.interval.ms
列表项
| 说明
|
---|
配置描述
| Metrics Reporter 上报数据的间隔。
|
值类型
| long,单位是毫秒
|
默认值
| 10000
|
合法输入范围
| [1000, ...]
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.enable
列表项
| 说明
|
---|
配置描述
| 是否启用自动重平衡。
|
值类型
| boolean
|
默认值
| false
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.anomaly.detect.interval.ms
列表项
| 说明
|
---|
配置描述
| Controller 检查是否需要进行数据重平衡的最小间隔。下一次重平衡的实际时间也取决于已经被重新分配的分区的数量。降低最小检查间隔可以提高数据重新平衡的灵敏度。该值应大于 broker metrics的上报间隔,以防止控制器错过最近重新分配的结果。
|
值类型
| long,单位是毫秒
|
默认值
| 60000
|
合法输入范围
| [1, ...]
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.metrics.delay.ms
列表项
| 说明
|
---|
配置描述
| 当 Controller 执行负载均衡时,如果broker的最新 Metrics 延迟超过了配置的值,那么broker将因为其同步状态滞后而被排除。这个配置不应该小于broker metrics 报告的间隔。
|
值类型
| long,单位是毫秒
|
默认值
| 60000
|
合法输入范围
| [1, ...]
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.goals
列表项
| 说明
|
---|
配置描述
| 重平衡优化的目标设置。
|
值类型
| list
|
默认值
| kafka.autobalancer.goals.NetworkInUsageDistributionGoal,kafka.autobalancer.goals.NetworkOutUsageDistributionGoal
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.network.in.usage.distribution.detect.threshold
列表项
| 说明
|
---|
配置描述
| NetworkInUsageDistributionGoal的检测阈值。如果一个 broker 的写入带宽低于这个配置值,那么这个broker将不会被主动安排进行重平衡。
|
值类型
| long,单位是 byte/s
|
默认值
| 1048576
|
合法输入范围
| [1, ...]
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.network.out.usage.distribution.detect.threshold
列表项
| 说明
|
---|
配置描述
| NetworkOutUsageDistributionGoal的检测阈值。如果一个 broker 的读取带宽低于这个配置值,那么这个broker将不会被主动安排进行重平衡。
|
值类型
| long,单位是 byte/s
|
默认值
| 1048576
|
合法输入范围
| [1, ...]
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.network.in.distribution.detect.avg.deviation
列表项
| 说明
|
---|
配置描述
| 这个配置项定义了平均写入带宽的可接受偏差范围。默认值为0.2,这意味着预期的网络流量范围将是[0.8 * loadAvg, 1.2 * loadAvg]。
|
值类型
| double
|
默认值
| 0.2
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.network.out.distribution.detect.avg.deviation
列表项
| 说明
|
---|
配置描述
| 这个配置项定义了平均读取带宽的可接受偏差范围。默认值为0.2,这意味着预期的网络流量范围将是[0.8 * loadAvg, 1.2 * loadAvg]。
|
值类型
| double
|
默认值
| 0.2
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.exclude.topics
列表项
| 说明
|
---|
配置描述
| 需要排除,不进行数据重平衡的 Topic 列表。
|
值类型
| list
|
默认值
| ""
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|
autobalancer.controller.exclude.broker.ids
列表项
| 说明
|
---|
配置描述
| 需要排除,不进行数据重平衡的 Broker Id 列表。
|
值类型
| list
|
默认值
| ""
|
合法输入范围
| N/A
|
重要级别
| 高,需要谨慎配置
|