环境:
四台centOS操作系统服务器192.168.0.73,192.168.0.74,192.168.0.75,192.168.0.76
1 在每台服务器上按照如下步骤安装rabbitMQ
1.1 rabbitMQ是基于erlang语言开发的,因此先安装erlang
执行命令:
yum install erlang
1.2 安装rabbitMQ
分别执行命令
1 wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.0/rabbitmq-server-3.5.0-1.noarch.rpm 2 rpm -ivh rabbitmq-server-3.5.0-1.noarch.rpm
1.3 安装完成后以服务的方式启动rabbitMQ,并验证相关进程是否运行正常
1 service rabbitmq-server start 2 ps -ef | grep rabbitmq
1.4 如果需要使用webUI管理,执行一下命令安装插件;完成后重启rabbitMQ
1 rabbitmq-plugins enable rabbitmq_management 2 service rabbitmq-server restart
1.5 通过webUI登录地址http://192.168.0.73:15672 默认用户名和密码都是guest
guest账户默认只允许通过localhost登录,出现无法登录时通过修改配置文件即可解决
vim /etc/rabbitmq/rabbitmq.config
写入[{rabbit, [{loopback_users, []}]}]. 保存即可
2 集群搭建
这里所采用的四台rabbitMQ服务器的hostname分别是queue-01,queue-02,queue-03,queue-04;hostname可通过
1 cat /proc/sys/kernel/hostname
命令查看
2.1 停止所有节点的rabbitMQ服务
service rabbitmq-server stop
2.2 分别在四台机器的/etc/hosts文件中加入如下内容,指定queue-01,queue-02,queue-03,queue-04的host。
192.168.0.73 queue-01 192.168.0.74 queue-02 192.168.0.75 queue-03 192.168.0.76 queue-04
2.3 以queue-01为基础,同步每个节点的.erlang.cookie文件(以queue-02为例),具体原因请参考:http://www.cnblogs.com/flat_peach/archive/2013/04/07/3004008.html
1 queue-01#chmod 777 .erlang.cookie 2 queue-02#chmod 777 .erlang.cookie 3 queue-01#scp .erlang.cookie [email protected]192.168.0.74:/var/lib/rabbitmq/ 4 queue-02#chmod 400 .erlang.cookie 5 queue-01#chmod 400 .erlang.cookie
2.4 通过detached参数独立运行所有节点,查看节点状态
1 rabbitmq-server -detached 2 rabbitmqctl cluster_status
2.5 将queue-02作为磁盘节点,queue-03,queue-04作为内存节点与queue-01连接起来
1 queue-02#rabbitmqctl stop_app 2 queue-02#rabbitmqctl join_cluster [email protected]01 3 queue-02#rabbitmqctl start_app 4 5 queue-03#rabbitmqctl stop_app 6 queue-03#rabbitmqctl join_cluster --ram [email protected]01 7 queue-03#rabbitmqctl start_app 8 9 queue-04#rabbitmqctl stop_app 10 queue-04#rabbitmqctl join_cluster --ram [email protected]01 11 queue-04#rabbitmqctl start_app
通过以上步骤rabbitMQ集群已经能正常工作了
如果希望使用镜像功能,可以通过rabbitMQ的策略来实现,在集群中的任意节点配置策略会自动同步到其他节点。
rabbitmqctl set_policy -p test ha-allqueue "^" ‘{"ha-mode":"all"}‘
以上命令在名称为test的vhost上创建了一个名为ha-allqueue的策略,策略模式为all,即复制到所有节点,包含新增节点。
策略正则表达式为 “^” 表示匹配所有队列名称,即所有队列都会以镜像的形式存在于其他所有节点。