国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

RabbitMQ集群架構(gòu)

這篇具有很好參考價(jià)值的文章主要介紹了RabbitMQ集群架構(gòu)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.RabbitMQ集群模式介紹

  • 普通集群

    • 默認(rèn)的集群模式,比如有節(jié)點(diǎn)node1、node2和node3,三個(gè)節(jié)點(diǎn)是普通集群,但是他們僅有相同的元數(shù)據(jù),即交換機(jī)、隊(duì)列的結(jié)構(gòu)
    • 消息只存在其中的一個(gè)節(jié)點(diǎn)里面,假如消息A存儲(chǔ)在node1節(jié)點(diǎn),消費(fèi)者連接node1節(jié)點(diǎn)消費(fèi)消息時(shí),可以直接取出來;但如果消費(fèi)者是連接的其他節(jié)點(diǎn),那RabbitMQ會(huì)把queue中的消息從存儲(chǔ)它的節(jié)點(diǎn)中取出,并經(jīng)過連接節(jié)點(diǎn)轉(zhuǎn)發(fā)后再發(fā)送給消費(fèi)者
    • 假如node1故障,那node2無法獲取node1存儲(chǔ)未被消費(fèi)的消息;如果node1持久化后故障,那需要等node1恢復(fù)后才可以正常消費(fèi);如果node1沒做持久化后故障,那消息將會(huì)丟失
    • 這個(gè)情況無法實(shí)現(xiàn)高可用性,且節(jié)點(diǎn)間會(huì)增加通訊獲取消息,性能存在瓶頸;該模式更適合于消息無需持久化的場(chǎng)景,如日志傳輸?shù)年?duì)列
    • 注意:集群需要保證各個(gè)節(jié)點(diǎn)有相同的token令牌。erlang.cookie是erlang的分布式token文件,集群內(nèi)各個(gè)節(jié)點(diǎn)的erlang.cookie需要相同,才可以互相通信
  • 鏡像集群(大廠基本使用這個(gè)方式)

    • 隊(duì)列做成鏡像隊(duì)列,讓各隊(duì)列存在于多個(gè)節(jié)點(diǎn)中
    • 和普通集群比較大的區(qū)別就是【隊(duì)列queue的消息message】會(huì)在集群各節(jié)點(diǎn)之間同步,且并不是consumer獲取數(shù)據(jù)時(shí)臨時(shí)拉取,而普通集群則是臨時(shí)從存儲(chǔ)的節(jié)點(diǎn)里面拉取對(duì)應(yīng)的數(shù)據(jù)
    • 實(shí)現(xiàn)了高可用性,部分節(jié)點(diǎn)掛掉后,不影響正常的消費(fèi),可以保證100%消息不丟失,推薦奇數(shù)個(gè)節(jié)點(diǎn),結(jié)合LVS+Keepalive進(jìn)行IP漂移,防止單點(diǎn)故障
    • 缺點(diǎn):由于鏡像隊(duì)列模式下,消息數(shù)量過多,大量的消息同步也會(huì)加大網(wǎng)絡(luò)帶寬開銷,適合高可用要求比較高的項(xiàng)目,過多節(jié)點(diǎn)的話,性能則更加受影響
    • 注意:集群需要保證各個(gè)節(jié)點(diǎn)有相同的token令牌。erlang.cookie是erlang的分布式token文件,集群內(nèi)各個(gè)節(jié)點(diǎn)的erlang.cookie需要相同,才可以互相通信
  • 還有其他通過插件形成的集群,比如Federation集群

2.普通集群docker搭建

  • Linux啟動(dòng)3個(gè)rabbitmq節(jié)點(diǎn)

    # 節(jié)點(diǎn)一
    docker run -d --hostname rabbit_host1 \
    --name gen-rabbitmq1 \
    -p 15672:15672 -p 5672:5672 \
    -e RABBITMQ_NODENAME=rabbit \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=Gen123 \
    -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' \
    --privileged=true \
    -v /usr/local/rabbitmq/1/lib:/var/lib/rabbitmq \
    -v /usr/local/rabbitmq/1/log:/var/log/rabbitmq \
    rabbitmq:management
    
    # 節(jié)點(diǎn)二
    docker run -d --hostname rabbit_host2 \
    --name gen-rabbitmq2 \
    -p 15673:15672 -p 5673:5672 \
    -e RABBITMQ_NODENAME=rabbit \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=Gen123 \
    -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' \
    --privileged=true \
    -v /usr/local/rabbitmq/2/lib:/var/lib/rabbitmq \
    -v /usr/local/rabbitmq/2/log:/var/log/rabbitmq \
    --link gen-rabbitmq1:rabbit_host1 \
    rabbitmq:management
    
    # 節(jié)點(diǎn)三
    docker run -d --hostname rabbit_host3 \
    --name gen-rabbitmq3 \
    -p 15674:15672 -p 5674:5672 \
    -e RABBITMQ_NODENAME=rabbit \
    -e RABBITMQ_DEFAULT_USER=admin \
    -e RABBITMQ_DEFAULT_PASS=Gen123 \
    -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' \
    --privileged=true \
    -v /usr/local/rabbitmq/3/lib:/var/lib/rabbitmq \
    -v /usr/local/rabbitmq/3/log:/var/log/rabbitmq \
    --link gen-rabbitmq1:rabbit_host1 \
    --link gen-rabbitmq2:rabbit_host2 \
    rabbitmq:management
    
  • 參數(shù)說明

    --hostname:自定義docker容器的主機(jī)名
    --link:容器之間連接,link不可或缺,使得三個(gè)容器能互相通信
    --privileged=true:使用該參數(shù),容器內(nèi)的root擁有真正的root權(quán)限,否則容器出現(xiàn)permission denied
    -v:宿主機(jī)和容器路徑映射
    -e RABBITMQ_NODENAME:缺省Unix*:rabbit@HOSTNAME
    -e RABBITMQ_DEFAULT_USER=admin:登錄用戶名
    -e RABBITMQ_DEFAULT_PASS=Gen123:登錄密碼
    -e RABBITMQ_ERLANG_COOKIE:值必須相同,也就是一個(gè)集群內(nèi),相當(dāng)于不同節(jié)點(diǎn)之間通訊的密鑰;erlang.cookie是erlang的分布式token文件,集群內(nèi)各個(gè)節(jié)點(diǎn)的erlang.cookie需要相同,才可以互相通信
    
  • 配置集群

    # 節(jié)點(diǎn)一配置集群
    docker exec -it gen-rabbitmq1 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    exit
    
    # 節(jié)點(diǎn)二加入集群,--ram是以內(nèi)存方式加入,忽略該參數(shù)默認(rèn)為磁盤節(jié)點(diǎn)
    docker exec -it gen-rabbitmq2 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit_host1
    rabbitmqctl start_app
    exit
    
    # 節(jié)點(diǎn)三加入集群,--ram是以內(nèi)存方式加入,忽略該參數(shù)默認(rèn)為磁盤節(jié)點(diǎn)
    docker exec -it gen-rabbitmq3 bash
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster --ram rabbit@rabbit_host1
    rabbitmqctl start_app
    exit
    
    # 查看集群節(jié)點(diǎn)狀態(tài),配置啟動(dòng)了3個(gè)節(jié)點(diǎn),1個(gè)磁盤節(jié)點(diǎn)和2個(gè)內(nèi)存節(jié)點(diǎn)
    rabbitmqctl cluster_status
    

    RabbitMQ集群架構(gòu),RabbitMQ,linux,rabbitmq

  • 測(cè)試

    • node1主節(jié)點(diǎn)創(chuàng)建隊(duì)列,發(fā)送消息(可以選擇消息是否持久化),node2和node3通過節(jié)點(diǎn)自身的web管控臺(tái)可以看到隊(duì)列和消息
    • 如果把node1節(jié)點(diǎn)停止,node2和node3會(huì)收不到消息
    • 如果是在非主節(jié)點(diǎn)(非磁盤節(jié)點(diǎn))創(chuàng)建隊(duì)列和發(fā)送消息,則其他隊(duì)列可以顯示
  • springboot項(xiàng)目配置集群

    spring:
      rabbitmq:
        virtual-host: /
        password: Gen123
        username: admin
        addresses: 192.168.101.128:5672,192.168.101.128:5673,192.168.101.128:5674
    

3.mirror鏡像集群配置

  • 背景

    • 前面搭建了普通集群,如果磁盤節(jié)點(diǎn)掛掉后,如果沒開啟持久化數(shù)據(jù)就丟失了,其他節(jié)點(diǎn)也無法獲取消息,所以我們這個(gè)集群方案需要進(jìn)一步改造為鏡像模式集群
  • 策略policy介紹

    • RabbitMQ的策略policy是用來控制和修改集群的vhost隊(duì)列和Exchange復(fù)制行為,就是要設(shè)置哪些Exchange或者Queue的數(shù)據(jù)需要復(fù)制、同步,以及如何復(fù)制同步

    • 策略會(huì)同步同一個(gè)VirtualHost中的交換機(jī)和隊(duì)列數(shù)據(jù)

      • Name:自定義策略名稱
      • Pattern:匹配符,^代表匹配所有
      • Definition:ha-mode=all;ha-sync-mode=automatic
      ha-mode:指明鏡像隊(duì)列的模式,可選下面的其中一個(gè)
      	all:表示在集群中所有的節(jié)點(diǎn)上進(jìn)行鏡像同步(一般使用這個(gè)參數(shù))
      	exactly:表示在指定個(gè)數(shù)的節(jié)點(diǎn)上進(jìn)行鏡像同步,節(jié)點(diǎn)的個(gè)數(shù)由ha-params指定
      	nodes:表示在指定的節(jié)點(diǎn)上進(jìn)行鏡像同步,節(jié)點(diǎn)名稱通過ha-params指定
      	
      ha-sync-mode:鏡像消息同步方式
      	manua:手動(dòng)
      	automatic:自動(dòng)
      

      RabbitMQ集群架構(gòu),RabbitMQ,linux,rabbitmq

  • 集群重啟順序文章來源地址http://www.zghlxwxcb.cn/news/detail-835726.html

    • 啟動(dòng)順序:磁盤節(jié)點(diǎn)–>內(nèi)存節(jié)點(diǎn)
    • 關(guān)閉順序:內(nèi)存節(jié)點(diǎn)–>磁盤節(jié)點(diǎn)
    • 最后關(guān)閉必須是磁盤節(jié)點(diǎn),否則容易造成集群?jiǎn)?dòng)失敗、數(shù)據(jù)丟失等異常情況

到了這里,關(guān)于RabbitMQ集群架構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • (二)RabbitMQ實(shí)戰(zhàn)——rabbitmq高可用集群搭建

    (二)RabbitMQ實(shí)戰(zhàn)——rabbitmq高可用集群搭建

    本節(jié)內(nèi)容是關(guān)于rabbitmq高可用集群的部署搭建,使用的是centos7系統(tǒng),我們準(zhǔn)備三臺(tái)服務(wù)器作為rabbitmq的高可用服務(wù)器,rabbitmq集群本身不是天然支持高可用的,我們通過配置rabbitmq服務(wù)器的鏡像隊(duì)列,以確保消息可以在集群中的多個(gè)節(jié)點(diǎn)上進(jìn)行復(fù)制存儲(chǔ),提高可用性和容錯(cuò)性,

    2024年04月29日
    瀏覽(18)
  • 【RabbitMQ實(shí)戰(zhàn)】07 3分鐘部署一個(gè)RabbitMQ集群

    【RabbitMQ實(shí)戰(zhàn)】07 3分鐘部署一個(gè)RabbitMQ集群

    我們還是利用docker來安裝RabbitMQ集群。3分鐘安裝一個(gè)集群,開始。 前提條件,docker安裝了docker-compose。如果沒安裝的話,參考這里 docker-compose文件參考bitnami官網(wǎng):https://github.com/bitnami/containers/tree/main/bitnami/rabbitmq#setting-up-a-cluster 這是最簡(jiǎn)單的方式安裝一個(gè)RabbitMQ集群 docker-co

    2024年02月07日
    瀏覽(18)
  • linux安裝搭建配置docker,mysql,nacos,redis哨兵集群,kafka,elasticsearch,kibana,IK分詞器,安裝Rabbitmq,安裝并配置maven

    linux安裝搭建配置docker,mysql,nacos,redis哨兵集群,kafka,elasticsearch,kibana,IK分詞器,安裝Rabbitmq,安裝并配置maven

    目錄 搭建docker 1.2安裝yum工具? 1.3更新阿里鏡像源 1.4下載docker 1.5關(guān)閉防火墻 1.6啟動(dòng)docker 1.7查看docker版本 1.8配置阿里云鏡像 1.8.1 創(chuàng)建文件夾 1.8.2在文件夾內(nèi)新建一個(gè)daemon.json文件 1.8.3重載文件 1.9重啟docker 2安裝MySQL 3安裝nacos 3.1拉取nacos鏡像并啟動(dòng) 3.2啟動(dòng)nacos命令 3.3命令敲完

    2024年02月03日
    瀏覽(32)
  • 【RabbitMQ】2 RabbitMQ介紹與架構(gòu)

    【RabbitMQ】2 RabbitMQ介紹與架構(gòu)

    RabbitMQ,俗稱“兔子MQ”(可見其輕巧,敏捷),是目前非常熱門的一款開源消息中間件,不管是互聯(lián)網(wǎng)行業(yè)還是傳統(tǒng)行業(yè)都廣泛使用(最早是為了解決電信行業(yè)系統(tǒng)之間的可靠通信而設(shè)計(jì))。 高可靠性、易擴(kuò)展、高可用、功能豐富等 支持大多數(shù)(甚至冷門)的編程語言客戶

    2024年02月02日
    瀏覽(13)
  • 動(dòng)力節(jié)點(diǎn)Rabbitmq-18-21章RabbitMQ集群與高可用

    動(dòng)力節(jié)點(diǎn)Rabbitmq-18-21章RabbitMQ集群與高可用

    RabbitMQ 的集群分兩種模式,一種是默認(rèn)集群模式,一種是鏡像集群模式; 在RabbitMQ集群中所有的節(jié)點(diǎn)(一個(gè)節(jié)點(diǎn)就是一個(gè)RabbitMQ的broker服務(wù)器) 被歸為兩類:一類是磁盤節(jié)點(diǎn),一類是內(nèi)存節(jié)點(diǎn); 磁盤節(jié)點(diǎn)會(huì)把集群的所有信息(比如交換機(jī)、綁定、隊(duì)列等信息)持久化到磁盤中

    2024年02月01日
    瀏覽(20)
  • RabbitMQ 集群部署

    RabbitMQ 集群部署

    RabbiMQ ?是用? Erlang ?開發(fā)的,集群非常方便,因?yàn)? Erlang ?天生就是一門分布式語言,但其本身并不支持負(fù)載均衡。 RabbitMQ ?的集群節(jié)點(diǎn)包括內(nèi)存節(jié)點(diǎn)、磁盤節(jié)點(diǎn)。 RabbitMQ ?支持消息的持久化,也就是數(shù)據(jù)寫在磁盤上,最合適的方案就是既有內(nèi)存節(jié)點(diǎn),又有磁盤節(jié)點(diǎn)。 Rabb

    2024年02月15日
    瀏覽(20)
  • 【RabbitMQ】集群和運(yùn)維

    【RabbitMQ】集群和運(yùn)維

    對(duì)于無狀態(tài)應(yīng)用(如普通的微服務(wù))很容易實(shí)現(xiàn)負(fù)載均衡、高可用集群。而對(duì)于有狀態(tài)的系統(tǒng)(如數(shù)據(jù)庫等)就比較復(fù)雜。 1. 業(yè)界實(shí)踐: 主備模式:?jiǎn)位?,容量?duì)等,可以實(shí)現(xiàn)故障轉(zhuǎn)移。使用獨(dú)立存儲(chǔ)時(shí)需要借助復(fù)制、鏡像同步等技術(shù),數(shù)據(jù)會(huì)有延遲、不一致等問題(CAP定

    2024年01月18日
    瀏覽(22)
  • centos 安裝rabbitmq集群

    當(dāng)然,我會(huì)提供一個(gè)更加詳細(xì)的步驟指南,幫助你在三臺(tái) CentOS 服務(wù)器上搭建 RabbitMQ 集群。這些服務(wù)器的 IP 地址分別為 10.206.0.4、10.206.0.8 和 10.206.0.13。 步驟 1: 安裝 Erlang RabbitMQ 需要 Erlang 運(yùn)行環(huán)境。在每臺(tái)服務(wù)器上執(zhí)行以下步驟: 添加 Erlang 倉庫 : 安裝 Erlang : 驗(yàn)證 Erlang 安

    2024年01月21日
    瀏覽(18)
  • RabbitMQ集群部署指南

    RabbitMQ集群部署指南

    我們?cè)贑entos7虛擬機(jī)中使用Docker來安裝。 方式一:在線拉取 方式二:從本地加載 在課前資料已經(jīng)提供了鏡像包: 上傳到虛擬機(jī)中后,使用命令加載鏡像即可: 執(zhí)行下面的命令來運(yùn)行MQ容器: 官方的安裝指南地址為:https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq 上

    2024年02月11日
    瀏覽(19)
  • RabbitMQ集群安裝

    RabbitMQ集群安裝

    OS: CentOS Linux release 7.9.2009 (Core) 機(jī)器: IP node cpu 內(nèi)存 存儲(chǔ) 10.106.1.241 max-rabbitmg-01 8 核 16 G 100 G 10.106.1.242 max-rabbitmg-02 8 核 16 G 100 G 10.106.1.243 max-rabbitmg-03 8 核 16 G 100 G 因?yàn)椴僮飨到y(tǒng)版本是 centos7,所以RabbitMQ安裝版本,選的是最后一個(gè)支持RHEL7的版本。 在安裝RabbitMQ之前,需要安裝

    2024年02月05日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包