HAProxy 參數配置

RabbitMQ集羣部署完成,經過HAProxy反向代理來提供統一的對RabbitMQ的訪問入口。php

1.Haproxy提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。(負載均衡策略有不少:輪詢、加權輪詢、源地址哈希、最小鏈接數等等)css

2.爲何使用集羣?面對大量業務訪問、高併發請求可使用高性能的服務器來提高RabbitMQ服務的負載能力。當單機容量達到極限時,採起集羣的策略來對負載能力作進一步的提高和提高系統穩定性,可是這裏還存在一個負載不均衡的問題。若是一個集羣中有3個節點,全部的客戶端都與其中的單個節點node1創建TCP鏈接,那麼node1的網絡負載必然會大大增長而顯得難以承受,其餘節點又因爲沒有那麼多的負載而形成硬件資源的浪費。經過使用 haproxy 的負載策略來轉發客戶端的請求到RabbitMQ集羣中,緩解隊列集羣中單一節點網絡負載等狀況html

 3.RabbitMQ集羣的搭建方式有多種,其中就包括咱們今天要說的RabbitMQ+HAProxy的形式。前端

HAProxy是部署在Linux服務器的一個很是容易安裝的程序包,對於安裝咱們再也不贅述,咱們只說明HAProxy的配置。node

HAProxy部署完成之後,在配置文件/etc/haproxy/haproxy.cfg(Haproxy的安裝路徑) 的後面加上如下配置android

  1 # 配置文件
  2 -------------------------------------------------------
  3 # 全局配置
  4 global
  5 
  6     # 設置日誌文件輸出定向
  7     log 127.0.0.1 local3 info
  8 
  9     # 改變當前工做目錄
 10     chroot /usr/local/haproxy
 11 
 12     # 用戶與用戶組
 13     user haproxy
 14     group haproxy
 15 
 16     # 守護進程啓動,運維方式爲後臺工做
 17     daemon
 18 
 19     # 最大鏈接數
 20     maxconn 4000
 21 
 22 # 做用於其後緊跟的listen塊,直至下一個defaults 塊,下一個default 將替換上一個塊做用於之後的listen 
 23 defaults
 24 
 25     # 啓用每一個實例日誌記錄事件和流量。
 26     log global
 27     
 28     # 默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
 29     mode http
 30 
 31     # maxconn 65535         maxconn 每一個進程可用的最大鏈接數
 32     # retries 3         當對server的connection失敗後,重試的次數  
 33     # option abortonclose     啓用或禁用在隊列中掛起的停止請求的早期丟棄 
 34     # option redispatch     啓用或禁用在鏈接故障狀況下的會話從新分配 
 35     # option dontlognull     啓用和禁用 記錄 空鏈接
 36     # option httpclose         每次請求完畢後主動關閉http通道,HA-Proxy不支持keep-alive模式 
 37     # option forwardfor     得到客戶端IP 
 38     # option httplog        記錄HTTP 請求,session 狀態和計時器 
 39     option httplog
 40     option dontlognull
 41     timeout connect 5000
 42     timeout client 50000
 43     timeout server 50000
 44 
 45 
 46 #前端配置,http_front名稱可自定義
 47 frontend http_front
 48     
 49     # bind *:443 ssl crt /etc/haproxy/cert.pem        啓用ssl證書 
 50     # bind *:80                        發起http請求道80端口,會被轉發到設置的ip及端口
 51     bind *:80
 52 
 53     #haproxy的狀態管理頁面,經過/haproxy?stats來訪問
 54     stats uri /haproxy?stats
 55     default_backend http_back
 56 
 57 #後端配置,http_back名稱可自定義
 58 backend http_back
 59 
 60     # 負載均衡方式
 61     # source 根據請求源IP
 62     # static-rr 根據權重
 63     # leastconn 最少鏈接者先處理
 64     # uri 根據請求的uri
 65     # url_param 根據請求的url參數
 66     # rdp-cookie 據據cookie(name)來鎖定並哈希每一次請求
 67     # hdr(name) 根據HTTP請求頭來鎖定每一次HTTP請求
 68     # roundrobin 輪詢方式
 69     balance roundrobin
 70 
 71     #設置健康檢查頁面
 72     option httpchk GET /index.html
 73 
 74     #傳遞客戶端真實IP
 75     option forwardfor header X-Forwarded-For
 76 
 77     # inter 2000 健康檢查時間間隔2秒
 78     # rise 3 檢測多少次才認爲是正常的
 79     # fall 3 失敗多少次才認爲是不可用的
 80     # weight 30 權重
 81     # 須要轉發的ip及端口
 82     server node1 192.168.179.131:8081 check inter 2000 rise 3 fall 3 weight 30
 83     server node2 192.168.179.131:8082 check inter 2000 rise 3 fall 3 weight 30
 84 
 85 -------------------------------------------------------
 86 
 87 
 88 
 89 # haproxy的acl規則
 90 -------------------------------------------------------
 91 
 92 frontend http_front
 93     bind *:80
 94     stats uri /haproxy?stats
 95  
 96     #建立一個acl,is_http_back2是acl的名稱,可自定義,用於判斷主機名是否爲www.back2.com
 97     acl is_http_back2 hdr_end(host) www.back2.com
 98 
 99     #經過正則判斷主機名中是否爲bbs.back.com或forum.back.com
100     acl is_host_bbs hdr_reg(host) -i ^(bbs.back.com|forum.back.com)
101 
102     #判斷ua是否爲android
103     acl is_ua_android hdr_reg(User-Agent) -i android
104 
105     #判斷主機名開頭是否爲img.或css.或js.
106     acl is_host_static hdr_beg(host) -i img. css. js.
107 
108     #判斷url路徑中是否有/bbs
109     acl is_path_bbs path_beg -i /bbs
110 
111     #判斷url文件結尾
112     acl is_php path_end -i .php
113 
114     #經過正則判斷url中結尾以
115     acl is_static_file url_reg -i /*.(css|jpg|png|jpeg|gif)$
116 
117     #效果同上
118     acl is_static_file2 path_end -i .css .jpg .png .jpeg .gif
119 
120     #若是主機名是www.back2.com那麼就使用後端http_back2
121     use_backend http_back2ifis_http_back2
122 
123     #默認使用的後端
124     default_backend http_back
125 
126 backend http_back
127     balance roundrobin
128     option httpchk GET /index.html
129     option forwardfor header X-Forwarded-For
130     server node1 192.168.1.222:8080 check inter 2000 rise 3 fall 3 weight 30
131 
132 backend http_back2
133     balance roundrobin
134     option httpchk GET /index.html
135     option forwardfor header X-Forwarded-For
136     server node2 192.168.1.222:8082 check inter 2000 rise 3 fall 3 weight 30
137 
138 -------------------------------------------------------

 

4.HAProxy及RabbitMQ均部署完成後,能夠經過查看HAProxy的監控頁面,來確認HAProxy是否正確安裝redis

 

 

 5.HAProxy及RabbitMQ的部署關係後端

 

 

 針對HAProxy參數配置,比較固定,調整的時機也很小,但每一個參數都有其必要的做用,所以瞭解每一個經常使用HAProxy參數是很是有必要的。服務器

針對RabbitMQ集羣,順便提一下,部署了集羣之後,務必針對重要隊列開啓鏡像,由於能夠最大限度的避免消息丟失。cookie

相關文章
相關標籤/搜索