rabbitmq 集群搭建 单机多实例版

rabbitmq 是一个开源的AMQP实现,用ERLANG编写,由于erlang天生支持分布式高并发的语言,这也是rabbitmq被许多开发者所喜爱。

AMQP概念,这里不做介绍,可以google一下,概念很重要,概念很重要,概念很重要,重要的事说三遍。

下面开始集群搭建,rabbitmq集群分为单机,伪集群(单机多实例),集群(多机多实例),很多开发者想自己搭建一个集群,来测试一些mq特性。

本文主要介绍伪集群方式,也就是在一台虚拟机上,搭建rabbitmq多实例,然后建立集群连接。而正规集群方式,其实都差不多。

单机多实例集群搭建开始

三个节点目录结构
备注:节点目录结构可自己创建,按照自己的习惯而已。

节点1:
path1 = /usr/local/software/rabbitmq/rabbitmq_server/

节点2:
path2 = /usr/local/software/rabbitmq/rabbitmq_server1/

节点3:
path3 = /usr/local/software/rabbitmq/rabbitmq_server2/

配置文件目录:
分别在三个节点下创建配置文件:

例如,节点2创建配置文件:
在这个路径下: /usr/local/software/rabbitmq/rabbitmq_server/etc/rabbitmq/
**创建配置文件:rabbitmq.conf、rabbitmq-env.conf**
创建后的文件应该显示如下
    [root@bogon rabbitmq]# pwd
    /usr/local/software/rabbitmq/rabbitmq_server1/etc/rabbitmq
    [root@bogon rabbitmq]# ll
    总用量 12
    -rw-r--r--. 1 root root 23 6月  11 21:55 enabled_plugins
    -rw-r--r--. 1 root root 58 6月  11 21:37 rabbitmq.conf
    -rw-r--r--. 1 root root 45 6月  11 21:37 rabbitmq-env.conf

默认paht/etc/rabbitmq这个目录下是没有这这两个配置文件的,需手动创建
** touch rabbitmq-env.conf**
rabbitmq-env.conf内容如下:
         NODE_PORT=5673
         NODENAME=rabbitmq-node1

** touch rabbitmq.config**
rabbitmq.config内容如下:
[ {rabbitmq_management, [{listener, [{port, 15673}]}]} ].

其它的节点目录下,可以都创建一下,或者cp过去也可以,但是要注意更改两个地方,一是NODE_PORT=5673更改端口,还有一个你也猜到了port, 15673需要更改。

检查一下,三个节点下是否都有这两个配置文件

**修改hosts文件:**
由于本机搭建是伪集群,所以不用配置 .erlang.cookie,只需配置本机的hosts文件
修改前需要知道本机的Hostname值:
[root@bogon rabbitmq]# hostname
bogon

修改host文件:
vim /etc/hosts
加入配置,ip则是本机ip,bogon是hostname,rabbtmq-node1则是节点名称:
10.1.1.1 rabbitmq-node1@bogon
10.1.1.1 rabbitmq-node2@bogon
10.1.1.1 rabbitmq-node3@bogon

**关键节点**
启动节点1
./rabbitmq_server1/sbin/rabbitmq-server -detached  (-detached 是后台启动方式)

启动节点2:
./rabbitmq_server2/sbin/rabbitmq-server -detached  
停止节点服务,但不是节点down了。
cd root路径下:
./rabbitmq_server2/sbin/rabbitmqctl stop_app
./rabbitmq_server2/sbin/rabbitmqctl reset (重置节点,担心此节点加入过其他的集群)
./rabbitmq_server2/sbin/rabbitmqctl  join_cluster --ram rabbitmq-node1@bogon 
./rabbitmq_server2/sbin/rabbitmqctl start_app (重启节点恢复应用)

此时查看节点状态:
[root@bogon rabbitmq]# ./rabbitmq_server/sbin/rabbitmqctl cluster_status
Cluster status of node 'rabbitmq-node1@bogon' ...
[{nodes,[{disc,['rabbitmq-node1@bogon']},{ram,['rabbitmq-node2@bogon']}]},
 {running_nodes,['rabbitmq-node2@bogon','rabbitmq-node1@bogon']},
 {cluster_name,<<"rabbitmq-node1@bogon">>},
 {partitions,[]},
 {alarms,[{'rabbitmq-node2@bogon',[]},{'rabbitmq-node1@bogon',[]}]}]

 会发现节点两个节点已经是集群了,'rabbitmq-node1'节点是磁盘节点,'rabbitmq-node2'是内存节点

启动节点3:
重复节点2的启动步骤,成功加入到集群里。

这样集群就基本搭建完了。

问题:
1、第一次登陆rabbitmq_management图形化界面,登陆不进去?
如果你安装了图形化界面工具,rabbitmq_management,可以访问对应的节点。
第一次访问的时候,默认用户名和密码都是guest,guest,默认事localhost,那么我们用

授权,新建用户设置。
cd  /usr/local/software/rabbitmq/rabbitmq_server1/sbin这个目录
sh rabbitmqctl add_user admin admin
sh rabbitmqctl list_users
sh rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" 
sh rabbitmqctl list_permissions -p /
sh rabbitmqctl set_user_tags  admin administrator
sh rabbitmqctl list_users

这样就可以进入到页面里,用户名admin,密码admin
,可以试试其它的节点下,创建用户。

查看rabbitmq_management页面;

rabbitmq 集群搭建 单机多实例版

猜你喜欢

转载自blog.51cto.com/shangdc/2128395