1、实验环境
3
|
rabbitmq-node1.com192.168.1.112
rabbitmq-node2.com192.168.1.113
rabbitmq-node3.com192.168.1.128
|
2、配置前检查同步时间
3、注意一定要修改hosts
192.168.1.112 rabbitmq-node1.com rabbitmq-node1
192.168.1.113 rabbitmq-node2.com rabbitmq-node2
192.168.1.128 rabbitmq-node3.com rabbitmq-node3
|
4、安装erlang
5、安装rabbitqmq
[root@rabbitmq-node1 ~]
Starting rabbitmq-server: SUCCESS
rabbitmq-server.
|
6、安装插件管理界面
查看管理端口有没有启动:
浏览器打开http://IP:55672 账号密码都是guest
注意:rabbitmq从3.3.0开始禁止使用guest/guest权限通过除localhost外的访问。
如果想使用guest/guest通过远程机器访问,需要在rabbitmq配置文件中(/etc/rabbitmq/rabbitmq.config)中设置loopback_users为[]。
/etc/rabbitmq/rabbitmq.config文件完整内容如下(注意后面的半角句号):
[{rabbit, [{loopback_users, []}]}].
7、rabbitmq集群配置
(1)设置每个节点Cookie
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信
(2)停止所有节点RabbitMQ服务,然后使用detached参数独立运行,这步很关键,尤其增加节点停止节点后再次启动遇到无法启动都可以参照这个顺序
[root@rabbitmq-node3 ~]
[root@rabbitmq-node2 ~]
[root@rabbitmq-node1 ~]
|
(3)关于节点类型(ram |disk)
ram节点的状态保存在内存中,disk节点保存在磁盘中被加入的节点为disk,如本例中rabbit@host2为ram节点,rabbit@host1,rabbit@host3为ram节点,可以通过rabbitmqctl cluster命令改变加入的集群以及节点类型该命令后可以加多个节点名称,指定的节点就会变成disk节点
[root@rabbitmq-node3 ~]
[root@rabbitmq-node3 ~]
[root@rabbitmq-node3 ~]
[root@rabbitmq-node3 ~]
[root@rabbitmq-node3 ~]
指定为
ram
[root@rabbitmq-node2 ~]
[root@rabbitmq-node2 ~]
[root@rabbitmq-node2 ~]
[root@rabbitmq-node2 ~]
指定为disc
[root@rabbitmq-node1 ~]
[root@rabbitmq-node1 ~]
[root@rabbitmq-node1 ~]
[root@rabbitmq-node1 ~]
|
(4)自动配置集群,默认文件是没有的,如果需要必须手动创建
[root@rabbitmq-node1 ~]
[
...
{rabbit, [
...
{cluster_nodes, [
'rabbit@rabbitmq-node1'
,
'rabbit@rabbitmq-node2'
,
'rabbit@rabbitmq-node3'
]},
...
]},
...
].
[root@rabbitmq-node1 ~]
RABBITMQ_MNESIA_BASE=
/var/lib/rabbitmq///
需要使用的MNESIA数据库的路径
RABBITMQ_LOG_BASE=
/var/log/rabbitmq///log
的路径
RABBITMQ_PLUGINS_DIR=
/usr/lib/rabbitmq/lib/rabbitmq_server-2
.8.6
/plugins//
插件的路径
|
(5)启动后就自动加入集群了
[root@rabbitmq-node1 ~]
[root@rabbitmq-node1 ~]
Cluster status of node
'rabbit@rabbitmq-node1'
...
[{nodes,[{disc,[
'rabbit@rabbitmq-node1'
,
'rabbit@rabbitmq-node3'
]},
{
ram
,[
'rabbit@rabbitmq-node2'
]}]},
{running_nodes,[
'rabbit@rabbitmq-node2'
,
'rabbit@rabbitmq-node3'
,
'rabbit@rabbitmq-node1'
]}]
...
done
.
|
(6)在浏览器中可以看到所有节点的信息,如果其他节点信息没有显示启用web管理就好,注意这个地方的端口也可能是 15672,所以如果55672端口不行的话就换15672试试