RabbitMQ普通叢集準備環境
原文:https://www.jianshu.com/p/85f40e52e625
注意,三臺伺服器,RabbitMQ叢集節點必須在同一網段,如果是跨域,效果會變差。關閉防火牆和selinux
修改主機名稱,新增解析
三臺機器都操作:
- 配置hosts檔案更改三臺MQ節點的計算機名分別為rabbitmq-1、rabbitmq-2 和rabbitmq-3,然後修改hosts配置件
[root@rabbitmq-1 ~]# hostnamectl set-hostname rabbitmq-1
[root@rabbitmq-1 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.50.138 rabbitmq-1
192.168.50.139 rabbitmq-2
192.168.50.140 rabbitmq-3
2.三個節點配置安裝rabbitmq軟體
安裝依賴
[root@rabbitmq-1 ~]# yum install -y *epel* gcc-c++ unixODBC unixODBC-devel openssl-devel ncurses-devel
yum安裝erlang
[root@rabbitmq-1 ~]# wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-20.3-1.el7.centos.x86_64.rpm/download.rpm
[root@rabbitmq-1 ~]# yum install erlang-20.3-1.el7.centos.x86_64.rpm -y
測試;
[root@rabbitmq-1 ~]# erl
Erlang/OTP 20 [erts-9.3] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.3 (abort with ^G)
1>
安裝rabbitmq
[root@rabbitmq-1 ~]# wget https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.5/rabbitmq-server-3.7.5-1.el7.noarch.rpm
[root@rabbitmq-1 ~]# yum install rabbitmq-server-3.7.5-1.el7.noarch.rpm -y
3.啟動
[root@rabbitmq-1 ~]# systemctl daemon-reload
[root@rabbitmq-1 ~]# systemctl start rabbitmq-server
[root@rabbitmq-1 ~]# systemctl enable rabbitmq-server
[root@rabbitmq-1 ~]# systemctl status rabbitmq-server
啟動方式二:
[root@rabbitmq-1 ~]# /sbin/service rabbitmq-server status ---檢視狀態
[root@rabbitmq-1 ~]# /sbin/service rabbitmq-server start ---啟動
每臺都操作開啟rabbitmq的web訪問介面:
[root@rabbitmq-1 ~]# rabbitmq-plugins enable rabbitmq_management
建立使用者
注意:在一臺機器操作
新增使用者和密碼
[root@rabbitmq-1 ~]# rabbitmqctl add_user soho soso
Adding user "soho" ...
設定為管理員
[root@rabbitmq-1 ~]# rabbitmqctl set_user_tags soho administrator
Setting tags for user "soho" to [administrator] ...
檢視使用者
[root@rabbitmq-1 ~]# rabbitmqctl list_users
Listing users ...
guest [administrator]
soho [administrator]
...done.
此處設定許可權時注意'.*'之間需要有空格 三個'.*'分別代表了conf許可權,read許可權與write許可權 例如:當沒有給
soho設定這三個許可權前是沒有許可權查詢佇列,在ui介面也看不見
[root@rabbitmq-1 ~]# rabbitmqctl set_permissions -p "/" soho ".*" ".*" ".*"
Setting permissions for user "soho" in vhost "/" ...
3臺機器都操作:開啟使用者遠端登入:
[root@rabbitmq-1 ~]# cd /etc/rabbitmq/
[root@rabbitmq-1 rabbitmq]# cp /usr/share/doc/rabbitmq-server-3.7.5/rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
[root@rabbitmq-1 rabbitmq]# ls
enabled_plugins rabbitmq.config
[root@rabbitmq-1 rabbitmq]# vim rabbitmq.config
修改如下:
image.png
三臺機器都操作重啟服務服務:
[root@rabbitmq-1 ~]# systemctl restart rabbitmq-server
檢視埠
4369 -- erlang埠
5672 --程式連線埠
15672 -- 管理介面ui埠
25672 -- server間內部通訊埠
!注意如果是雲伺服器,切記新增安全組埠放行。
訪問:192.168.50.138:15672
image.png
這裡需要注意:
rabbitmq預設管理員使用者:guest 密碼:guest
新新增的使用者為:soho 密碼:soso
開始部署叢集三臺機器都操作:
1.首先建立好資料存放目錄和日誌存放目錄:
3臺機器都操作
[root@rabbitmq-1 ~]# mkdir -p /data/rabbitmq/data
[root@rabbitmq-1 ~]# mkdir -p /data/rabbitmq/logs
[root@rabbitmq-1 ~]# chmod 777 -R /data/rabbitmq
[root@rabbitmq-1 ~]# chown rabbitmq.rabbitmq /data/ -R
建立配置檔案:
[root@rabbitmq-1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf
RABBITMQ_MNESIA_BASE=/data/rabbitmq/data
RABBITMQ_LOG_BASE=/data/rabbitmq/logs
重啟服務
[root@rabbitmq-1 ~]# systemctl restart rabbitmq-server
2.拷erlang.cookie
Rabbitmq的叢集是依附於erlang的叢集來工作的,所以必須先構建起erlang的叢集。Erlang的叢集中
各節點是經由各個cookie來實現的,這個cookie存放在/var/lib/rabbitmq/.erlang.cookie中,檔案是400的許可權。所以必須保證各節點cookie一致,不然節點之間就無法通訊.
如果執行# rabbitmqctl stop_app 這條命令報錯:需要執行
#如果執行# rabbitmqctl stop_app 這條命令報錯:需要執行
#chmod 400 .erlang.cookie
#chown rabbitmq.rabbitmq .erlang.cookie
(官方在介紹叢集的文件中提到過.erlang.cookie 一般會存在這兩個地址:第一個是home/.erlang.cookie;第二個地方就是/var/lib/rabbitmq/.erlang.cookie。如果我們使用解壓縮方式安裝部署的rabbitmq,那麼這個檔案會在{home}目錄下,也就是$home/.erlang.cookie。如果我們使用rpm等安裝包方式進行安裝的,那麼這個檔案會在/var/lib/rabbitmq目錄下。)
[root@rabbitmq-1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
HOUCUGJDZYTFZDSWXTHJ
scp的方式將rabbitmq-1節點的.erlang.cookie的值複製到其他兩個節點中。
[root@rabbitmq-1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.50.139:/var/lib/rabbitmq/
[root@rabbitmq-1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.50.140:/var/lib/rabbitmq/
3.將mq-2、mq-3作為記憶體節點加到mq-1節點叢集中
在mq-2、mq-3執行如下命令:
[root@rabbitmq-2 ~]# rabbitmqctl stop_app #停止節點,切記不是停止服務
image.png
[root@rabbitmq-2 ~]# rabbitmqctl reset #如果有資料需要重置,沒有則不用
image.png
注意查看回顯,如果不是以上。就是錯誤;如果報錯,重啟rabbitmq服務
將兩個節點加入叢集,指定角色
[root@rabbitmq-2 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq-1 #新增到記憶體節點
Clustering node 'rabbit@rabbitmq-2' with 'rabbit@rabbitmq-1' ...
[root@rabbitmq-2 ~]# rabbitmqctl start_app #啟動節點
Starting node 'rabbit@rabbitmq-2' ...
completed with 3 plugins.
======================================================================
[root@rabbitmq-3 ~]# rabbitmqctl stop_app
Stopping node 'rabbit@rabbitmq-3' ...
[root@rabbitmq-3 ~]# rabbitmqctl reset
Resetting node 'rabbit@rabbitmq-3' ...
[root@rabbitmq-3 ~]# rabbitmqctl join_cluster --ram rabbit@rabbitmq-1
Clustering node 'rabbit@rabbitmq-3' with 'rabbit@rabbitmq-1' ...
[root@rabbitmq-3 ~]# rabbitmqctl start_app
Starting node 'rabbit@rabbitmq-3' ...
completed with 3 plugins.
(1)預設rabbitmq啟動後是磁碟節點,在這個cluster命令下,mq-2和mq-3是記憶體節點,
mq-1是磁碟節點。
(2)如果要使mq-2、mq-3都是磁碟節點,去掉--ram引數即可。
(3)如果想要更改節點型別,可以使用命令rabbitmqctl change_cluster_node_type
disc(ram),前提是必須停掉rabbitmq應用
注:
#如果有需要使用磁碟節點加入叢集
[root@rabbitmq-2 ~]# rabbitmqctl join_cluster rabbit@rabbitmq-1
[root@rabbitmq-3 ~]# rabbitmqctl join_cluster rabbit@rabbitmq-1
4.檢視叢集狀態
在 RabbitMQ 叢集任意節點上執行 rabbitmqctl cluster_status來檢視是否叢集配置成功。
在mq-1磁碟節點上面檢視
[root@rabbitmq-1 ~]# rabbitmqctl cluster_status
image.png
每臺機器顯示出三臺節點,表示已經新增成功!
5.登入rabbitmq web管理控制檯,建立新的佇列
開啟瀏覽器輸入http://192.168.50.*:15672
輸入預設的Username:guest
輸入預設的Password:guest
作者:威廉彣茂
連結:https://www.jianshu.com/p/85f40e52e625
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。