大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 RabbitMQ集群搭建

RabbitMQ集群搭建

更新時間:2021-12-14 10:16:23 來源:動力節點 瀏覽1167次

1.前提

erlang安裝版本一致

RabbitMQ安裝版本一致

以下示例使用 192.168.73.134 和 192.168.73.135 構建 Rabbitmq 集群

2.RabbitMQ集群

RabbitMQ 是用 erlang 開發的。Cluster 非常方便,因為 erlang 本質上是一種分布式語言,但它不支持負載均衡。在第一次模擬考試中,Rabbit模式可以分為三種:單模、共模和鏡像模式。

第一次模擬考試:最簡單的情況,非集群模式。

普通模式:默認集群模式。

  about Queue Message實體只存在于一個節點,A,B這兩個節點只有相同的元數據,即隊列結構。  
  當消息進入A節點的Queue中后,consumer從B節點被拉取時,RabbitMQ會臨時在A、B之間傳遞消息,B中的消息實體發送給consumer。 
  因此消費者嘗試連接每個節點并從中獲取消息。也就是說,對于同一個邏輯隊列,需要在多個節點建立物理隊列。否則不管是A還是B的消費者,出口總是在A,會有瓶頸。  
  這個模型有問題 A 節點故障后, B 節點無法檢索到 A 節點中尚未消費的消息實體。 
  如果消息持久化完成,則等待A節點恢復后才能被消費;如果沒有持久化,那么將不會有更多的節點

鏡像模式:將需要的隊列做成鏡像隊列,存在于多個節點中。屬于RabbitMQ的HA方案。

  該模式解決了上述問題。其本質與普通模式的區別在于消息實體會主動在鏡像節點之間同步,而不是在鏡像節點消費者取數據時臨時拉取數據。  
  這種模式的副作用也很明顯。除了降低系統性能外,如果圖像隊列數量過多,大量消息進入,集群內的網絡帶寬也會被這種同步通信大量消耗。
  因此適用于對可靠性要求較高的場合(后面會詳細介紹這種模式,我們目前搭建的環境就屬于這種模式)。

(1)集群中的基本概念

RabbitMQ 的集群節點包括內存節點和磁盤節點。

顧名思義,內存節點將所有數據放在內存中,而磁盤節點將數據放在磁盤上。但是,如上所述,如果在傳遞消息時開啟消息持久化,即使是內存節點,數據仍然安全地放置在磁盤上。

RabbitMQ 集群可以共享用戶、虛擬主機、隊列、交換器等。必須在所有節點上復制所有數據和狀態。例外是當前屬于創建它的節點的消息隊列,盡管它們是可見的并且可以被所有節點讀取。RabbitMQ 節點可以動態加入集群。一個節點可以加入集群,也可以從集群環集群進行基本的負載均衡。

集群中有兩種類型的節點:

內存節點:只將狀態保存到內存(例外:持久隊列的持久內容會保存到磁盤)

磁盤節點:將狀態保存到內存和磁盤。

內存節點不寫入磁盤,但性能優于磁盤節點。在一個集群中,只需要一個磁盤節點來保存狀態,

如果集群中只有內存節點,則不能停止,否則所有的狀態、消息等都會丟失。

思路:

為了實現RabbitMQ的高可用,我們先搭建普通集群模式,再配置鏡像模式,實現高可用。在Rabbit集群前面增加了一個反向代理,生產者和消費者通過反向代理訪問RabbitMQ集群。

架構如下:

(2)集群模式配置

step1:局域網配置

在安裝好的三個節點服務器中,分別修改/etc/hosts文件
1. vim /etc/hosts
192.168.73.134 節點 1
192.168.73.135 節點 2

step2:為不同節點之間的相同認證設置Erlang Cookie

Erlang 集群中每個節點的魔法 cookie 來實現,這個 cookie 存儲在 /var/lib/rabbitmq/.erlang.cookie 中,該文件的權限為 400。
因此,必須保證每個節點的 cookie 一致,否則節點之間將無法通信。
從主節點采用 copy 的方式來保持 Cookie 的一致性:
1. chmod 777 /var/lib/rabbitmq/.erlang.cookie
2. scp -p 22 /var/lib/rabbitmq/.erlang.cookie [email protected]:/var/lib/rabbitmq/
復制后,檢查文件的用戶、組和權限是否符合要求。如果沒有,請修改它。在.erlang.cookie之后恢復,否則可能會遇到錯誤:
3. chown rabbitmq:rabbitmq .erlang.cookie
4. chmod 400 /var/lib/rabbitmq/.erlang.cookie

step3:使用-分離運行每個節點

在RabbitMQ重啟后設置cookie:
1. cd /sbin
2.rabbitmqctl停止
3. rabbitmq-server 啟動
這里正常重啟可能會提示節點實例再次運行。如果出現,使用以下命令啟動:
1. ps -aux | 格雷厄爾
2. kill -9 {pid}
3. RABBITMQ_NODE_PORT=5678 RABBITMQ_NODENAME=rabbit@node1 ./rabbitmq-server -detached
    RABBITMQ_NODE_PORT=5678 RABBITMQ_NODENAME=rabbit@node2 ./rabbitmq-server -detached
ps:上面的5678是因為rabbitmq端口改成了5678,而且nodename和hosts的設置是一致的。
    依次啟動所有節點。

step4:查看各個節點的狀態

1.查看啟動端口:netstat -lntp 
    活動 Internet 連接(僅限服務器)
    Proto Recv-Q Send-Q 本地地址 外地址 狀態 PID/程序名稱    
    tcp 0 0 0.0.0.0:4369 0.0.0.0:* 聽 27321/epmd          
    tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 760/sshd            
    tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1066/master         
    tcp 0 0 0.0.0.0:15678 0.0.0.0:* 聽 27862/beam.smp      
    tcp 0 0 0.0.0.0:25672 0.0.0.0:* 聽 27862/beam.smp      
    tcp6 0 0 :::5678 :::* 聽 27862/beam.smp      
    tcp6 0 0 :::8080 :::* 聽 964/java            
    tcp6 0 0 :::4369 :::* 聽 27321/epmd          
    tcp6 0 0 :::22 :::* LISTEN 760/sshd            
    tcp6 0 0 ::1:25 :::* LISTEN 1066/master         
    tcp6 0 0 127.0.0.1:8005 :::* 聽 964/java            
    tcp6 0 0 :::8009 :::* 聽 964/java
2.查看rabbitmq啟動狀態:  
    rabbitmqctl -n rabbit1@node1 狀態
    rabbitmqctl -n rabbit1@node2 狀態  
3.訪問http://bbitraq后臺打開后,可以查看網頁是否可以訪問

step5:創建和部署集群

以rabbit@rabbitmq2和rabbit@rabbitmq1組成集群,rabbitmq2作為內存節點(一個硬盤節點就夠了);
兔子MQ2:
    1.停止節點2的應用:rabbitmqctl -n rabbit@node2 stop_app
            在節點 rabbit@rabbitmq2 上停止兔子應用程序
    2.添加節點1作為內存節點rabbitmqctl -n rabbit@node2 join_cluster --ram rabbit@node1
            集群節點 rabbit@node2 與 rabbit@node1
    3、啟動節點2的應用:rabbitmqctl -n rabbit@node2 start_app
            起始節點rabbit@node2

step6:查看集群狀態

1.查看節點1的集群狀態:rabbitmqctl -n rabbit@node1 cluster_status
        節點rabbit@node1的集群狀態
        [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node2]}]},
         {running_nodes,[rabbit@node1]},
         {cluster_name,<<"rabbit@node1">>},
         {分區,[]},
         {警報,[{rabbit@node1,[]}]}] 
2.查看節點2的集群狀態:rabbitmqctl -n rabbit@node2 cluster_status
        節點rabbit@node2的集群狀態
        [{nodes,[{disc,[rabbit@node1]},{ram,[rabbit@node2]}]},
         {警報,[{rabbit@node1,[]}]}]
3.后臺查看集群狀態:

至此,rabbitmq 集群搭建完畢。

3.RabbitMQ鏡像模式

上面配置了RabbitMQ默認的集群模式,但是不保證隊列的高可用。雖然可以將切換和綁定復制到集群中的任何節點,但不會復制隊列內容。這種模式雖然解決了一些節點壓力,但是隊列節點宕機直接導致隊列無法使用,只能等待重啟。因此,需要關閉隊列節點,否則故障也可以正常使用。要將隊列的內容復制到集群中的每個節點,需要創建一個圖像隊列。

第一步:添加負載均衡器

在負載均衡器方面,F5的BIG-IP、Radware的AppDirector等商用產品都是硬件架構的產品,可以實現高處理能力。但是這些產品的高價會讓人望而卻步,所以我們也有軟件負載均衡解決方案?;ヂ摼W公司常用的軟件LB有LVS、HAProxy、Nginx等,LVS是內核層產品,主要負責第四層的數據包轉發,使用比較復雜。HAProxy 和 Nginx 是應用層產品,但 Nginx 主要用于處理 HTTP,因此選擇 HAProxy 作為 RabbitMQ 前端的 lb。

1.安裝HAProxy(在192.168.73.136安裝在HAProxy上)
    yum -y 安裝haproxy
2.修改haproxy.config進行配置
    vim /etc/haproxy/haproxy.config
    添加以下配置:
    聽rabbitmq_cluster 0.0.0.0:5678
        模式tcp
        平衡循環
        服務器rabbitmaster 192.168.73.134:5678 檢查inter 2000 上升2 下降3
        服務器rabbitslave 192.168.73.135:5678 檢查inter 2000 上升2 下降3

修改HaProxy配置后,重啟可能會提示端口綁定失敗。在這種情況下,請執行以下命令:

 setebool -P haproxy_connect_any=1

負載均衡器將監聽 192.168.73.136 的 5678 端口,并輪詢我們 192.168.73.134 和 192.168.73.135 的 5678 端口這兩個節點。這樣磁盤節點不會同時受到影響,除了故障。

第二步:配置Rabbitmq策略

在任意節點上執行:

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    上面的命令會將所有隊列設置為鏡像隊列,即隊列會被復制到每個節點,每個節點的狀態會保持一致

第三步:使用負載服務器發送消息

客戶端使用負載服務器172.16.3.110(panyuntao3)發送消息,隊列復制到所有節點。到這里我們就完成了RabbitMQ集群的高可用配置。

通過上述相信大家對RabbitMQ集群搭建已經有所了解,如果您想了解更多相關知識,可以關注一下動力節點的RabbitMQ教程,里面的內容細致全面,由淺到深,適合小白學習,希望對大家的學習能夠有所幫助。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲日韩aⅴ在线视频 | 亚洲视频综合 | 福利姬在线视频国产观看 | 中文字幕中文字幕在线 | 青青青国产免费线在 | 亚洲天天做日日做天天看2018 | 99久久99视频 | 国产成人精品久久综合 | 一本一本久久α久久精品66 | 国产精品久久一区一区 | 久草首页在线 | 看一下毛片 | 亚洲免费在线 | 欧美日韩亚洲精品国产色 | 亚洲爱婷婷色婷婷五月 | 视频在线亚洲 | 国产精品久久久久久一级毛片 | 欧美激情在线视频播放 | 毛片录像 | 久久久久国产 | www.久久综合 | 久久精品免费一区二区视 | 精品无人区乱码1区2区 | 日产精品久久久一区二区 | 国产成人精品福利色多多 | 久久大香伊蕉在人线观看热2 | 黄 色 免 费 网站在线观看 | 亚洲欧美精品一中文字幕 | 国产区精品一区二区不卡中文 | 国产欧美精品午夜在线播放 | 日产国产精品久久久久久 | 日韩欧美一区二区三区 | 2019偷偷狠狠的日日 | 在线精品免费视频 | 国产精品视频福利 | 女性下面全部视频免费 | 成人亚洲国产精品久久 | 欧美三级毛片 | 久久艹伊人| 亚洲成a人在线播放www | 中文字幕欧美日韩一 |