RabbitMQ学习-配置

configuration

Posted by zwtisme on March 15, 2019

介绍RabbitMQ中的参数配置。

概要

rabbitmq在启动时会使用很多默认的配置,这些配置一般在开发或测试环境是可以的。当在线上环境时,某些配置可能需要根据实际情况进行调整。

环境变量

rabbitmq的环境变量可用于配置某些服务器参数:节点名称,rabbitmq配置文件位置,节点间通信端口,ErlangVM标志等。rabbitmq的环境变量除了内置的,还可通过shell或rabbitmq-env.conf进行设置。

Tips:变量优先级为,shell>rabbitmq-env.conf>内置

shell环境变量

#局部设置
[root@DEV-HROEx64 mnesia]# RABBITMQ_NODE_PORT=5674 rabbitmq-server -detached
#全局直接设置
[root@DEV-HROEx64 mnesia]# export RABBITMQ_NODE_PORT=5674
#移除设置
[root@DEV-HROEx64 mnesia]# export -n RABBITMQ_NODE_PORT
#全局文件设置
[root@DEV-HROEx64 mnesia]# vim /etc/profile
[root@DEV-HROEx64 mnesia]# 写入配置保存
[root@DEV-HROEx64 mnesia]# source /etc/profile

Tips:变量名需要携带RABBITMQ_前缀。

rabbitmq-env配置文件

配置文件的位置一般固定为${install-prefix}/etc/rabbitmq/rabbitmq-env.conf,如果文件不存在,可手动创建。

Tips:区别于shell的设置,文件中的变量不需要携带RABBITMQ_前缀。

可设置变量

文件及目录相关的配置,$RABBITMQ_HOME为解压的rabbitmq目录。

名称 默认值/说明
RABBITMQ_CONFIG_FILE $RABBITMQ_HOME/etc/rabbitmq/rabbitmq.conf
配置文件路径
RABBITMQ_MNESIA_BASE $RABBITMQ_HOME/var/lib/rabbitmq/mnesia
mnesia数据库路径
RABBITMQ_MNESIA_DIR $RABBITMQ_MNESIA_BASE/$RABBITMQ_NODENAME
节点数据路径
RABBITMQ_LOG_BASE $RABBITMQ_HOME/var/log/rabbitmq
日志路径
RABBITMQ_LOGS $RABBITMQ_LOG_BASE/$RABBITMQ_NODENAME.log
节点日志路径
RABBITMQ_SASL_LOGS $RABBITMQ_LOG_BASE/$RABBITMQ_NODENAME-sasl.log
RABBITMQ_PLUGINS_DIR $RABBITMQ_HOME/plugins
可用组件路径
RABBITMQ_ENABLED_PLUGINS_FILE $RABBITMQ_HOME/etc/rabbitmq/enabled_plugins
已启用组件
RABBITMQ_PID_FILE $RABBITMQ_MNESIA_DIR.pid
pid文件

其他配置

名称 默认值/说明
RABBITMQ_NODE_IP_ADDRESS 空,绑定到所有网络接口
需要绑定到的网络接口
RABBITMQ_NODE_PORT 5672
服务端口
RABBITMQ_DIST_PORT RABBITMQ_NODE_PORT + 20000
节点间和CLI工具通信的端口
RABBITMQ_DISTRIBUTION_BUFFER_SIZE 128000
节点间通信连接的传出数据缓冲区大小(千字节)限制,不要低于64M
RABBITMQ_IO_THREAD_POOL_SIZE 128
用于I / O的线程数,不要使用低于32
RABBITMQ_NODENAME rabbit@$HOSTNAME
节点名称,不同节点名称需唯一
RABBITMQ_CONFIG_FILE $RABBITMQ_HOME/etc/rabbitmq/rabbitmq
主配置文件路径
RABBITMQ_ADVANCED_CONFIG_FILE $RABBITMQ_HOME/etc/rabbitmq/advanced
“高级”配置文件路径
RABBITMQ_CONF_ENV_FILE $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf
环境变量配置路径

配置文件

虽然RabbitMQ中的某些设置可以使用环境变量进行配置,但大多数设置都是使用配置文件配置的,通常名为rabbitmq.conf,包括核心服务器和插件的配置。

配置文件位置

根据不同的安装方式,配置文件一般在/etc/rabbitmq/{rabbit_install_dir}/etc/rabbitmq/,如果不存在的话可手动创建。

在rabbitmq启动时,可在日志文件的顶部查看加载的配置文件路径。

Starting RabbitMQ 3.7.13 on Erlang 20.3
 Copyright (C) 2007-2019 Pivotal Software, Inc.
 Licensed under the MPL.  See http://www.rabbitmq.com/
2019-03-16 13:57:13.007 [info] <0.256.0> 
 node           : rabbit@vagrant
 home dir       : /root
 config file(s) : /usr/local/rabbitmq/etc/rabbitmq/rabbitmq.conf
 cookie hash    : OIhbODu2Q0A6XyOqVBfFrA==
 log(s)         : /usr/local/rabbitmq/var/log/rabbitmq/rabbit@vagrant.log
                : /usr/local/rabbitmq/var/log/rabbitmq/rabbit@vagrant_upgrade.log
 database dir   : /usr/local/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@vagrant

如果开启web管理页面的话,也可以在节点的信息中查看配置文件路径。

image

配置文件格式

在RabbitMQ 3.7.0之前,RabbitMQ配置文件使用Erlang术语配置格式,新版本仍然支持该格式以实现向后兼容性。不过建议运行3.7.0或更高版本的用户考虑新的sysctl格式。

老格式配置示例

[
  {rabbit, [{ssl_options, [{cacertfile,           "/path/to/testca/cacert.pem"},
                           {certfile,             "/path/to/server_certificate.pem"},
                           {keyfile,              "/path/to/server_key.pem"},
                           {verify,               verify_peer},
                           {fail_if_no_peer_cert, true}]}]}
]

新格式配置示例

ssl_options.cacertfile           = /path/to/testca/cacert.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

新格式虽然易于理解与编辑,但是如果需要使用深层嵌套的数据结构来表达配置时,还是需要使用老格式的方式,如LDAP功能

配置查看

可使用rabbitmqctl environment 命令显示当前的有效配置,配置为用户设置的与系统默认配置的合并结果。

可设置变量

rabbitmq.conf配置示例

advanced.config配置示例

参考资料

配置

环境变量配置

文件及目录配置