学习是spring cloud的时候用到了rabbitmq,在实际项目中也用到了,镜像模式是集群的基础上面配置的,就多了一个数据同步,rabbitmq存储消息用的是cookie,配置以前先同步cookie。html
一、安装模式
镜像模式描述:镜像模式是多个rabbitmq实现主从备份,多个rabbitmq之间是数据同步的,使用的时候一直在访问一个主的raabitmq,从的实现备份。若是主的宕机能够自动切换到从的mq,不影响整合系统的使用。
二、部署步骤:
2.一、安装rabbitmq
首先去官网下载安装rabbitmq,官网安装guide地址http://www.rabbitmq.com/install-rpm.html,rabbitmq是基于erlang语言的,咱们实现须要安装erlang,官网地址:https://github.com/rabbitmq/erlang-rpm。
新建完了之后, yum installl erlang –y安装erlang,安装完了能够运行erl –version查看安装的erlang版本,查看是否安装正确。
而后继续安装rabbitmq,使用rpm安装,实现随便进入某个目录,下载rpm文件 。
安装relang:
vim /etc/yum.repos.d/rabbitmq-erlang.repo
插入:
[rabbitmq-erlang]
name=rabbitmq-erlang
baseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el/6
gpgcheck=1
gpgkey=https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
repo_gpgcheck=0
enabled=1
# yum -y install erlang
而后安装rabbitmq:
# wget https://dl.bintray.com/rabbitmq/rabbitmq-server-rpm/rabbitmq-server-3.6.14-1.el6.noarch.rpm
而后安装rabbitmq
# rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
# yum install rabbitmq-server-3.6.14-1.el6.noarch.rpm -y(这里的名称换成上面下载的rpm名称)git
若是报socat dependencies错误
# wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo -O /etc/yum.repos.d/convirt.repo
# yum makecache
# yum -y install socatgithub
rabbitmq安装完运行rabbitmq-server –-version查看版本。Rabbitmq是基于主机名读取配置文件的,确保主机名在hosts文件中有说明例如咱们主机名sjcj-v2-1,/etc/hosts文件中应该有 127.0.0.1 sjcj-v2-1。
启动rabbitmq
# service rabbitmq-server start
配置rabbitmq自启动
# chkconfig rabbitmq-server on
Rabbitmq有web端的监控界面,启用web插件
#rabbitmq-plugins enable rabbitmq_management #启用
关闭web插件
# rabbitmq-plugins disable rabbitmq_management
能够用默认帐号guest,guest登录http://localhost:15672,若是要远程登陆,须要先建立账户,rabbitmq自己出于安装考虑不容许远程使用guest帐号,只能本地访问,可是咱们是云服务器。新建管理员帐号,例如:
# rabbitmqctl add_user waterlufei 123
# rabbitmqctl set_user_tags waterlufei administrator
# rabbitmqctl list_users (查看全部用户)
Web端访问远程IP,输入用户名waterlufei,密码123,进入web端管理界面
另外一台服务器一样安装erlang和rabbitmq,启动rabbitmq监控界面。
2.二、配置镜像模式
如今两台服务器都安装完了可是之间没有相互联系,镜像模式是在主从模式的基础上面继续配置的,先配置主从模式,如今有两台IP,host文件都配置
192.168.243.145 sjcj-v2-1
192.168.243.148 waterlufei
同步cookie数据
rabbitmq的数据是用cookie存储的。
关闭148服务器的rabbitmq,直接kill掉rabbitmq的进程web
登陆145服务器
#cd /var/lib/rabbitmq –进入erlang.cookie所在目录,只有ls –al能看见此文件
#chmod 777 .erlang* –该文件默认为400权限,为方便传输,先修改权限,非必须操做
#scp .erlang.cookie rabbitmq@192.168.108.148:/var/lib/rabbitmq –将此文件传给另外两条主机
#chmod 400 .er* –恢复文件权限
在148上执行
#chown rabbitmq:rabbitmq .er* –修改文件所属用户和所属组
#chmod 400 .er* –修改文件权限
#service rabbitmq-server startspring
查询145的节点名称
# rabbitmqctl cluster_statusvim
148 加入 145节点.
# rabbitmqctl stop_app –关掉rabbitmq2服务
# rabbitmqctl join_cluster rabbit@sjcj-v2-1
# rabbitmqctl start_app –启动rabbitmq2服务
查看集群状态rabbitmqctl cluster_status
在两个web端监控界面均可以看到
在一个rabbitmq的监控界面新建一个队列,能够发现另外一个mq也有的相同的队列,数据和配置都会同步。服务器