瞭解RabbitMQ叢集架構
主備模式
實現RabbitMQ的高可用叢集,一般在併發和資料量不高的情況下,這種模式非常的好且簡單。主備模式也稱為Warren模式
主備模式
:主節點提供讀寫,從節點不提供讀寫服務,只是負責提供備份服務,備份節點的主要功能是在主節點宕機時,完成自動切換 從-->主
主從模式
:主節點提供讀寫,從節點只讀
- 主備模式:所謂rabbitmq另外一種模式就是warren(兔子窩),就是一個主/備方案(主節點如果掛了,從節點提供服務而已,和activemq利用zookeeper做主/備一樣)
- HaProxy配置:
listen rabbitmq_cluster
bind 0.0.0.0:5672
mode tcp #配置TCP模式
balance roundrobin #簡單的輪詢
server bhz76 192.168.11.12:5672 check inter 5000 rise 2 fall 3 #主節點
server bhz77 192.168.11.13:5672 backup check inter 5000 rise 2 fall 3 #備用節點
備註:
rabbitmq叢集節點配置 #inter 每隔5秒對mq叢集做健康檢查,2次正確證明伺服器可用,3次失敗證明伺服器不可用,並且配置主備機制
遠端模式(不常用
)
遠端模式:遠距離通訊和複製,所謂Shovel就是我們可以把訊息進行不同資料中心的複製工作,我們可以跨地域的讓兩個mq叢集互聯。我們下面看一下Shovel架構模型:
在使用了shovel外掛後,模型變成了近端同步確認
,遠端非同步確認
方式,大大提高了訂單確認速度,並且還能保證可靠性。
-
遠端模式:Shovel叢集的拓補圖:
-
Shovel叢集的配置,首先啟動rabbitmq外掛,命令如下:
rabbitmq-plugins enable amqp_client
rabbitmq-plugins enable rabbitmq_shovel
-
建立rabbitmq.conf檔案:touch /etc/rabbitmq/rabbitmq.config
-
新增配置見rabbitmq.config
-
最後我們需要資源伺服器和目的伺服器都使用相同的配置檔案(rabbitmq.config)
具體配置 自行百度
映象模式(常用
)
-
映象模式:叢集模式非常經典的就是Mirror映象模式,保證100%資料不丟失,在實際工作中用的最多的。並且實現叢集非常的簡單,一般網際網路大廠都會構建這種映象叢集模式。
-
Mirror映象佇列,目的是為了保證rabbitmq資料的高可靠性解決方案,主要就是實現資料的同步,一般來講是2-3個實現資料同步(對於100%資料可靠性解決方案一般是3個節點)叢集架構如下:
多活模式
-
多活模式:這種模式也是實現異地資料複製的主流模式,因為Shovel模式配置比較複雜,所以一般來說實現異地叢集都是使用雙活或者多活模式來實現的。這種模式需要依賴rabbitmq的federation外掛,可以實現繼續的可靠AMQP資料通訊,多活模式在實際配置與應用非常的簡單。
-
RabbitMQ部署架構採用雙中心模式(多中心),那麼在兩套(或多套)資料中心中各部署一套RabbitMQ叢集,各中心之間還
需要實現部分佇列訊息共享。多活叢集架構如下:
Federation外掛
是一個不需要構建Cluster,而在Brokers之間傳輸訊息的高效能外掛,Federation外掛可以在Brokers或者Cluster之間傳輸訊息,連線雙方可以使用不同的users和vistual hosts,雙方也可以使用版本不同的RabbitMQ和Erlang。Federation外掛使用AMQP協議通訊,可以接收不連續的傳輸。
- Federation Exchanges,可以看成Downstream從Upstream主動拉取訊息,但並不是拉取所有訊息,必須是在Downstream上已經明確定義Bindings關係的Exchange,也就是有實際的物理Queue來接收訊息,才會從Upstream拉取訊息到Downstream。使用AMQP協議實施代理間通訊,Downstream會將繫結關係組合在一起,繫結/解綁命令將會發送到Upstream交換機。因此,FederationExchange只接收具有訂閱的訊息。
RabbitMQ叢集映象模式從0到1
-
RabbitMQ叢集環境節點說明
詳細步驟:
RabbitMQ映象叢集搭建步驟
HAProxy
是一款提供高可用性、負載均衡
以及基於TCP(第四層)和HTTP(第七層)應用的代理軟體,支援虛擬主機,他是免費、快速並且可靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy執行在時下的硬體上,完全可以支撐數以萬計的併發連線。並且它的執行模式使得它可以很簡單安全的整合進您當前的架構中,同時可以保護你的web伺服器不被暴露到網路上。- HAProxy藉助於OS上幾種常見的技術來實現效能的最大化:
- 單程序、時間驅動模型顯著降低上下文切換的開銷及記憶體佔用
- 在任何可用的情況下,單緩衝(single buffering)機制能以不復制任何資料的方式完成讀寫操作,這會節約大量的CPU時鐘週期及記憶體頻寬
- 藉助於Linux2.6上的splice()系統呼叫,HAProxy可以實現零複製轉發(Zero-copy- forwarding),在linux3.5及以上的OS上還可以實現零複製啟動(zero-starting)
-
KeepAlived
軟體主要是通過VRRP協議實現高可用
功能的。VRRP是Virtual Router RedundancyProtocol(虛擬路由器冗餘協議)的縮寫,VRRP出現的目的就是為了解決靜態路由單點故障問題的,它能保證黨個別節點宕機時,整個網路可以不間斷地執行,所以,KeepAlived一方面具有配置管理LVS的功能,同時還具備對LVS下面節點進行健康檢查差的功能,另一方面可實現系統網路服務的高可用功能。 -
KeepAlived服務的三個重要功能:
- 管理LVS負載均衡軟體
- 實現LVS叢集節點的健康檢查
- 作為系統網路服務的高可用性(failover)
-
KeepAlived高可用原理
KeepAlived高可用服務對之間的故障轉移,是通過VRRP(Virtual Router Redundancy Protocol,虛擬路由器冗餘協議)來實現的。在KeepAlived服務正常工作是,主Master節點會不斷地向備節點發送(多播的方式)心跳訊息,用以告訴備Backup節點自己還活著,當主master節點發生故障時,就無法傳送心跳訊息,備節點也就因此無法繼續監測到來自主Master節點的心跳了,於是呼叫自身的接管程式,接管主Master節點 的IP資源及服務。當主Master節點恢復時,備Backup節點又會釋放主節點故障時自身接管的IP資源和服務,恢復到原來的備用角色。
連結:https://www.jianshu.com/p/588e1c959f03