Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

章 5. HAProxy 配置

本章解釋了基本設定的配置方式,點出系統管理者在高可用性環境中建置 HAProxy 服務時,會遇到的一般配置選項。
HAProxy 自己擁有一組進行負載平衡用的排程演算法則。這些演算法則詳述於〈節 5.1, “HAProxy 排程演算法則”〉中。
請透過 /etc/haproxy/haproxy.cfg 檔案配置 HAProxy。
使用 HAProxy 的 Load Balancer 配置包含了五個部分:

5.1. HAProxy 排程演算法則

用來進行負載平衡的 HAProxy 排程演算法則可透過 /etc/haproxy/haproxy.cfg 配置檔案的 backend 部分中的 balance 參數來進行編輯。請注意,HAProxy 支援含有多重後端的配置,並且各個後端皆可透過一個排程演算法則來進行配置。
循環法roundrobin
將請求依序發給集區中的伺服器。使用此演算法則時,所有真實伺服器不管能力為何,都會被視為平等。此排程模式類似循環 DNS(round-robin DNS)法,但更為細緻,因為這模式是以網路連線為基礎,而非以主機為基礎。 Load Balancer 的循環配置資源排程也不會因為快取了 DNS 的查詢項目而導致不平衡。然而,在 HAProxy 中,因為伺服器權重的配置能輕易透過此排程器來完成,因此各個後端的啟用中的伺服器數量會被限制為 4095。
靜態循環法static-rr
循環法(Round-Robin)一般地在一組伺服器之間循序性地分散各項請求,不過不允許動態式配置伺服器的權重。然而,基於伺服器權重的靜態本質,後端中不會有伺服器啟用數量上的限制。
最少連線排程法leastconn
將請求分散至連線數較少的真實伺服器。當處於一個動態式且包含各種 session 或是連線長度的環境中,對管理員來說這個排程器可能會較適合其環境。這也適用於一個包含了一組擁有不同生產力的伺服器的環境中,因為透過此排程器管理員可輕易調整權重。
來源source
透過雜湊請求的來源 IP 位址,並除以所有運作中的伺服器的權重,以判斷哪個伺服器將會收到請求。在所有伺服器皆在運作的情況下,來源 IP 的請求將會持續性地透過相同的真實伺服器處理。若運作中的伺服器之數量或權重改變的話,session 可能會被移至另一個伺服器上,因為雜湊/權重的結果已改變。
URIuri
透過雜湊整個 URI(或是 URI 的可配置部分)並除以所有運作中的伺服器的權重,以判斷哪個伺服器將會收到請求。在所有啟用中的伺服器皆在運作的情況下,來源 IP 的請求將會持續性地由相同的真實伺服器處理。此排程器亦可藉由配置 URI 起始的字元長度以運算雜湊結果,或藉由配置 URI 中的目錄的深度(以 URI 中的正斜線表明)來運算雜湊結果。
URL 參數url_param
藉由在來源 URL 請求中找尋特定參數字串,並執行一項雜湊計算除以所有運作中的伺服器的權重,以將請求分散至伺服器上。若 URL 中缺少了參數,排程器便會預設使用循環排程法。您可基於 POST 參數使用修飾符號,並根據管理員指定特定參數運算雜湊結果前,所需等待的最大八位組(octet)來決定等待限制。
表頭名稱hdr
透過選取各個來源 HTTP 請求中的特定表頭名稱來將請求發佈至伺服器上,並進行一項雜湊計算然後除以所有運作中伺服器的權重。若表頭不存在,排程器便會預設使用循環法(Round-robin)排程。
RDP Cookierdp-cookie
透過查詢每項 TCP 請求的 RDP cookie 來將請求發佈至伺服器上,並執行一項雜湊計算然後除以所有運作中伺服器的權重。若表頭不存在的話,排程器便會預設使用循環法(Round-robin)排程。這方式適用於需保有永續性的情況下,因為它會保留 session 的完整性。