RabbitMQ 配置详解_rabbitmq配置
RabbitMQ 配置详解
文章目录
- RabbitMQ 配置详解
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@node1cluster_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, <>}, {default_pass, <>}, {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.0management.tcp.port = 15672management.http_log_dir = /var/log/rabbitmq/access.log
2. MQTT插件
# MQTT配置mqtt.default_user = mqttusermqtt.default_pass = mqttpassmqtt.allow_anonymous = falsemqtt.listener.tcp = 1883
3. STOMP插件
# STOMP配置stomp.listeners.tcp.1 = 61613stomp.default_user = stompuserstomp.default_pass = stomppass
五、TLS/SSL配置
1. 基础SSL配置
# SSL监听器listeners.ssl.default = 5671ssl_options.cacertfile = /path/to/ca_certificate.pemssl_options.certfile = /path/to/server_certificate.pemssl_options.keyfile = /path/to/server_key.pemssl_options.verify = verify_peerssl_options.fail_if_no_peer_cert = true
2. 高级SSL配置
ssl_options.versions.1 = tlsv1.2ssl_options.ciphers.1 = ECDHE-ECDSA-AES256-GCM-SHA384ssl_options.ciphers.2 = ECDHE-RSA-AES256-GCM-SHA384ssl_options.honor_cipher_order = truessl_options.honor_ecc_order = true
六、生产环境建议配置
-
资源规划:
- 每个节点至少4GB内存
- 磁盘空间至少是内存的2倍
- 文件描述符限制设置为65536或更高
-
高可用配置:
# 镜像队列配置ha-mode = exactlyha-params = 2 # 2个副本ha-sync-mode = automatic
-
监控建议:
-
启用Prometheus插件
-
配置告警阈值:
disk_free_limit.absolute = 5GBvm_memory_high_watermark.relative = 0.7
-
-
性能优化:
# 网络调优tcp_listen_options.backlog = 4096tcp_listen_options.nodelay = true# 消息存储优化msg_store_io_batch_size = 4096queue_index_embed_msgs_below = 4096
-
安全建议:
# 禁用默认guest账户或限制其访问loopback_users.guest = false# 启用SSLlisteners.ssl.default = 5671ssl_options.verify = verify_peer
七、配置文件加载顺序
/etc/rabbitmq/rabbitmq.conf
(主配置文件)/etc/rabbitmq/advanced.config
(高级Erlang配置)- 环境变量配置
/etc/rabbitmq/conf.d/
目录下的附加配置- 插件特定配置
配置修改后需要重启RabbitMQ服务才能生效。建议在修改配置前备份原有配置,并在测试环境验证后再应用到生产环境。