Skip to content

RobustMQ 配置文件通用指南

概述

RobustMQ 使用 TOML 格式的配置文件来管理系统配置。配置文件位于 config/ 目录下,主要配置文件为 server.toml

配置文档导航


配置文件结构

主配置文件

  • config/server.toml - 主要配置文件
  • config/server.toml.template - 配置模板文件
  • config/server-tracing.toml - 日志追踪配置

配置加载优先级

  1. 命令行参数
  2. 环境变量
  3. 配置文件
  4. 默认值

基础配置

集群基础信息

toml
# 集群名称
cluster_name = "robust_mq_cluster_default"

# 节点 ID
broker_id = 1

# 节点角色
roles = ["meta", "broker", "journal"]

# gRPC 端口
grpc_port = 1228

# 元数据中心地址
[meta_addrs]
1 = "127.0.0.1:1228"

配置说明

配置项类型默认值说明
cluster_namestring"robust_mq_cluster_default"集群名称,集群内所有节点必须相同
broker_idu641节点唯一标识符
rolesarray["meta", "broker"]节点角色:meta(元数据)、broker(MQTT)、journal(日志)
grpc_portu321228gRPC 服务端口
meta_addrstable{1 = "127.0.0.1:1228"}元数据中心节点地址映射

运行时配置

Runtime 配置

toml
[runtime]
runtime_worker_threads = 4    # 运行时工作线程数
tls_cert = "./config/certs/cert.pem"  # TLS 证书路径
tls_key = "./config/certs/key.pem"    # TLS 私钥路径

Network 配置

toml
[network]
accept_thread_num = 1         # 接受连接线程数
handler_thread_num = 1        # 处理线程数  
response_thread_num = 1       # 响应线程数
queue_size = 1000            # 队列大小
lock_max_try_mut_times = 30   # 锁最大尝试次数
lock_try_mut_sleep_time_ms = 50  # 锁尝试睡眠时间(毫秒)

配置说明

配置项类型默认值说明
runtime_worker_threadsusize自动检测Tokio 运行时工作线程数
tls_certstring"./config/certs/cert.pem"TLS 证书文件路径
tls_keystring"./config/certs/key.pem"TLS 私钥文件路径
accept_thread_numusize1接受新连接的线程数
handler_thread_numusize1处理请求的线程数
response_thread_numusize1发送响应的线程数
queue_sizeusize1000内部队列大小

存储配置

RocksDB 配置

toml
[rocksdb]
data_path = "./data"          # 数据存储路径
max_open_files = 10000       # 最大打开文件数

配置说明

配置项类型默认值说明
data_pathstring"./data"RocksDB 数据存储目录
max_open_filesi3210000RocksDB 最大打开文件数

监控配置

Prometheus 配置

toml
[prometheus]
enable = true                 # 是否启用 Prometheus 指标
port = 9090                  # Prometheus 指标端口

PProf 配置

toml
[p_prof]
enable = false               # 是否启用性能分析
port = 6060                 # PProf 服务端口
frequency = 100             # 采样频率

配置说明

配置项类型默认值说明
prometheus.enablebooltrue是否启用 Prometheus 指标收集
prometheus.portu329090Prometheus 指标暴露端口
p_prof.enableboolfalse是否启用 PProf 性能分析
p_prof.portu166060PProf 服务端口
p_prof.frequencyi32100PProf 采样频率

日志配置

Log 配置

toml
[log]
log_config = "./config/server-tracing.toml"  # 日志配置文件路径
log_path = "./data/broker/logs"              # 日志输出目录

配置说明

配置项类型默认值说明
log_configstring"./config/broker-tracing.toml"日志追踪配置文件路径
log_pathstring"./logs"日志文件输出目录

环境变量覆盖

RobustMQ 支持使用环境变量覆盖配置文件中的设置。环境变量命名规则:

命名规则

{PREFIX}_{SECTION}_{KEY}

示例

bash
# 覆盖集群名称
export ROBUSTMQ_CLUSTER_NAME="my-cluster"

# 覆盖 MQTT TCP 端口
export ROBUSTMQ_MQTT_SERVER_TCP_PORT=1884

# 覆盖日志路径
export ROBUSTMQ_LOG_LOG_PATH="/var/log/robustmq"

# 覆盖 Prometheus 端口
export ROBUSTMQ_PROMETHEUS_PORT=9091

环境变量优先级

环境变量的值会覆盖配置文件中的对应设置,优先级高于配置文件。


配置文件示例

基本配置示例

toml
# 基础配置
cluster_name = "production-cluster"
broker_id = 1
roles = ["meta", "broker"]
grpc_port = 1228

# 元数据中心地址
[placement_center]
1 = "192.168.1.10:1228"
2 = "192.168.1.11:1228" 
3 = "192.168.1.12:1228"

# 运行时配置
[runtime]
runtime_worker_threads = 8
tls_cert = "./config/certs/prod-cert.pem"
tls_key = "./config/certs/prod-key.pem"

# 网络配置
[network]
accept_thread_num = 4
handler_thread_num = 8
response_thread_num = 4
queue_size = 2000

# 存储配置
[rocksdb]
data_path = "/data/robustmq"
max_open_files = 20000

# 监控配置
[prometheus]
enable = true
port = 9090

# 日志配置
[log]
log_config = "./config/production-tracing.toml"
log_path = "/var/log/robustmq"

配置验证

配置文件语法检查

bash
# 检查 TOML 语法
cargo run --bin config-validator config/server.toml

常见配置错误

  1. TOML 语法错误 - 缺少引号、括号不匹配等
  2. 端口冲突 - 多个服务使用相同端口
  3. 路径不存在 - 证书文件、日志目录不存在
  4. 权限问题 - 数据目录没有写权限

最佳实践

生产环境配置建议

  1. 安全性:

    • 使用强密码和证书
    • 限制网络访问权限
    • 启用 TLS 加密
  2. 性能优化:

    • 根据硬件配置调整线程数
    • 合理设置队列大小
    • 优化存储路径配置
  3. 监控和日志:

    • 启用 Prometheus 监控
    • 配置合适的日志级别
    • 设置日志轮转策略
  4. 高可用性:

    • 配置多个元数据中心节点
    • 设置合适的心跳超时时间
    • 配置数据备份策略

故障排除

常见问题

  1. 配置加载失败 - 检查 TOML 语法和文件路径
  2. 端口绑定失败 - 检查端口是否被占用
  3. 证书加载失败 - 检查证书文件路径和格式
  4. 存储初始化失败 - 检查数据目录权限和磁盘空间

调试方法

  1. 启用详细日志输出
  2. 检查配置加载日志
  3. 使用配置验证工具
  4. 查看系统资源使用情况

文档版本: v1.0
最后更新: 2024-01-01
基于代码版本: RobustMQ v0.1.31