最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker + Rabbitmq 集群部署方案

 更新時(shí)間:2025年12月15日 11:29:30   作者:路過的好心人  
本文詳細(xì)描述了如何在兩臺(tái)服務(wù)器上部署RabbitMQ集群,包括環(huán)境準(zhǔn)備、防火墻配置、節(jié)點(diǎn)部署、集群配置、鏡像隊(duì)列配置以及節(jié)點(diǎn)故障處理,感興趣的朋友跟隨小編一起看看吧

一、環(huán)境準(zhǔn)備

1. 服務(wù)器信息

服務(wù)器IP 地址節(jié)點(diǎn)名稱角色開放端口(防火墻)
server1192.168.144.144rabbit@server1主節(jié)點(diǎn)5672(AMQP)、15672(管理界面)、4369(Erlang 節(jié)點(diǎn)發(fā)現(xiàn))、25672(集群內(nèi)部通信)
server2192.168.144.145rabbit@server2從節(jié)點(diǎn)同上

2. 防火墻配置(兩臺(tái)臺(tái)服務(wù)器都執(zhí)行)

確保集群通信端口開放(以 firewalld 為例):

# 開放 RabbitMQ 必要端口
sudo firewall-cmd --permanent --add-port=5672/tcp   # AMQP 協(xié)議
sudo firewall-cmd --permanent --add-port=15672/tcp # 管理界面
sudo firewall-cmd --permanent --add-port=4369/tcp   # Erlang 節(jié)點(diǎn)發(fā)現(xiàn)(epmd)
sudo firewall-cmd --permanent --add-port=25672/tcp # 集群內(nèi)部通信(inter-node)
sudo firewall-cmd --reload

啟用IPv4轉(zhuǎn)發(fā)功

臨時(shí)生效方案
執(zhí)行命令立即啟用(重啟后失效):

echo 1 > /proc/sys/net/ipv4/ip_forward

永久生效方案
修改系統(tǒng)配置文件:

# 編輯
vi /etc/sysctl.conf
# 確保已開啟
net.ipv4.ip_forward=1
# 生效
sudo sysctl -p

重啟docker

systemctl restart docker

二、部署臺(tái)服務(wù)器分別部署 RabbitMQ 節(jié)點(diǎn)

1. 在 server1(192.168.144.144)部署主節(jié)點(diǎn)

請(qǐng)按照實(shí)際修改

  --name rabbitmq-node1        # docker名稱
  --hostname server1        # 主機(jī)名(集群識(shí)別節(jié)點(diǎn)的關(guān)鍵,需唯一)
  -e RABBITMQ_ERLANG_COOKIE="QXJZRWTBHVGFACBVLUVC"        # 集群 Cookie,2 節(jié)點(diǎn)必須一致
  -e RABBITMQ_DEFAULT_USER=admin        # 管理界面用戶名
  -e RABBITMQ_DEFAULT_PASS=mC2aF0uH3aQ3iR2qA4bM1eA4        # 管理界面密碼
  -v /data/rabbitmq/node1:/var/lib/rabbitmq        # 數(shù)據(jù)持久化(可選,需提前創(chuàng)建目錄)

  rabbitmq:4-management        # 4最新版本,可以指定版本如:rabbitmq:4.0-management 或者rabbitmq:3-management 

# 拉取 RabbitMQ 鏡像(帶管理界面)
docker pull rabbitmq:4-management
# 啟動(dòng)主節(jié)點(diǎn)容器(指定數(shù)據(jù)卷久化)
# 如果是arm架構(gòu)的cpu需要增加參數(shù) --privileged
docker run -d \
  --name rabbitmq-node1 \
  --hostname server1 \
  -p 5672:5672 \
  -p 15672:15672 \
  -p 4369:4369 \
  -p 25672:25672 \
  -e RABBITMQ_ERLANG_COOKIE="QXJZRWTBHVGFACBVLUVC" \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=mC2aF0uH3aQ3iR2qA4bM1eA4 \
  -v /data/rabbitmq/node1:/var/lib/rabbitmq \
  rabbitmq:4-management
  • 驗(yàn)證:訪問 http://192.168.144.145:15672,用 admin/admin123 登錄,確認(rèn)節(jié)點(diǎn) rabbit@server1 正常運(yùn)行。

2. 在 server2(192.168.144.145)部署從節(jié)點(diǎn)

# 拉取鏡像(同上)
docker pull rabbitmq:4-management
# 啟動(dòng)從節(jié)點(diǎn)容器(注意主機(jī)名和端口映射與 server1 區(qū)分)
# 如果是arm架構(gòu)的cpu需要增加參數(shù) --privileged
docker run -d \
  --name rabbitmq-node2 \
  --hostname server2 \
  -p 5672:5672 \
  -p 15672:15672 \
  -p 4369:4369 \
  -p 25672:25672 \
  -e RABBITMQ_ERLANG_COOKIE="QXJZRWTBHVGFACBVLUVC" \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=mC2aF0uH3aQ3iR2qA4bM1eA4 \
  -v /data/rabbitmq/node2:/var/lib/rabbitmq \
  rabbitmq:4-management
  • 驗(yàn)證:訪問 http://192.168.144.145:15672,確認(rèn)節(jié)點(diǎn) rabbit@server2 正常運(yùn)行。

三、配置各節(jié)點(diǎn)主機(jī)名對(duì)應(yīng)的IP

1. 各節(jié)點(diǎn)處理一致

# 進(jìn)入 server1 的容器
docker exec -it rabbitmq-node1 bash
# 進(jìn)入 server2 的容器同理
# docker exec -it rabbitmq-node2 bash
# 增加域名映射
echo "192.168.144.144 server1" >> /etc/hosts
echo "192.168.144.145 server2" >> /etc/hosts
# 退出容器
exit

四、將 server2 的節(jié)點(diǎn)加入 server1 的集群

1. 在 server2 中操作從節(jié)點(diǎn),加入集群

# 進(jìn)入 server2 的容器
docker exec -it rabbitmq-node2 bash
# 停止 RabbitMQ 應(yīng)用(保留 Erlang 節(jié)點(diǎn)運(yùn)行)
rabbitmqctl stop_app
# 重置節(jié)點(diǎn)(首次加入集群需執(zhí)行,清除原有數(shù)據(jù))
rabbitmqctl reset
# 加入 server1 的集群(通過 server1 的 IP 或主機(jī)名訪問主節(jié)點(diǎn))
# 格式:rabbitmqctl join_cluster 主節(jié)點(diǎn)名稱@主節(jié)點(diǎn)主機(jī)名
rabbitmqctl join_cluster rabbit@server1
# 啟動(dòng) RabbitMQ 應(yīng)用
rabbitmqctl start_app
# 退出容器
exit
  • 關(guān)鍵說明:主節(jié)點(diǎn)名稱格式為 rabbit@主機(jī)名主機(jī)名 是 server1 容器的 --hostname 參數(shù)值,即 server1)。若通過主機(jī)名無法訪問,可替換為 server1 的 IP

五、驗(yàn)證集群狀態(tài)

1. 在任意節(jié)點(diǎn)查看集群狀態(tài)

# 在 server1 執(zhí)行
docker exec -it rabbitmq-node1 rabbitmqctl cluster_status
# 或在 server2 執(zhí)行
docker exec -it rabbitmq-node2 rabbitmqctl cluster_status

正常輸出應(yīng)包含 2 個(gè)節(jié)點(diǎn):

Cluster status of node rabbit@server1 ...
Basics
Cluster name: rabbit@server1
Disk Nodes
rabbit@server1
rabbit@server2
...

2. 管理界面驗(yàn)證

訪問任意節(jié)點(diǎn)的管理界面(如 http://192.168.144.144:15672),在 Admin → Cluster 中可看到兩個(gè)節(jié)點(diǎn)均為 running 狀態(tài)。

五、配置鏡像隊(duì)列(高可用)

為保證隊(duì)列數(shù)據(jù)在 2 個(gè)節(jié)點(diǎn)間同步(避免單節(jié)點(diǎn)故障丟失數(shù)據(jù)),需配置鏡像隊(duì)列策略:

# 在 server1 的主節(jié)點(diǎn)執(zhí)行(策略會(huì)自動(dòng)同步到集群)
docker exec -it rabbitmq-node1 bash
# 創(chuàng)建策略:所有隊(duì)列(^)同步到集群所有節(jié)點(diǎn)(ha-mode: all)
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
# 查看策略是否生效
rabbitmqctl list_policies
  • 策略說明:ha-mode: all 表示隊(duì)列會(huì)同步到集群所有節(jié)點(diǎn)(2 個(gè)節(jié)點(diǎn)均存儲(chǔ)數(shù)據(jù)),確保任意節(jié)點(diǎn)故障時(shí),隊(duì)列仍可通過另一節(jié)點(diǎn)訪問。

六、跨主機(jī)通信注意事項(xiàng)

Erlang Cookie 必須一致:2 個(gè)節(jié)點(diǎn)的 RABBITMQ_ERLANG_COOKIE 環(huán)境變量值必須完全相同(字符串區(qū)分大小寫),否則無法建立集群通信。

主機(jī)名解析:若節(jié)點(diǎn)間通過主機(jī)名(如 server1)通信,需在 2 臺(tái)服務(wù)器的 /etc/hosts 中添加主機(jī)名與 IP 的映射:

# 在 server1 和 server2 都執(zhí)行(容器內(nèi)部執(zhí)行)
echo "192.168.1.100 server1" >> /etc/hosts
echo "192.168.1.101 server2" >> /etc/hosts

數(shù)據(jù)持久化:若需重啟容器后保留數(shù)據(jù),必須通過 -v 掛載數(shù)據(jù)卷(如 /data/rabbitmq/node1:/var/lib/rabbitmq),并確保宿主機(jī)目錄權(quán)限正確(chmod 777 /data/rabbitmq/node1,避免容器內(nèi)權(quán)限不足)。

節(jié)點(diǎn)故障處理:若 server1 故障,可在 server2 中執(zhí)行 rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app 重置節(jié)點(diǎn)為獨(dú)立節(jié)點(diǎn),待 server1 恢復(fù)后重新加入集群。

總結(jié)

2 臺(tái)服務(wù)器部署 RabbitMQ 集群的核心是:

  1. 開放必要端口,確??缰鳈C(jī)通信;
  2. 同步 Erlang Cookie,實(shí)現(xiàn)節(jié)點(diǎn)身份驗(yàn)證;
  3. 通過 join_cluster 命令將從節(jié)點(diǎn)加入主節(jié)點(diǎn)集群;
  4. 配置鏡像隊(duì)列策略,保證數(shù)據(jù)高可用。

到此這篇關(guān)于Docker + Rabbitmq 集群部署方案的文章就介紹到這了,更多相關(guān)Docker Rabbitmq 集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

乌兰县| 德昌县| 宜州市| 裕民县| 昌黎县| 江油市| 吕梁市| 东兰县| 阿拉善盟| 肥东县| 康乐县| 当涂县| 崇文区| 肇源县| 南城县| 上栗县| 伊宁县| 紫阳县| 绥滨县| 财经| 星子县| 噶尔县| 宣汉县| 弥渡县| 左权县| 乌拉特中旗| 花莲市| 德安县| 滨海县| 左贡县| 高唐县| 荣成市| 沂源县| 津南区| 来凤县| 长汀县| 阜平县| 芜湖市| 泽库县| 城固县| 肥东县|