RabbitMQ3.6.16 CentOS6集羣安裝

1.安裝前準備:

RabbitMQ版本界面:html

  • http://www.rabbitmq.com/download.html
  • https://github.com/rabbitmq/rabbitmq-server/releases

RabbitMQ Erlang版本兼容:http://www.rabbitmq.com/which-erlang.htmljava

Erlang各版本下載界面:http://erlang.org/download/node

2.安裝相關依賴庫:

yum install ncurses ncurses-base ncurses-devel ncurses-libs ncurses-static ncurses-term ocaml-curses ocaml-curses-devel openssl-devel zlib-devel -y

3.編譯安裝Erlang

tar -zxf otp_src_19.3.tar.gz
cd otp_src_19.3
./configure --prefix=/opt/erlang/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install

4.配置環境變量(/etc/profile):

export ERL_HOME=/usr/local/erlang
export PATH=${JAVA_HOME}/bin:${ERL_HOME}/bin:$PATH

source /etc/profilegit

5.驗證erlang環境:

>erlgithub

6.安裝RabbitMQ

xz -d rabbitmq-server-generic-unix-3.6.16.tar.xz
tar -xf rabbitmq-server-generic-unix-3.6.16.tar.xz
mv -r rabbitmq_server-3.6.16 /usr/local/rabbitmq-3.6.16

7.準備環境

修改Hosts配置

準備三臺服務器並配置hosts(/etc/hosts):web

192.168.21.191 vm1
192.168.21.189 vm2
192.168.21.190 vm3

配置host名稱(/etc/sysconfig/network):bash

HOSTNAME=vm1

8.設置Erlang cookie 使三臺保持一致:

本身編譯安裝的rabbitmq 在第一次啓動rabbitmq的時候.erlang.cookie纔會生成服務器

在搭建RabbitMQ集羣的時候每每會由於.erlang.cookie而報各類錯誤,網上查資料也會常常說.erlang.cookie會在$home下,或者在/var/lib/rabbitmq下,到底在rabbitmq啓動的時候用的哪一個cookie,cookie存放的路徑在哪裏,那麼下面咱們來仔細的查證一下。cookie

.erlang.cookie是什麼

erlang.cookie是erlang實現分佈式的必要文件,erlang分佈式的每一個節點上要保持相同的.erlang.cookie文件,同時保證文件的權限是400。app

.erlang.cookie存放路徑

官方在介紹集羣的文檔中提到過.erlang.cookie通常會存在這兩個地址:第一個是$home/.erlang.cookie;第二個地方就是/var/lib/rabbitmq/.erlang.cookie。

  • 若是咱們使用解壓縮方式安裝部署的rabbitmq,那麼這個文件會在${home}目錄下,也就是$home/.erlang.cookie。
  • 若是咱們使用rpm等安裝包方式進行安裝的,那麼這個文件會在/var/lib/rabbitmq目錄下。

9.啓動

使用-detached參數運行各節點:

rabbitmqctl stop
rabbitmq-server -detached

而後能夠經過rabbitmqctl cluster_status查看節點狀態。PS:要先拷貝cookie到另外兩臺機器上,保證三臺機器上的cookie是一致的,而後再啓動服務。

因爲guest這個用戶,只能在本地訪問,因此咱們要新增一個用戶並賦予權限:

添加用戶並設置密碼:

rabbitmqctl add_user  admin 123456

添加權限(使admin用戶對虛擬主機「/」 具備全部權限):

rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"

修改用戶角色(加入administrator用戶組)

rabbitmqctl set_user_tags admin administrator

而後就能夠遠程訪問了,而後可直接配置用戶權限等信息。到此,就能夠經過http://ip:15672 使用admin 123456 進行登錄了。

到這裏的話,每一個節點是做爲單獨的一臺RabbitMQ存在的,也能夠正常提供服務了

(3)組成集羣

rabbitmq-server啓動時,會一塊兒啓動節點和應用,它預先設置RabbitMQ應用爲standalone模式。要將一個節點加入到現有的集羣中,你須要中止這個應用,並將節點設置爲原始狀態。若是使用./rabbitmqctl stop,應用和節點都將被關閉。因此使用rabbitmqctl stop_app僅僅關閉應用。
將 vm二、vm3與 vm1 組成集羣,這裏以vm2爲例
vm2# rabbitmqctl stop_app
vm2# rabbitmqctl join_cluster rabbit@vm1               ####這裏集羣的名字必定不要寫錯了
vm2# rabbitmqctl start_app
將vm3重複上述操做,也加入vm1的集羣。
則此時 vm2 與 vm3 也會自動創建鏈接,集羣配置完畢;(PS:若是要使用內存節點,則可使用vm2 # rabbitmqctl join_cluster --ram rabbit@vm1加入集羣)集羣配置好後,能夠在 RabbitMQ 任意節點上執行 rabbitmqctl cluster_status 來查看是否集羣配置成功。
vm3# rabbitmqctl cluster_status

Cluster status of node rabbit@vm3 ...
        [{vms,[{disc,[rabbit@vm1,rabbit@vm2,rabbit@vm3]}]},
        {running_vms,[rabbit@vm1,rabbit@vm2,rabbit@vm3]},
        {cluster_name,<<"rabbit@vm1">>},
        {partitions,[]},
        {alarms,[{rabbit@vm1,[]},{rabbit@vm2,[]},{rabbit@vm3,[]}]}]

可知,集羣的名稱默認爲rabbit@vm1;

PS:另一種查看集羣是否成功的方式,在web頁面上的「Queues」的列表中,查看有以下顯示爲「同步鏡像到node2」,則也表示集羣配置成功

 

RabbitMQ腦裂問題:

如上圖紅色字體展現部分:Network partition detected ,Mnesia reports that this RabbitMQ cluster has experienced a network partition. There is a risk of losing data.

 

 

 

 

 

參考:

https://blog.csdn.net/wochunyang/article/details/52524977 https://www.cnblogs.com/taoge007/p/6208552.html https://blog.csdn.net/jxdl6655/article/details/78194191 https://www.cnblogs.com/kevingrace/p/8012792.html

相關文章
相關標籤/搜索