當您建立多埠的 LVS 服務時,任何拓樸圖的 LVS 路由器皆需要額外的設定,可以藉由使用防火牆標記來 繫結不同不過卻相關的協定,如 HTTP(連接埠 80)與 HTTPS (連接埠 443)來建立多埠的服務,或者當 LVS 被使用來叢集真實的多埠協定時(如 FTP)。 在以上兩種情況下,LVS 路由器使用防火牆標記來辨識 目標為不同連接埠的封包(不過仍然帶有相同的防火牆標記),這些封包應該要被同等地處理。 而且當與 持續性結合時,只要連線是在由持續性參數所指定的時間內發生,防火牆標記可確保來自用戶端機器的連線 可以發送至相同的主機。 如需關於指派持續性給一部虛擬伺服器的資訊,請參考 第 12.6.1 節。
很不幸的,使用來在實時伺服器上平衡負載的機制 — IPVS — 可以辨識指派給封包的防火牆標記, 而無法自己指派防火牆標記。 指派 防火牆標記的工作必須由網路封包過濾器 iptables 在 Piranha 組態設定工具 之外所執行。
如要指派防火牆標記給目標為一個特定連接埠的封包,系統管理員必須使用 iptables。
這個部份圖解如何繫結 HTTP 與 HTTPS 的例子,然而 FTP 也是另一種經常用作叢集的多埠協定。 假如 FTP 服務使用一個 LVS 叢集,請參考 第 11.4 節 以取得如何設定叢集的詳細資訊。
使用防火牆標記時需要記住的基本原則是,在 Piranha 組態設定工具 中所使用之防火牆標記 的每一個通訊協定,必須有一個對稱的 iptables 規則來指派標記給網路封包。
在建立網路封包過濾器規則前,請確定沒有任何的規則正在使用中,請以 root 身份開啟一個 shell 提示符號,並且輸入:
/sbin/service iptables status |
假如 iptables 不在執行中,提示符號將會立即再出現。
假如 iptables 正在使用中,將會顯示出一組規則,請輸入下列指令:
/sbin/service iptables stop |
假如使用中的規則是重要的,檢查 /etc/sysconfig/iptables 檔案的內容,並且 在繼續之前複製需要保留的任何規則到一個安全的地方。
以下的規則為指派相同的防火牆標記 80 給目標為浮動 IP 位址 n.n.n.n 在連接埠 80 與 443 的外來網路流量。 如需指派 VIP 給公眾網路介面的指示,請參考 第 12.6.1 節。 而且也請注意您必須以 root 登入,並且在第一次執行規則前載入 iptables 的模組。
/sbin/modprobe ip_tables /sbin/iptables -t mangle -A PREROUTING -p tcp \ -d n.n.n.n/32 --dport 80 -j MARK --set-mark 80 /sbin/iptables -t mangle-A PREROUTING -p tcp \ -d n.n.n.n/32 --dport 443 -j MARK --set-mark 80 |
在以上的 iptables 指令中,必須以 HTTP 與 HTTPS 虛擬伺服器的浮動 IP 取代 n.n.n.n。 這些指令有指派防火牆標記 80 給目標為適當連接埠上 VIP 之任何流量的純效應,將會由 IPVS 所辨識並且妥善地轉送。
![]() | 警告 |
---|---|
以上的指令將會立即生效,不過請勿堅持進行重新啟動系統。 如要確定重新開機後可以回復網路封包過濾設定, 請參考 第 11.5 節。 |