ubuntu下搭建主/備RabbitMQ集羣

主/備架構圖:javascript

使用192.168.111.201:5672/5671訪問haproxy,由haproxy轉發請求,這是一對主/備獨立服務器,並前置一臺負載均衡器來處理故障轉移。這是真正的無共享架構,主服務器和備用服務器之間沒有協做,因此任何影響到主服務器的問題不會自動轉移到備用服務器上。分隔的足夠完全,能夠運行不一樣版本的RabbitMQ,運行在生產環境中引入新版RabbitMQ。css

 

當主節點發生故障時,讓備用節點擁有主節點的全部消息可以使用共享存儲架構(主服務器故障時,使用Pacemaker將RabbitMQ的IP地址轉移到備用節點上並啓動RabbiMQ服務器,採用共享存儲上的當前元數據、內容和狀態),但存在以下的問題:java

(1)       由於是共享的,因此若是因爲某些緣由致使主節點故障那麼一樣的事情會發生在備用節點上,從而RabbitMQ服務器沒法啓動。redis

(2)       須要確保兩臺服務器擁有相同的節點名稱和UID,當兩處有一處不一樣備用節點就沒法訪問主節點共享存儲的信息了。後端

官網給出了傳統的基於pacemaker的active/passive模式的集羣,因爲崩潰會在主備間複製的事實,而且在使用共享存儲方法時沒法在兩個節點上都運行RabbitMQ,所以選擇基於負載均衡器的主/備搭建。bash

RabbitMQ與HAProxy的搭建參考個人上一篇,固然使用主/備模式安裝RabbitMQ集羣時就不須要節點鏈接了。服務器

http://my.oschina.net/lzhaoqiang/blog/701618架構

 

 

接下來是配置haproxy:app

#---------------------------------------------------------------------

# Global settings

#---------------------------------------------------------------------

global

    log    127.0.0.1 local2  #[err warning info debug]

    chroot  /usr/local/haproxy

    pidfile  /var/run/haproxy.pid #haproxy的pid存放路徑,啓動進程的用戶必須有權限訪問此文件

    maxconn  4096         #最大鏈接數,默認4000

    daemon  #建立1個進程進入deamon模式運行。此參數要求將運行模式設置爲"daemon"

nbproc 1 #後臺進程數,這個要求是 daemon ,需小於cpu內核數



#---------------------------------------------------------------------

# common defaults that all the 'listen' and 'backend' sections will

# use if not designated in their block

#---------------------------------------------------------------------

defaults

    mode   http   #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK

    log    global     #採用全局定義的日誌

    option  dontlognull   #不記錄健康檢查的日誌信息

    option  httpclose    #每次請求完畢後主動關閉http通道

    option  tcplog

    #option  forwardfor   #若是後端服務器須要得到客戶端真實ip須要配置的參數,能夠從Http Header中得到客戶端ip 

    option  redispatch   #serverId對應的服務器掛掉後,強制定向到其餘健康的服務器

    timeout connect 10s  #default 10 second timeout if a backend is not found

    timeout client 30s  #客戶端鏈接超時

    timeout server 30s  #服務器鏈接超時

timeout check   5s  #設置對後端服務器的檢測超時時間,默認單位是毫秒

    maxconn     60000  #最大鏈接數

    retries     3    #3次鏈接失敗就認爲服務不可用,也能夠經過後面設置



#---------------------------------------------------------------------

# main frontend which proxys to the backends

#---------------------------------------------------------------------

#frontend main *:5000

#    acl url_static path_beg    -i /static /images /javascript /stylesheets

#    acl url_static path_end    -i .jpg .gif .png .css .js

#

#    use_backend static if url_static #知足策略要求,則響應策略定義的backend頁面

#    default_backend   app       #不知足則響應backend的默認頁面



#---------------------------------------------------------------------

# static backend for serving up images, stylesheets and such

#---------------------------------------------------------------------

#backend static

#    balance     roundrobin           #負載均衡模式輪詢

#   server      static 127.0.0.1:4331 check #後端服務器定義



#---------------------------------------------------------------------

# round robin balancing between the various backends

#---------------------------------------------------------------------

listen stats

        bind 0.0.0.0:8100               #監聽端口

        mode http                       #http的7層模式

        option tcplog                  #採用tcp日誌格式

        #log 127.0.0.1 local0 err

        maxconn 5

        stats refresh 30s               #統計頁面自動刷新時間

        stats uri /stats                #統計頁面url

        stats realm welcome login\ Haproxy   #統計頁面密碼框上提示文本

        stats auth admin:admin          #統計頁面用戶名和密碼設置

        stats hide-version              #隱藏統計頁面上HAProxy的版本信息





listen rabbitmq_master_backup_cluster

         bind 0.0.0.0:5672

         mode tcp

balance    roundrobin

server  rqmaster 192.168.111.136:5672 check inter 2000 rise 2 fall 3

server  rqbackup 192.168.111.137:5672 backup check inter 2000 rise 2 fall 3

listen rabbitmq_master_backup_cluster_ssl

bind 0.0.0.0:5672

         mode tcp

             balance    roundrobin

             server  rqmaster 192.168.111.136:5671 check inter 2000 rise 2 fall 3

             server  rqbackup 192.168.111.137:5671 backup check inter 2000 rise 2 fall 3

啓動:負載均衡

sudo /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

   

能夠看到rmqmaster與rmqbackup兩個節點顏色不一樣,主機爲active UP  ,備機爲backup UP,當主機宕掉時,備機就會接管服務

相關文章
相關標籤/搜索