Red Hat Training

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

3.4. 多連接埠服務與 Load Balancer

建立多連接埠的 Load Balancer 服務時,任何拓樸下的 LVS 路由器都需經過額外的配置。多連接埠服務可以用人工方式創見,方法是透過使用防火牆標記將不同、但相關的通訊協定(例如 HTTP 的 80 連接埠與 HTTPS 的 443 連接埠)放在一起,或當 Load Balancer 與真實的多連接埠通訊協定(例如 FTP)搭配使用時。不管在哪一種情況下,LVS 路由器皆會使用防火牆標記來以相同的方式處理連向不同連接埠,但卻有著同樣防火牆標記的封包。同時,與持續性相結合時,只要連線處於持續性參數所指定的時間內,防火牆標記便會確保來自用戶端機器的連線會導向至同樣的主機。
不幸的是,用來平衡真實伺服器負載的機制 — IPVS — 會辨識出指定給某個封包的防火牆標記,但自己無法指定防火牆標記。「指定」防火牆標記的工作必須由網路封包篩選程式,亦即 iptables 來進行。

3.4.1. 指定防火牆標記

要指定防火牆標記給連往某個特定連接埠的封包,管理者必須使用 iptables
本節的範例描述如何處理 HTTP 與 HTTPS;然而,FTP 是另一個常見、叢集化的多連接埠通訊協定。
使用防火牆標記的基本規則,是每個在 Keepalived 中使用防火牆標記的每個通訊協定,都有相對應的 iptables 規則,以指定標記至網路封包上。
在建立網路封包篩選規則之前,請確定沒有其它既有規則。若要這麼做,請以 root 身份在終端機中輸入:
/usr/sbin/service iptables status
如果 iptables 不在執行中,終端機會立即出現提示符號。
如果 iptables 處於啟用狀態,那麼系統會顯示一連串的規則。如果出現規則的話,請輸入以下指令:
/sbin/service iptables stop
如果現有的規則很重要,請檢查 /etc/sysconfig/iptables 的內容,並在進行下一步之前,複製任何值得保存的規則到安全的地方。
第一項與 Load Balancer 相關的配置防火牆規則,就是允許 VRRP 流量,以讓 Keepalived 服務能運作。
/usr/sbin/iptables -I INPUT -p vrrp -j ACCEPT
以下是指定到同樣防火牆標記(80)到向內的流量、目的地為浮動 IP 位址 n.n.n.n(連接埠 80 與 443)的規則。
/usr/sbin/iptables -t mangle -A PREROUTING -p tcp -d n.n.n.n/32 -m multiport --dports 80,443 -j MARK --set-mark 80
請注意,您必須以 root 身份登入,並在第一次發出規則前載入 iptables 模組。
在上述 iptables 指令中,n.n.n.n 是您 HTTP 與 HTTPS 虛擬伺服器的浮動 IP 位址。這些指令能指定任何送往 VIP、特定連接埠、且擁有防火牆標記 80 的網路流量,接下來會由 IPVS 所辨識、轉送。

警告

以上指令會即刻生效,不過將無法在系統重新開機時維持永續性。