Show Table of Contents
章 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 可能會被移至另一個伺服器上,因為雜湊/權重的結果已改變。
- URI(
uri) - 透過雜湊整個 URI(或是 URI 的可配置部分)並除以所有運作中的伺服器的權重,以判斷哪個伺服器將會收到請求。在所有啟用中的伺服器皆在運作的情況下,來源 IP 的請求將會持續性地由相同的真實伺服器處理。此排程器亦可藉由配置 URI 起始的字元長度以運算雜湊結果,或藉由配置 URI 中的目錄的深度(以 URI 中的正斜線表明)來運算雜湊結果。
- URL 參數(
url_param) - 藉由在來源 URL 請求中找尋特定參數字串,並執行一項雜湊計算除以所有運作中的伺服器的權重,以將請求分散至伺服器上。若 URL 中缺少了參數,排程器便會預設使用循環排程法。您可基於 POST 參數使用修飾符號,並根據管理員指定特定參數運算雜湊結果前,所需等待的最大八位組(octet)來決定等待限制。
- 表頭名稱(
hdr) - 透過選取各個來源 HTTP 請求中的特定表頭名稱來將請求發佈至伺服器上,並進行一項雜湊計算然後除以所有運作中伺服器的權重。若表頭不存在,排程器便會預設使用循環法(Round-robin)排程。
- RDP Cookie(
rdp-cookie) - 透過查詢每項 TCP 請求的 RDP cookie 來將請求發佈至伺服器上,並執行一項雜湊計算然後除以所有運作中伺服器的權重。若表頭不存在的話,排程器便會預設使用循環法(Round-robin)排程。這方式適用於需保有永續性的情況下,因為它會保留 session 的完整性。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.