RabbitMQ 配置
添加用户
在管理台我们,我们需要为刚才的admin配置权限,点名字进去即可,conf/write/read 都配成缺省显示的那个.* 即可。

Rabbitmq的配置文件有三个,位于/etc/rabbitmq/,
这三个文件分别是:
(1)enabled_plugins, 设置允许的插件列表,该配置文档的格式为erlang的列表格式如[rabbitmq_management,rabbitmq_visualiser].
(2)rabbitmq.conf,如果rabbitmq.config不存在,可以手动创建它. 如果你修改了位置,可设置RABBITMQ_CONFIG_FILE 环境变量来指定. Erlang 运行时会自动在此变量值后添加.config扩展名,重启服务器后生效.
(3)rabbitmq-env.conf ,如果
rabbitmq-env.conf不存在, 可在默认位置中手动创建,rabbitmq的环境参数配置
RABBITMQ_NODE_PORT 端口设置,默认为5672
RABBITMQ_NODENAME 节点名称,默认为rabbit
MNESIA_BASE 后端存储目录 ,默认为/var/lib/rabbitmq/mnesia
LOG_BASE 日志目录,默认为/var/log/rabbitmq/
其它参数详情请见:http://www.rabbitmq.com/configure.html
RabbitMQ环境变量
RabbitMQ 环境变量有一个RABBITMQ_前辍. 典型的环境变量RABBITMQ_var_name是按下面进行设置的:
- 如果在 shell环境变量中定义了名为RABBITMQ_var_name的变量,则优先使用此定义;
- 否则,使用 rabbitmq-env.conf中变量名为var_name的定义;
- 否则,使用系统指定的默认值.
文件位置
默认文件位置:
Config file | /etc/rabbitmq/rabbitmq.config (not found) |
Database directory | /var/lib/rabbitmq/mnesia/rabbit@MSBQA02 |
Log file | /var/log/rabbitmq/rabbit@MSBQA02.log |
SASL log file | /var/log/rabbitmq/rabbit@MSBQA02-sasl.log |
你可以设置下面的环境变量来指定相关文件的位置,但大部分人都不必这样做:
名称 | 描述 |
RABBITMQ_BASE | 此基础目录包含了RabbitMQ server的数据库,日志文件的子目录. 另外,也可以独立设置RABBITMQ_MNESIA_BASE 和 RABBITMQ_LOG_BASE 目录. |
RABBITMQ_CONFIG_FILE | 用于配置文件的路径,无.config扩展名. 如果 configuration file 存在,服务器将使用它来配置RabbitMQ组件. 参考 Configuration guide 来了解更多信息. |
RABBITMQ_MNESIA_BASE | 包含RabbitMQ 服务器Mnesia数据库文件子目录的基本目录,除非明确设置了RABBITMQ_MNESIA_DIR目录,否则每个节点都应该配置一个. (除了Mnesia文件,这个位置还包含消息存储和索引文件以及模式和集群的细节.) |
RABBITMQ_MNESIA_DIR | RabbitMQ节点Mnesia数据库文件安放的目录. (除了Mnesia文件,这个位置还包含消息存储和索引文件以及模式和集群的细节.) |
RABBITMQ_LOG_BASE | 用于包含RabbitMQ 服务器日志文件的基本目录, 除非明确设置了RABBITMQ_LOGS 或 RABBITMQ_SASL_LOGS. |
RABBITMQ_LOGS | RabbitMQ 服务器的Erlang日志文件路径.在Window上不能覆盖此变量. |
RABBITMQ_SASL_LOGS | RabbitMQ服务器的Erlang SASL (System Application Support Libraries)日志文件路径. 在Window上不能覆盖此变量. |
RABBITMQ_PLUGINS_DIR | 用于查找插件的目录 . |
RABBITMQ_PLUGINS_EXPAND_DIR | 用于在启动服务器时扩展启用插件的工作目录。 |
RABBITMQ_ENABLED_PLUGINS_FILE | 此文件记录了显式启用的插件。 |
RABBITMQ_PID_FILE | 此文件中包含了rabbitmqctl所等待进程ID的信息. |
参考:http://www.blogjava.net/qbna350816/archive/2016/08/02/431415.aspx
2. 集群配置
(1)手动配置
a)首先在每个节点上启动RabbitMq
host1#rabbitmq-server-detached
host2#rabbitmq-server-detached
host3#rabbitmq-server-detached
此时每个节点自成集群,每个集群只有本节点
可以通过exportRABBITMQ_NAME=xxx 指定节点名称,若不指定默认为rabbit
完整的节点名为xxx@hostname
b)加入集群
让host2 和host3上的rabbitmq节点加入到 host1的rabbitmq集群
使用rabbitmqctl命令对rabbitmq进行操作
加入集群前必须停止当前app,加入后在重启app,过程如下:
host2#rabbitmqctlstop_app
host2#rabbitmqctlcluster rabbit@host1
host2#rabbitmqctlstart_app
host3#rabbitmqctlstop_app
host3#rabbitmqctlcluster rabbit@host1
host3#rabbitmqctlstart_app
关于节点类型(ram |disk)
ram节点的状态保存在内存中,disk节点保存在磁盘中
被加入的节点为disk,如本例中rabbit@host1为disk节点,rabbit@host2,rabbit@host3为ram节点
可以通过rabbitmqctlcluster命令改变加入的集群以及节点类型该命令后可以加多个节点名称,指定的节点就会变成disk节点
如可以将本例中所有节点都改成disk节点
host2#rabbitmqctlstop_app
host2#rabbitmqctlreset
host2#rabbitmqctlcluster rabbit@host1 rabbit@host2
host2#rabbitmqctlstart_app
host3#rabbitmqctlstop_app
host3#rabbitmqctlreset
host3#rabbitmqctlcluster rabbit@host1 rabbit@host3
host3#rabbitmqctlstart_app
(2) 自动配置:
rabbitmq的默认配置脚本为
/etc/rabbitmq/rabbitmq.conf
在其中添加
[
...
{rabbit, [
...
{cluster_nodes,['rabbit@host1', 'rabbit@host2', 'rabbit@host3']},
...
]},
...
].
分别启动每个rabbitmq节点
rabbitmq-detached
rabbitmq就自动组成集群了
注意事项:
1)每个节点的erlangcookie须相同,可以在启动服务器加–setcookie参数设置相同的参数,也可以在home目录下设置相同的.erlang.cookie文件。
2)节点间应该能相互解析,可以通过修改/etc/hosts文件实现