RabbitMQ?集群部署解決方案
- 環(huán)境準(zhǔn)備:三臺(tái)服務(wù)器,系統(tǒng)是 CentOS7
- IP地址分別是:
- rabbitmq1:192.168.152.71
- rabbitmq2:192.168.152.72
- rabbitmq3:192.168.152.73
一、安裝 RabbitMQ
記得配置yum源,避免不必要的錯(cuò)誤
在三臺(tái)服務(wù)器上分別安裝 erlang 和 rabbitmq-server
安裝 RabbitMQ 運(yùn)行環(huán)境
yum install -y erlang
安裝軟件 RabbitMQ
yum install -y rabbitmq-server
二、更改配置文件
一下配置在三臺(tái)服務(wù)器上都要修改
更改 RabbitMQ 配置文件
vim /etc/rabbitmq/rabbitmq.config
找到 %%{loopback_users, []}, 改為下面內(nèi)容,大概在 53 行
{loopback_users, []}更改 hosts 配置主機(jī)名解析
192.168.152.71 rabbitmq1 192.168.152.72 rabbitmq2 192.168.152.73 rabbitmq3
可以 ping 一下看是否配置成功
三、配置集群
改主機(jī)名,對(duì)照 hosts 配置的主機(jī)名解析,把對(duì)用服務(wù)器的主機(jī)名改為相應(yīng)的解析
如:192.168.152.71
hostnamectl set-hostname rabbitmq1
192.168.152.72
hostnamectl set-hostname rabbitmq2
192.168.152.73
hostnamectl set-hostname rabbitmq3
然后全部都 exit 重新登錄
啟動(dòng)三臺(tái)服務(wù)器的 RabbitMQ 服務(wù)
systemctl start rabbitmq-server systemctl enable rabbitmq-server
統(tǒng)一三臺(tái)服務(wù)器的 erlang.cookie,把 rabbitmq1 的 erlang.cookie 傳輸?shù)狡渌鼉膳_(tái)
scp /var/lib/rabbitmq/.erlang.cookie rabbitmq2:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie rabbitmq3:/var/lib/rabbitmq/.erlang.cookie
運(yùn)行 cat /var/lib/rabbitmq/.erlang.cookie,查看三臺(tái)服務(wù)器的值是否一致,一致后再重啟 rabbitmq2 和 rabbitmq3 的 RabbitMQ 服務(wù)
systemctl restart rabbitmq-server
查看 RabbitMQ 的節(jié)點(diǎn)狀態(tài)
rabbitmqctl cluster_status
結(jié)果如下即為正確
# rabbitmq1 的結(jié)果:
Cluster status of node rabbit@rabbitmq1 ...
[{nodes,[{disc,[rabbit@rabbitmq1]}]},
{running_nodes,[rabbit@rabbitmq1]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]}]
...done.
# rabbitmq2 的結(jié)果:
Cluster status of node rabbit@rabbitmq2 ...
[{nodes,[{disc,[rabbit@rabbitmq2]}]},
{running_nodes,[rabbit@rabbitmq2]},
{cluster_name,<<"rabbit@rabbitmq2">>},
{partitions,[]}]
...done.
# rabbitmq3 的結(jié)果:
Cluster status of node rabbit@rabbitmq3 ...
[{nodes,[{disc,[rabbit@rabbitmq3]}]},
{running_nodes,[rabbit@rabbitmq3]},
{cluster_name,<<"rabbit@rabbitmq3">>},
{partitions,[]}]
...done.停止 rabbitmq2 和 rabbitmq3 主機(jī)的 RabbitMQ 應(yīng)用
rabbitmqctl stop_app
讓 rabbitmq2 和 rabbitmq3 加入 rabbitmq1 的集群
rabbitmqctl join_cluster rabbit@rabbitmq1
啟動(dòng) rabbitmq2 和 rabbitmq3 主機(jī)的 RabbitMQ 應(yīng)用,并再次查看 RabbitMQ 的節(jié)點(diǎn)狀態(tài)
rabbitmqctl start_app
再三臺(tái)服務(wù)器上執(zhí)行 rabbitmqctl cluster_status 命令,結(jié)果就會(huì)變?yōu)橄旅孢@樣
# rabbitmq1 的結(jié)果:
Cluster status of node rabbit@rabbitmq1 ...
[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
{running_nodes,[rabbit@rabbitmq2,rabbit@rabbitmq3,rabbit@rabbitmq1]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]}]
...done.
# rabbitmq2 的結(jié)果:
Cluster status of node rabbit@rabbitmq2 ...
[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
{running_nodes,[rabbit@rabbitmq1,rabbit@rabbitmq3,rabbit@rabbitmq2]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]}]
...done.
# rabbitmq3 的結(jié)果:
Cluster status of node rabbit@rabbitmq3 ...
[{nodes,[{disc,[rabbit@rabbitmq1,rabbit@rabbitmq2,rabbit@rabbitmq3]}]},
{running_nodes,[rabbit@rabbitmq2,rabbit@rabbitmq1,rabbit@rabbitmq3]},
{cluster_name,<<"rabbit@rabbitmq1">>},
{partitions,[]}]
...done.此時(shí)集群配置成功
四、測(cè)試
可以可以啟用 RabbitMQ 可視化web管理插件,更直觀的看到集群狀態(tài),也方便測(cè)試
三臺(tái)服務(wù)器都要開(kāi)啟
rabbitmq-plugins enable rabbitmq_management systemctl restart rabbitmq-server
通過(guò)IP地址加端口號(hào)訪問(wèn),端口號(hào)為 15672
如:192.168.152.71:15672,默認(rèn)的用戶名:guest,密碼:guest

可以再其中一臺(tái)添加用戶,看其它幾臺(tái)是否有變化,有則配置成功

到此這篇關(guān)于RabbitMQ集群部署解決方案的文章就介紹到這了,更多相關(guān)RabbitMQ 集群部署方案內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring整合shiro框架的實(shí)現(xiàn)步驟記錄
Shiro是一個(gè)強(qiáng)大易用的Java安全框架,提供了認(rèn)證、授權(quán)、加密和會(huì)話管理等功能。下面這篇文章主要給大家介紹了關(guān)于spring整合shiro框架的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05
java date類(lèi)與string類(lèi)實(shí)例代碼分享
這篇文章主要介紹了java date類(lèi)與string類(lèi)實(shí)例代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
在SpringBoot項(xiàng)目中連接SQL Server的幾種實(shí)現(xiàn)方式
本文介紹了在SpringBoot項(xiàng)目中連接SQLServer的三種常見(jiàn)方法:使用Microsoft官方的JDBC驅(qū)動(dòng)、第三方的jTDS驅(qū)動(dòng)以及Microsoft提供的官方SpringBootStarter,每種方法均提供了對(duì)應(yīng)的依賴配置和YAML配置示例,幫助開(kāi)發(fā)者輕松實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接2025-09-09
Java8函數(shù)式編程應(yīng)用小結(jié)
Java8非常重要的就是引入了函數(shù)式編程的思想,使得這門(mén)經(jīng)典的面向?qū)ο笳Z(yǔ)言有了函數(shù)式的編程方式,彌補(bǔ)了很大程度上的不足,函數(shù)式思想在處理復(fù)雜問(wèn)題上有著更為令人稱贊的特性,本文給大家介紹Java8函數(shù)式編程應(yīng)用小結(jié),感興趣的朋友一起看看吧2023-12-12
Java基礎(chǔ)之三大控制流程結(jié)構(gòu)
這篇文章主要介紹了Java基礎(chǔ)之三大控制流程結(jié)構(gòu),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
泛型的類(lèi)型擦除后fastjson反序列化時(shí)如何還原詳解
這篇文章主要為大家介紹了泛型的類(lèi)型擦除后fastjson反序列化時(shí)如何還原詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
springboot2中使用@JsonFormat注解不生效的解決
這篇文章主要介紹了springboot2中使用@JsonFormat注解不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02

