RabbitMQ 配置详解

RabbitMQ 配置详解

文章目录

  • RabbitMQ 配置详解
    • 一、核心配置文件 (rabbitmq.conf)
      • 1. 网络与监听配置
      • 2. 节点与集群配置
      • 3. 内存与磁盘配置
    • 二、高级配置 (advanced.config)
      • 1. 队列与消息配置
      • 2. 集群与镜像队列
    • 三、环境变量配置
      • 1. 基础环境变量
      • 2. 性能相关变量
    • 四、插件配置
      • 1. 管理插件
      • 2. MQTT插件
      • 3. STOMP插件
    • 五、TLS/SSL配置
      • 1. 基础SSL配置
      • 2. 高级SSL配置
    • 六、生产环境建议配置
    • 七、配置文件加载顺序

RabbitMQ 是一个开源的消息代理和队列服务器,以下是其核心配置项的详细说明。

一、核心配置文件 (rabbitmq.conf)

1. 网络与监听配置

  • listeners.tcp.default: 默认TCP监听端口

    listeners.tcp.default = 5672
    
  • listeners.ssl.default: SSL监听端口

    listeners.ssl.default = 5671
    
  • management.tcp.port: 管理插件HTTP端口

    management.tcp.port = 15672
    
  • management.ssl.port: 管理插件HTTPS端口

    management.ssl.port = 15671
    

2. 节点与集群配置

  • cluster_name: 集群名称

    cluster_name = production_cluster
    
  • cluster_formation.classic_config.nodes: 集群节点列表

    cluster_formation.classic_config.nodes.1 = rabbit@node1
    cluster_formation.classic_config.nodes.2 = rabbit@node2
    
  • loopback_users: 限制本地访问用户

    loopback_users.guest = false  # 允许guest用户远程访问
    

3. 内存与磁盘配置

  • vm_memory_high_watermark: 内存使用阈值

    vm_memory_high_watermark.absolute = 2GB
    # 或相对值
    vm_memory_high_watermark.relative = 0.6  # 60%的可用内存
    
  • disk_free_limit: 磁盘空间阈值

    disk_free_limit.absolute = 2GB
    # 或相对值
    disk_free_limit.relative = 1.5  # 1.5倍内存大小
    

二、高级配置 (advanced.config)

1. 队列与消息配置

[
  {rabbit, [
    {default_permissions, [<<".*">>, <<".*">>, <<".*">>]},
    {default_user, <<"guest">>},
    {default_pass, <<"guest">>},
    {default_vhost, <<"/">>},
    {default_user_tags, [administrator]},
    %% 队列配置
    {queue_index_embed_msgs_below, 4096},  % 小于此值的消息直接嵌入索引
    {queue_index_max_journal_entries, 32768},  % 日志条目最大值
    %% 消息持久化
    {mirroring_sync_batch_size, 4096},
    {msg_store_io_batch_size, 4096}
  ]}
].

2. 集群与镜像队列

[
  {rabbit, [
    {cluster_partition_handling, autoheal},  % 分区处理策略
    {mirroring_optimize_params, [{max_length, 100000}]}
  ]},
  {rabbitmq_management, [
    {load_definitions, "/etc/rabbitmq/definitions.json"}  % 预加载定义
  ]}
].

三、环境变量配置

1. 基础环境变量

# 节点名称
RABBITMQ_NODENAME=rabbit@node1
# 配置文件路径
RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbitmq.conf
# 高级配置路径
RABBITMQ_ADVANCED_CONFIG_FILE=/etc/rabbitmq/advanced.config
# 插件目录
RABBITMQ_ENABLED_PLUGINS_FILE=/etc/rabbitmq/enabled_plugins

2. 性能相关变量

# Erlang进程限制
RABBITMQ_SERVER_ERL_ARGS="+P 1048576"  # 最大进程数
# 文件描述符限制
ulimit -n 65536  # 建议值

四、插件配置

1. 管理插件

# 管理界面配置
management.tcp.ip = 0.0.0.0
management.tcp.port = 15672
management.http_log_dir = /var/log/rabbitmq/access.log

2. MQTT插件

# MQTT配置
mqtt.default_user = mqttuser
mqtt.default_pass = mqttpass
mqtt.allow_anonymous = false
mqtt.listener.tcp = 1883

3. STOMP插件

# STOMP配置
stomp.listeners.tcp.1 = 61613
stomp.default_user = stompuser
stomp.default_pass = stomppass

五、TLS/SSL配置

1. 基础SSL配置

# SSL监听器
listeners.ssl.default = 5671
ssl_options.cacertfile = /path/to/ca_certificate.pem
ssl_options.certfile = /path/to/server_certificate.pem
ssl_options.keyfile = /path/to/server_key.pem
ssl_options.verify = verify_peer
ssl_options.fail_if_no_peer_cert = true

2. 高级SSL配置

ssl_options.versions.1 = tlsv1.2
ssl_options.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384
ssl_options.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384
ssl_options.honor_cipher_order = true
ssl_options.honor_ecc_order = true

六、生产环境建议配置

  1. 资源规划:

    • 每个节点至少4GB内存
    • 磁盘空间至少是内存的2倍
    • 文件描述符限制设置为65536或更高
  2. 高可用配置:

    # 镜像队列配置
    ha-mode = exactly
    ha-params = 2  # 2个副本
    ha-sync-mode = automatic
    
  3. 监控建议:

    • 启用Prometheus插件

    • 配置告警阈值:

      disk_free_limit.absolute = 5GB
      vm_memory_high_watermark.relative = 0.7
      
  4. 性能优化:

    # 网络调优
    tcp_listen_options.backlog = 4096
    tcp_listen_options.nodelay = true
    # 消息存储优化
    msg_store_io_batch_size = 4096
    queue_index_embed_msgs_below = 4096
    
  5. 安全建议:

    # 禁用默认guest账户或限制其访问
    loopback_users.guest = false
    # 启用SSL
    listeners.ssl.default = 5671
    ssl_options.verify = verify_peer
    

七、配置文件加载顺序

  1. /etc/rabbitmq/rabbitmq.conf (主配置文件)
  2. /etc/rabbitmq/advanced.config (高级Erlang配置)
  3. 环境变量配置
  4. /etc/rabbitmq/conf.d/ 目录下的附加配置
  5. 插件特定配置

配置修改后需要重启RabbitMQ服务才能生效。建议在修改配置前备份原有配置,并在测试环境验证后再应用到生产环境。

© 版权声明

相关文章