一、搭建單節點的MQ
先到官網下載rabbitMQ安裝包,由於我的系統是CentOS6.5 故下載CentOS6.x版本的
yum install epel-release //安裝epel依賴
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm //下載erlang安裝包
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm //解壓
vim /etc/yum.repos.d/epel.repo //將minor註釋base打開
sudo yum install erlang //安裝
yum install rabbitmq-server-3.7.15-1.el6.noarch.rpm //安裝從官網下載好的安裝包
whereis rabbitmq //查詢安裝目錄
cd /usr/lib/rabbitmq/bin
rabbitmq-plugins enable rabbitmq_management //啓用rabbitMq插件
rabbitmq-server start //啓動
vi /etc/rabbitmq/rabbitmq-env.conf //報錯,未設置節點名稱,設置節點名稱:在文件裏面添加這一行:NODENAME=rabbit@mq2
rabbitmq-server start //啓動
或在主目錄下執行 service rabbitmq-server start
/etc/init.d/iptables stop //關閉防火牆
rabbitmqctl add_user admin 123456 //添加用戶
rabbitmqctl set_user_tags admin administrator //設置用戶羣組
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" //設置權限
二、集羣-普通模式
1.使兩臺虛擬機的.erlang.cookie文件中cookie值一致,且權限爲owner只讀。
將其中一個虛擬機的/var/lib/rabbitmq/.erlang.cookie文件拷貝至另一臺機器上,並執行以下命令
[root@mq3 ~]# chmod 600 /var/lib/rabbitmq/.erlang.cookie
2.更改/etc/hosts文件,如下(兩臺虛擬機的hosts文件要一樣)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.2.54 mq3
192.168.2.53 mq2
3.停止當前機器中rabbitmq的服務
[root@mq3 ~]# rabbitmqctl stop_app
4.將mq2加入到集羣中
[root@mq3 ~]# rabbitmqctl join_cluster rabbit@mq2
5.開啓當前機器的rabbitmq服務
[root@mq3 ~]# rabbitmqctl start_app
三、集羣-鏡像模式
上述配置的RabbitMQ默認集羣模式,但並不包管隊列的高可用性,儘管互換機、綁定這些可以複製到集羣裏的任何一個節點,然則隊列內容不會複製。固然該模式解決一項目組節點壓力,但隊列節點宕機直接導致該隊列無法應用,只能守候重啓,所以要想在隊列節點宕機或故障也能正常應用,就要複製隊列內容到集羣裏的每個節點,須要創建鏡像隊列。
鏡像隊列是基於普通的集羣模式的,所以你還是得先配置普通集羣,然後才能設置鏡像隊列,我們就以上面的集羣接着做。
我是通過上面開啓的網頁的管理端來設置的鏡像隊列,也可以通過命令,這裏先說其中的網頁設置方式:
1、點擊admin菜單–>右側的Policies選項–>左側最下下邊的Add/update a policy。
2、按照圖中的內容根據自己的需求填寫。
3、點擊Add policy添加策略。
此時你就會來你的兩臺rabbitmq服務器的網頁管理端amind菜單下看見剛纔創建的隊列了,下面我們來添加一個queues隊列來看看效果,這裏只是測試結果,其它的先不填寫。
設置鏡像隊列策略
在任意一個節點上執行:
root@mq3# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
將所有隊列設置爲鏡像隊列,即隊列會被複制到各個節點,各個節點狀態保持一直。
我們去mq3上查看策略。
[root@mq3 ~]# rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost name pattern apply-to definition priority
/ ha-all ^ all {"ha-mode":"all"} 0
此時鏡像集羣就已經完成了,可以在任意節點上創建隊列,看看其他兩個節點是否會同步。