介绍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管理页面的话,也可以在节点的信息中查看配置文件路径。
配置文件格式
在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
命令显示当前的有效配置,配置为用户设置的与系统默认配置的合并结果。