用 LVS 搭建一個負載均衡叢集

Alick發表於2015-06-16

這篇文章是《打造3百萬次請求/秒的高效能伺服器叢集》系列的第3部分,有關於效能測試工具以及優化WEB伺服器部分的內容請參看以前的文章。

本文基於你已經優化好伺服器以及網路協議棧的基礎之上,並使用 iperfnetperf 工具測試將伺服器已優化到支援 500,000 次/秒的靜態WEB頁面的效能。

現在你已經做好足夠準備進行安裝伺服器叢集。

Redhat 官網已經有一些不錯的文章,所以我建議你在遇到不明白的問題時檢視一下這些文章。不過你先別擔心,我接下會一步步地講解群集搭建的所有操作。

LVS 路由器配置

這裡需要一臺裝置作為路由器,它負責將 TCP 流量均衡到 LVS 叢集中的每一臺伺服器。因此你需要拿出一臺裝置按以下操作進行配置。如果你的 IP 路由的流量非常小的話,你可拿一臺效能最比較弱伺服器做為路由器。

1.在 LVS 路由器上安裝 LVS 軟體

2.配置 WEB 管理的密碼

3.在 iptables 中配置放行埠

4.啟動 WEB 管理

-> 一定要等到 Piranha 配置結束之後再開啟 pulse 。

5.開啟報文轉發

6.啟動 WEB 伺服器

Direct Routing 模式配置

1.在 LVS 路由器上登入 Piranha WEB 管理介面進行配置。

在 GLOBAL SETTINGS 頁中檢視,預設採用是 Direct Routing 模式,我們需要通過這個頁面下的功能進行配置 LVS WEB 叢集伺服器的虛擬 IP 地址(Virtual IP)。

2.選擇 VIRTUAL SERVERS 標籤頁,建立虛擬 WEB 伺服器, 這裡的伺服器就是你的 WEB 伺服器叢集。通過這個配置可以讓你有多臺伺服器對外像是一臺伺服器,因此又被稱作虛擬伺服器(virtual server)。

點選 ADD,然後點 EDIT。

3.編輯虛擬伺服器,首先選擇一個 IP 地址作為 Virtual IP(IP 不作為真實伺服器使用),然後選擇一個裝置介面(Device)進行繫結。

點選 ACCEPT 完成配置,這個時候 WEB 頁面並不會重新整理,不過此時配置已經儲存完畢。

點選 REAL SERVER 進行下一步真實伺服器配置。

4.配置真實伺服器,REAL SERVER 頁面用於配置 WEB 叢集所對應的真實伺服器。

用 ADD 將所有的 HTTP 伺服器新增進來,然後用 EDIT 進行伺服器的詳細配置,之後點 ACCEPT 進行儲存。

如果需要重新配置叢集,先點 VIRTUAL SERVER 之後重新配置 REAL SERVER。

在 REAL SERVER 頁配置完所有的真實伺服器之後,依次選擇每一行後點選 (DE)ACTIVATE 進行啟用。

5.至此,所有的真實伺服器配置並啟用完畢,下接下來回到 VIRTUAL SERVERS 頁

點 (DE)ACTIVATE 啟用虛擬伺服器。

到此為止路由器配置完畢,現在你可以關閉並退出瀏覽器,接下來要開啟 pulse 對每臺伺服器進行配置。

輸入 ipvsadm 可以看到叢集已經正常啟動。

Direct Routing – 配置每臺真實伺服器節點

在叢集中的每臺伺服器上按以下步驟進行配置。

1.為真實伺服器配置虛擬 IP 地址。

由於我們希望 IP 地址配置在伺服器重啟之後也能生效,因此需要將配置寫入 /etc/rc.local 檔案中。

2.在真實伺服器上為虛擬 IP 配置 ARP 表項。

這裡要關閉所有真實伺服器對虛擬 IP 地址的 ARP 請求的響應,這些伺服器只響應物理 IP 地址的ARP請求,在整個叢集系統中,僅有 LVS 路由器才能響應虛擬 IP 地址的ARP請求。

3.在真實伺服器上配置完畢之後,儲存 ARP 表項配置。

4.測試

如果 arptables 命令配置正確,只有 LVS 路由器才會應答 Ping 請求。首先確保 pulse 已關閉,之後從群集的任一真實伺服器上 ping 虛擬 IP 地址,如果有真實伺服器迴應這個請求,你可以通過檢視 ARP 表項看到它。

這裡可以看到解析到伺服器的 MAC 地址,然後在這臺伺服器上關閉 ARP 響應。

還有一個簡單而有效測試方法就是使用 curl 向叢集請求 WEB 頁面,你可以在 LVS 路由器上通過命令 ipvsadm 檢視到資料流量。

使用 Tsung 對叢集進行效能測試

到此為此叢集伺服器已經配置完畢並工作正常,這時你可以通過壓力測試看到它的效能是多麼的強大。參考一下這篇文章對 Tsung 進行配置並生成有效的資料流對叢集進行測試。

建議測試至少進行 2 個小時以上,因為測試需要經過比較長的時間才能看到 HTTP 的峰值請求速率。在整個測試過程中你可以在叢集伺服器上通過 htop 命令看到每個 CPU 核的率用率。

這裡假設你已經安裝好了 EPEL 和 RPMforge 源。

你可以看到 HTTP 伺服器在高速地接收並回應 WEB 請求,整個過程 LVS 路由器實際沒有多少負載。

在實際使用中請確保伺服器的 CPU 佔所有核的總負責的平均值小於 CPU 的總核數(比如:我的 24 核系統中,我始終保持負載小於等於 23 個核的能力。),這樣所有 CPU 即能夠充分發揮能力,同時系統又能夠具備單一失效時的冗餘能力。

在 Tsung 執行結束之後,可以檢視叢集伺服器壓力測試的詳細測試報告。

譯者注:LVS 主創人為阿里雲 CTO 章文嵩博士,是我朝人民長臉作之一,其在伺服器群集中應用廣泛,相比於 M$ 的 NLB 群集技術而言更為強大,文中的 DR 模式使用通用伺服器做為流量均衡裝置,效能相對較弱,在實際高效能群集應用中,通常採用具備三層 ECMP 路由硬體能力的交換機或專用負載均衡硬體裝置,在不需要複雜流量均衡策略(如:基於應用的均衡)的群集中,使用交換機價效比較高。


相關文章