RabbitMQ學習之集群鏡像模式配置


1.增加負載均衡器

關於負載均衡器,商業的比如F5的BIG-IP,Radware的AppDirector,是硬件架構的產品,可以實現很高的處理能力。但這些產品昂貴的價格會讓人止步,所以我們還有軟件負載均衡方案。互聯網公司常用的軟件LB一般有LVS、HAProxy、Nginx等。LVS是一個內核層的產品,主要在第四層負責數據包轉發,使用較復雜。HAProxy和Nginx是應用層的產品,但Nginx主要用於處理HTTP,所以這里選擇HAProxy作為RabbitMQ前端的LB。HAProxy的安裝使用非常簡單,在Centos下直接yum install haproxy,然后更改/etc/haproxy/haproxy.cfg 文件即可,文件內容大概如下:

 

[plain]  view plain  copy
 
 print?
  1. #---------------------------------------------------------------------  
  2. # Global settings  
  3. #---------------------------------------------------------------------  
  4. global  
  5.   
  6.     log         127.0.0.1 local2  
  7.   
  8.     chroot      /var/lib/haproxy  
  9.     pidfile     /var/run/haproxy.pid  
  10.     maxconn     4000  
  11.     user        haproxy  
  12.     group       haproxy  
  13.     daemon  
  14.   
  15.     # turn on stats unix socket  
  16.     stats socket /var/lib/haproxy/stats  
  17.   
  18. #---------------------------------------------------------------------  
  19. # common defaults that all the 'listen' and 'backend' sections will  
  20. # use if not designated in their block  
  21. #---------------------------------------------------------------------  
  22. defaults  
  23.     mode                    http  
  24.     log                     global  
  25.     option                  httplog  
  26.     option                  dontlognull  
  27.     option http-server-close  
  28.     option forwardfor       except 127.0.0.0/8  
  29.     option                  redispatch  
  30.     retries                 3  
  31.     timeout http-request    10s  
  32.     timeout queue           1m  
  33.     timeout connect         10s  
  34.     timeout client          1m  
  35.     timeout server          1m  
  36.     timeout http-keep-alive 10s  
  37.     timeout check           10s  
  38.     maxconn                 3000  
  39.     listen rabbitmq_cluster 0.0.0.0:5672  
  40.     mode tcp  
  41.     balance roundrobin  
  42.     server   rqslave1 192.168.36.102:5672 check inter 2000 rise 2 fall 3     
  43.     server   rqslave2 192.168.36.136:5672 check inter 2000 rise 2 fall 3   
  44.     #server   rqmaster 192.168.36.217:5672 check inter 2000 rise 2 fall 3    

啟動:service haproxy  start

 

負載均衡器會監聽5672端口,輪詢我們的兩個內存節點192.168.36.102、192.168.36.136的5672端口,192.168.36.217為磁盤節點,只做備份不提供給生產者、消費者使用,當然如果我們服務器資源充足情況也可以配置多個磁盤節點,這樣磁盤節點除了故障也不會影響,除非同時出故障。

2.配置策略

使用Rabbit鏡像功能,需要基於rabbitmq策略來實現,策策是用來控制和修改群集范圍的某個vhost隊列行為和Exchange行為在cluster中任意節點啟用策略,策略會自動同步到集群節點
# rabbitmqctl set_policy -p hrsystem ha-allqueue"^" '{"ha-mode":"all"}'
這行命令在vhost名稱為hrsystem創建了一個策略,策略名稱為ha-allqueue,策略模式為 all 即復制到所有節點,包含新增節點,
策略正則表達式為 “^” 表示所有匹配所有隊列名稱。
例如rabbitmqctl set_policy -p hrsystem ha-allqueue "^message" '{"ha-mode":"all"}'
注意:"^message" 這個規則要根據自己修改,這個是指同步"message"開頭的隊列名稱,我們配置時使用的應用於所有隊列,所以表達式為"^"

set_policy說明參見
set_policy [-p vhostpath] {name} {pattern} {definition} [priority]      #ha-mode:all、exactly、nodes

也可以通過rabbit控制台添加

下面我們來添加一個queues隊列來看看效果,這里只是測試結果,其它的先不填寫

在這里邊添加的時候你是可以指定Node選項也就是把這個queues放在哪個node節點上.

 

3.創建隊列時需要指定ha 參數,如果不指定x-ha-prolicy 的話將無法復制

4.客戶端使用負載服務器192.168.36.127發送消息,隊列會被復制到所有節點,當然策略也可以配置制定某幾個節點,這時任何節點故障 、或者重啟將不會影響我們正常使用某個隊列,到這里我們完成了高可用配置(所有節點都宕機那沒有辦法了)。

5.使用rabbitmq管理端可以看到集群鏡像模式中對列狀態

 

參考官網:http://www.rabbitmq.com/ha.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM