rabbitmq配置鏡像模式


學習是spring cloud的時候用到了rabbitmq,在實際項目中也用到了,鏡像模式是集群的基礎上面配置的,就多了一個數據同步,rabbitmq存儲消息用的是cookie,配置之前先同步cookie。

1、安裝模式
鏡像模式描述:鏡像模式是多個rabbitmq實現主從備份,多個rabbitmq之間是數據同步的,使用的時候一直在訪問一個主的raabitmq,從的實現備份。如果主的宕機可以自動切換到從的mq,不影響整合系統的使用。
2、部署步驟:
2.1、安裝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名稱)

如果報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 socat

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.2、配置鏡像模式
現在兩台服務器都安裝完了但是之間沒有相互聯系,鏡像模式是在主從模式的基礎上面繼續配置的,先配置主從模式,現在有兩台IP,host文件都配置
192.168.243.145 sjcj-v2-1
192.168.243.148 waterlufei
同步cookie數據
rabbitmq的數據是用cookie存儲的。
關閉148服務器的rabbitmq,直接kill掉rabbitmq的進程

登錄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 start

查詢145的節點名稱
# rabbitmqctl cluster_status

148 加入 145節點.
# rabbitmqctl stop_app –關掉rabbitmq2服務
# rabbitmqctl join_cluster rabbit@sjcj-v2-1
# rabbitmqctl start_app –啟動rabbitmq2服務
查看集群狀態rabbitmqctl cluster_status

在兩個web端監控界面都可以看到

在一個rabbitmq的監控界面新建一個隊列,可以發現另一個mq也有的相同的隊列,數據和配置都會同步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM