Red Hat Training

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

章 1. Load Balancer 外掛程式總覽

注意

自 Red Hat Enterprise Linux(RHEL)6.6 起,除了 Piranha 負載平衡軟體以外,Red Hat 還提供了對 HAProxy 與 keepalived 的支援。欲知搭配 RHEL 系統與 HAProxy 及 keepalived 的資訊,請參閱 RHEL 7 的負載平衡管理文件。
Load Balancer 外掛程式(Load Balancer 外掛程式,Load Balancer Add-On)是一組整合式的軟體元件,它提供了用來在一組真實伺服器(real server)之間,平衡 IP 負載的 LVS(Linux 虛擬伺服器,Linux Virtual Server)。Load Balancer 外掛程式會在一個「active LVS 路由器」(動作中)以及「backup LVS 路由器」(備用)上執行。active LVS 路由器負責兩項工作:
  • 平衡真實伺服器之間的工作負載。
  • 檢查各個真實伺服器上的服務完整性。
backup LVS 路由器會監控 active LVS 路由器,並在 active LVS 路由器失效時接替執行工作。
本章節提供了 Load Balancer 外掛程式元件及功能上的總覽,並包含了下列部分:

1.1. Load Balancer 外掛程式基本配置

圖形 1.1, “Load Balancer 外掛程式基本配置”〉顯示了包含兩個網路層的基本 Load Balancer 外掛程式配置。第一個網路層上包含了一台 active 及一台 backup LVS 路由器。各個 LVS 路由器皆擁有兩張網路介面卡,一張介面卡位於網際網路上,而另一張則位於私有網路上,這能讓它們管理兩個網路之間的流量。在此範例中,active 路由器使用了「網路位址轉譯」(NAT,Network Addrress Tranlation)來將流量由網際網路轉送至第二個網路層上的數個真實伺服器上,並依次提供必要的服務。因此,本範例中的真實伺服器連至了一個專屬的私有網路區段,並透過 active 路由器來回傳送所有的公共流量。以外部的角度來看,這些伺服器會看似單一實體。
Load Balancer 外掛程式基本配置

圖形 1.1. Load Balancer 外掛程式基本配置

抵達 LVS 路由器的服務請求會被指定一組「虛擬 IP」(VIP,Virtual IP)位址。這是網站管理員可以與完整區域名稱(例如 www.example.com)相聯的可公開路由的位址,並且將會指定給一或更多個「虛擬伺服器」(virtual server)。虛擬伺服器是用來監聽特定虛擬 IP 的服務。欲取得更多有關於使用 Piranha Configuration Tool(Piranha 配置工具)來配置虛擬伺服器上的相關資訊,請參閱〈節 4.6, “虛擬伺服器〉。當容錯移轉進行時,VIP 位址會由一台 LVS 路由器上遷移至另一台路由器上,並在該 IP 位址上保留其存在性(亦稱為「浮動 IP 位址」— floating IP address)。
您可為 VIP 位址與將 LVS 路由器連至網路的相同裝置之間建立一組別名。比方說,若是 eth0 連至了網際網路,則多個虛擬伺服器可被命名為 eth0:1 別名。此外,各個虛擬伺服器的各項服務,皆可與個別的裝置相聯。比方說,HTTP 流量可在 eth0:1 上處理,FTP 流量則在 eth0:2 上處理。
一次僅有一台 LVS 路由器會被啟用。active 路由器的任務就是將服務請求由虛擬 IP 位址重定向至真實伺服器。此重定向基於詳述於〈節 1.3, “Load Balancer 外掛程式的排程概覽”〉中的八種負載平衡演算法之一。
active 路由器也會透過 send/expect script 動態監控真實伺服器上,特定服務的整體健康狀況。為了協助偵測需要動態式資料的服務(例如 HTTPS 或 SSL)之健康狀況,管理員亦可調用外部的執行檔。若真實伺服器上的一項服務發生錯誤,active 路由器將會停止傳送工作至該伺服器上,直到它恢復正常運作狀態。
backup 路由器將負責作為備用系統的任務。LVS 路由器會定期透過主要的外部公共介面卡,來交換活動訊號訊息,在進行容錯移轉的情況下,則是透過私有介面卡。若備用節點在一段預期的時段內未接收到活動訊號訊息,它將會啟用容錯移轉,並負責進行 active 路由器的任務。當進行容錯移轉時,backup 路由器會透過一項名為「ARP 欺騙」(ARP spoofing)的技巧來接替失效路由器所服務的 VIP 位址 — backup LVS 路由器會自行宣告成為原本應傳送至失效節點的 IP 封包之目的地。當失效的節點復原後,備用節點便會再次成為線上備份的角色。
使用於〈圖形 1.1, “Load Balancer 外掛程式基本配置”〉中的基本、兩層的配置,適合用來服務不會頻繁遭到改變的資料 — 例如靜態式的網頁 — 因為個別的真實伺服器不會自動同步各個節點之間的資料。

1.1.1. 真實伺服器之間的資料複製與資料共享

因為 Load Balancer 外掛程式中沒有內建元件,好在真實伺服器之間共享相同的資料,因此管理員可使用兩項基本選項:
  • 同步真實伺服器集區之間的資料
  • 新增第三個網路層至拓撲中,以存取共享的資料
對伺服器來說,第一個選項比較適合,因為這不允許大量使用者上傳或更改真實伺服器上的資料。如果配置允許大量使用者修改資料,例如電子商務網站,那麼建議您使用第三層。

1.1.1.1. 配置真實伺服器同步資料

管理者有許多方法可以在真實伺服器集區中同步資料。舉例來說,網站工程師可以透過 shell script 來將更新過的網頁同步發佈到所有伺服器上。同時,系統管理者可以每隔一段時間,使用諸如 rsync 的程式來將修改過的資料複製到所有節點上。
然而,如果使用者常常上傳檔案或發出資料庫交易指令而導致系統負載過大,這種資料同步類型並沒有針對此種情況最佳化。若需要高負載下的配置,「三層式拓樸」(three-tier topology)會是理想的解決方案。