haproxy配置文件詳解


global配置參數

maxconn 100000 #每個haproxy進程的最大並發連接數 chroot /apps/haproxy #把haproxy鎖定一個工作目錄;當發生特殊情況,haproxy被控制時,也只能在鎖定的目錄下,不能跳轉到其他目錄 stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin #指定socket文件路徑及文件的權限 user haproxy group haproxy #uid 99 #gid 99 #99是nobody daemon #以守護進程方式啟動 nbproc 4 #haproxy工作進程數量;與CPU核心數量相對應 cpu-map 1 0 #第一個工作進程綁定在第0核CPU上 cpu-map 2 1 #第二個工作進程綁定在第1核CPU上 cpu-map 3 2 cpu-map 4 3 maxconn       #每個haproxy進程的最大並發連接數 maxsslconn   #每個haproxy進程ssl最大連接數,用於haproxy配置了證書的場景下 maxconnrate   #每個進程每秒創建的最大連接數量 pidfile /var/lib/haproxy/haproxy.pid spread-checks 3 #后端server狀態檢查,隨機提前或延遲百分比時間,建議2-5(20%-50%)之間;設置當前檢測時間為3s,則會提前3s的20%-50%,或者 延后3s的20%-50%;把同時探測的壓力分散開 log 127.0.0.1 local3 info #生成的日志發送給本機的syslog服務器;最多可以定義兩個;定義的是local3設備,所以需要在syslog服務器的配置文件中進行定 義;vim /etc/rsyslog.conf;添加local3.* /var/log/haproxy.log,記錄local3設備的所有級別的日志到指定文件中;並且 需要開啟$ModLoad imtcp、$InputTCPServerRun 514這兩行,使用TCP協議進行日志轉發;systemctl restart rsyslog 

Proxies配置

defaults [<name>] #默認配置項,針對以下的frontend、backend和lsiten生效,可以多個name;defaults后面的name是一個可有可無的。 frontend <name>  #前端servername,類似於Nginx的一個虛擬主機 server;后面必須有name。 backend <name>   #后端服務器組,等於nginx的upstream;后面必須有name。 listen   <name> #將frontend和backend合並在一起配置;后面必須有name。 注意1:name字段只能使用”-”、”_”、”.”、和”:”,並且嚴格區分大小寫,例如:Web和web是完全不同的兩組服務器。 注意2:如果frontend、listen中進行了配置,則以frontend、listen為准;如果frontend、listen中未進行配置,則以defaults配置為准。 

Proxies配置-defaults

option redispatch     #當server Id(real server)對應的服務器掛掉后,強制定向到其他健康的服務器   option abortonclose   #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接;一般長時間處理的服務器(連接數據庫等),需要關閉該選項 option http-keep-alive #開啟與客戶端的會話保持,在不超時的情況下,再次訪問就不需要TCP三次握手建立連接 option forwardfor     #透傳客戶端真實IP至后端web服務器 mode http #haproxy默認工作類型,基於應用層;如果后端服務器有自己的應用層協議,可單獨在后端代理上定義協議類型;工作中一般為TCP timeout connect 120s #客戶端請求到后端server的最長連接等待時間(haproxy與后端服務器TCP三次握手之前) timeout server 600s #客戶端請求到后端服務端的超時超時時長(TCP之后);如果在600s后端服務器還未給haproxy返回,則會報502(后端服務器超時) timeout client 600s #與客戶端的最長非活動時間;600s內客戶端沒有向haproxy請求資源,則haproxy將會主動切斷與客戶端的連接 timeout http-keep-alive 120s #session 會話保持超時時間,范圍內會轉發到相同的后端服務器 timeout check   5s   #對后端服務器的檢測超時時間 

Proxies配置-frontend

示例1:
1 frontend yewu-service-80                     #前端的名字一般為:業務-服務-端口號
2     bind 192.168.38.37:80,192.168.38.37:81   #指定haproxy監聽的IP及端口,可以是多個IP;也可以寫成,IP:80-89,或者是sock文件
3     mode tcp                                 #指定負載均衡協議類型
4     use_backend yewu-service-80-nodes        #調用后端服務器組的名稱

示例2:
1 frontend http_https_proxy  #https監聽
2    bind :80
3    bind :443 ssl crt /etc/haproxy/site.pem

Proxies配置-backend

定義一組后端服務器,backend服務器將被frontend進行調用。 server #定義后端real server check #對指定real server進行健康狀態檢查,默認不開啟 addr IP   #可指定的健康狀態監測IP port num #指定的健康狀態監測端口;一般先對后端重要的服務的端口進行檢查,如果重要服務的端口存在,則進行后端服務器的負載均衡;一般反向代理的 IP和端口號與重要服務的IP不在同一個網段;如nginx與php,先檢查后端nginx服務器的php的9000端口是否存在,存在才反向代理后端的nginx 服務器 inter num #健康狀態檢查間隔時間,默認2000ms fall num  #后端服務器失效檢查次數,默認為3,失敗3次,從后端服務器組里面踢出去;1次失敗有可能是網絡問題,所以設置為檢測失敗3次;檢測的時候, 用戶的請求也會往服務器進行轉發,所以失敗檢測次數不能太多;被踢出去后,用戶的請求將不會往該服務器轉發 rise num  #后端服務器從下線恢復檢查次數,默認為2;后端服務器宕機,恢復后,檢查成功2次后,重新添加到haproxy反向代理的服務器組里面 weight #默認為1,最大值為256,0表示不參與負載均衡 backup #將后端服務器標記為備份狀態;當所有服務器都宕機時,backup服務器才會啟動,相當於say sorry服務器 disabled #將后端服務器標記為不可用狀態 redirect prefix http://www.xxx.net/   #將請求臨時重定向至其它URL,只適用於http模式 maxconn <maxconn>:當前,后端server的最大並發連接數 backlog <backlog>:當server的連接數達到上限后的后援隊列長度 示例:
1 backend yewu-service-80-nodes    #指定后端服務器組的名稱;一般為,前端名稱-nodes
2  mode tcp        #后端服務器組的協議類型必須與前端一致
3  server web1 192.168.38.27:80 weight 1 check addr 192.168.38.27 port 9000 inter 3s fall 3 rise 5   #反向代理前,先檢查192.168.38.37:9000
                                                                                                      端口是否可以訪問,可訪問才會進行反向代
                                                                                                      理;如果9000端口不能訪問,則不進行反向
                                                                                                      代理
4  server web2 192.168.38.47:80 check   #指定后端服務器的名稱、IP、端口號,以及檢查
 

使用listen替換frontend+backend的配置方式

1 listen yewu-service-80      #指定名稱,業務-服務-端口號
2  bind 192.168.38.37:80      #指定haproxy所監聽的IP及端口號
3  mode http                  #指定反向代理的協議類型
4  option forwardfor          #把用戶的IP透傳給后端服務器
5  server web1 192.168.38.27:80 weight 1 check inter 3000 fall 3 rise 5     #指定后端服務器的名稱、IP、端口號等
6  server web2 192.168.38.47:80 weight 1 check inter 3000 fall 3 rise 5


免責聲明!

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



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