backend dynamic #後臺
balance roundrobin #負載均衡算法(輪循)
server web2 172.25.83.3:80 check inter 1000
server web2 172.25.83.3:80 check inter 1000
#check inter 1500 是檢測心跳頻率
balance 定義負載均衡算法(可用於“defaults”和“backend”)。
語法:balance algorithm [ arguments ]
algorithm用於在負載均衡場景中挑選一個server,其僅應用於持久信息不可用的條件下或需要將一個連接重新派發至另一個服務器時。
支持的算法有:
roundrobin:基於權重進行輪叫,在服務器的處理時間保持均勻分佈時,這是最平衡、最公平的算法。此算法是動態的,這表示其權重可以在運行時進行調整,不過,在設計上,每個後端服務器僅能最多接受4128個連接;
static-rr:基於權重進行輪叫,與roundrobin類似,但是爲靜態方法,在運行時調整其服務器權重不會生效;不過,其在後端服務器連接數上沒有限制;
leastconn:新的連接請求被派發至具有最少連接數目的後端服務器;在有着較長時間會話的場景中推薦使用此算法,如LDAP、SQL等,其並不太適用於較短會話的應用層協議,如HTTP;此算法是動態的,可以在運行時調整其權重;
source:將請求的源地址進行hash運算,並由後端服務器的權重總數相除後派發至某匹配的服務器;這可以使得同一個客戶端IP的請求始終被派發至某特定的服務器;不過,當服務器權重總數發生變化時,如某服務器宕機或添加了新的服務器,許多客戶端的請求可能會被派發至與此前請求不同的服務器;常用於負載均衡無cookie功能的基於TCP的協議;其默認爲靜態,不過也可以使hash-type修改此特性;
server 定義後端服務器
語法: server name address [param ]
name:爲此服務器指定的內部名稱,其將出現在日誌及警告信息中;如果設定了"http-send-server-name",它還將被添加至發往此服務器的請求首部中;
address:此服務器的的IPv4地址,也支持使用可解析的主機名,只不過在啓動時需要解析主機名至相應的IPv4地
址;
param:爲此服務器設定的一系參數;其可用的參數非常多,具體請參考官方文檔中的說明,下面僅說明幾個常用的參數:
disabled:此服務器禁用;
backup:設定爲備用服務器,僅在負載均衡場景中的其它server均不可用才啓用此server;
check:啓動對此server執行健康狀態檢查,其可以藉助於額外的其它參數完成更精細的設定;
inter delay:設定監控狀態檢查的時間間隔,單位爲毫秒,默認爲2000,也可以使用fastinter和downinter來根據服務器端專題優化此事件延遲;
rise count:設定檢查狀態檢查中,某離線的server從離線狀態轉換至正常狀態需要成功檢查的次數;
fall count:設定檢查狀態檢查中,某server從正常狀態轉換至離線狀態需要成功檢查的次數;
cookie value:爲指定server設定cookie值,此處指定的值將在請求入站時被檢查,第一次爲此值挑選的server將在後續的請求中被選中,其目的在於實現持久連接的功能;
maxconn maxconn:指定此服務器接受的最大併發連接數;如果發往此服務器的連接數目高於此處指定的值,其將被放置於請求隊列,以等待其它連接被釋放;
maxqueue maxqueue:設定請求隊列的最大長度;0表示無上限;
weight weight:權重,默認爲1,最大值爲256,0表示不參與負載均衡;