Red Hat Training

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

2.5. Keepalived 的 Persistence 與 Firewall Mark

在某些情況下,我們會希望讓一台用戶端重複連線到同樣的實體伺服器上,而不是由負載平衡演算法則來決定。這樣的例子有多視窗的網頁表格、cookies、SSL 以及 FTP 連線。在這些例子裡,除非連線是由同一台機器所處理,否則用戶端多半會連線失敗。Keepalived 提供了兩種方法來處理這項問題:persistence(持續連線)與 firewall mark(防火牆標記)。

2.5.1. Persistence

當啟用時,persistence 會如計時器一般地運作。當客戶端連至一項服務時,Load Balancer 會在指定的一段時間內,記住最後的一次連線。若相同的客戶端 IP 在該時段之內再次連線的話,它將會被傳送到先前所連至的相同伺服器上 — 跳過負載平衡演算法。當連線在指定的時段之外發生時,它將會根據所配置的排程規則來被處理。
Persistence 亦可讓管理員指定子網路遮罩,以套用至客戶端 IP 位址測試,並作為一項控制哪組位址擁有較高等級持續性的工具,而藉此將連線分組在該子網路中。
對於使用超過一個連接埠來進行通訊的協定(比方說 FTP)來說,為連至不同連接埠的連線分組,有時是非常重要的。 然而,persistence 並非最適合用來將連至不同連接埠的連線分組的方式。在這種情況下,建議使用 firewall marks

2.5.2. Firewall Marks

防火牆標記對於一組使用於通訊協定(或一組相關協定)的連接埠來說是個簡易且有效率的方式。比方說,若 Load Balancer 已被建置來管理一個電子商務網站,防火牆標記可被使用來將 port 80 上的 HTTP 連線和 port 443 上安全的 HTTPS 連線綁在一起。藉由將相同的防火牆標記指定至虛擬伺服器的各個協定,交易的狀態資訊將能被保留,因為 LVS 路由器會在一則連線開啟之後,將所有請求轉送至相同的真實伺服器。
因為其高效率以及其容易使用的特性,Load Balancer 的管理員應盡可能在為連線分組時,使用防火牆標記來取代永續性。然而,管理員還是應該搭配防火牆標記將永續性加入至虛擬伺服器,以確保客戶端能重新連到相同伺服器上一段足夠的時間。