RabbitMQ搭建及集羣

一、搭建單節點的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

此時鏡像集羣就已經完成了,可以在任意節點上創建隊列,看看其他兩個節點是否會同步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章