10 LVS負載均衡羣集-NAT

LVS負載均衡羣集-NAT

一LVS羣集應用基礎

羣集(或集羣)和稱呼來自於英文單詞cluster,表示一羣、一串的意思,用在服務器領域則表示大量服務器的集合體,以區分於單個服務器

·羣集的含義

由至少包括兩臺節點服務器主機構成,但對外只表現爲一個整體,只提供一個訪問入口(域名或IP地址),相當於一臺大型計算機

·羣集的類型

根據羣集所針對的目標差異,可分爲以下三種類型

負載均衡(Load Balancer)羣集

以提高應用系統的響應能力,儘可能處理更多的訪問請求,減少延遲爲目標,獲得高併發、高負載的整體性能。LB的負載分配依賴於主節點的分流算法,將來自客戶機的訪問請求分擔給多個服務器節點,從而緩解整個系統的負載壓力

高可用(High Available)羣集

以提高應用系統的可靠性,儘可能地減少中斷時間爲目標,確保服務的連續性,達到高可用(HA)的容錯效果。HA的工作方式包括雙工、主從兩種模式------雙工即所有節點同時在線,主從則只有主節點在線,但當出現故障時從節點能自動切換爲主節點

高性能運算(High Performance Computer)羣集

以提高應用系統的CPU運算速度,擴展硬件資源和分析能力爲目標,獲得相當於大型、超級計算機的高性能運算(HPC)能力.通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起,實現只有大型、超級計算機才具備的計算能力

二負載均衡羣集

·負載均衡羣集的分層結構

在典型的負載均衡羣集中,包括三個層次的組件,如圖所示

前端至少有一個負載調度器(load balancer,或稱爲director),負責響應並分發來自客戶機的訪問請求;後端由大量真實服務器(real server)構成服務器池(server pool),提供實際的應用服務,整個羣集的伸縮性通過增加、刪除服務器節點來完成,而這些過程對客戶機是透明的;爲了保持服務的一致性,所有節點使用共享存儲設備

第一層,負載調度器

這是訪問整個羣集系統的唯一入口,對外使用所有服務器共有的VIP(virtual IP,虛擬IP)地址,也稱爲羣集IP地址。通常會配置主、備兩臺調度器實現熱備份,當主調度器失效以後平滑替換至備用調度器,確保高可用性

第二層,服務器池

羣集所提供的應用服務(如HTTP、FTP)由服務器池承擔,其中的每個節點具有獨立的RIP(real IP,真實IP)地址,只處理調度器分發過來的客戶機請求。當某個節點暫時失效時,負載調度器的容錯機制會將其隔離,等侍錯誤排除以後再重新納入服務器池

第三層,共享存儲

爲服務器池中的所有節點提供穩定、一致的文件存取服務,確保整個羣集的紡一性,在linux/unix環境中,共享存儲可以使用NAS設備或者提供NFS共享服務的專用服務器

·負載均衡的工作模式

關於羣集的負載調度技術,可以基於IP、端口、內容等進行分發,其中基於IP的負載調度是效果最高的。基於IP的負載均衡模式中,常見的有地址轉換(NAT)、IP隧道(TUN)、直接路由(DR)這三種工作模式

地址轉換

簡稱NAT模式,類似於防火牆的私有網絡結構,負載調度器作爲所有服務器節點的網關,即作爲客戶機的訪問入口,也是各節點回應客戶機的訪問出口。服務器節點使用私有IP地址。與負載調度器位於同一個物理網絡,安全性要優於其他兩種方式

IP隧道(IP TUNNEL)

簡稱TUN模式,採用開放式的網絡結構,負載調度器僅作爲客戶機的訪問入口,各節點通過各自的INTERNET連接直接回應客戶機,而不再經過負載調度器。服務器節點分散在互聯網中的不同位置。具有獨立的公網IP地址,通過專用IP隧道與負載調度器相互通信

直接路由(direct routing)

簡稱DR模式,採用半開放式的網絡結構,與TUN模式的結構類似,但各節點並不是分散在各地,而是與調度器位於同一個物理網絡。負載調度器與各節點服務器通過本地網絡連接,不需要建立專用的IP隧道

以上三種工作模式中,NAT方式只需要一個公網IP地址,從而成爲最易用的一種負載均衡模式,安全性也比較好,許多硬件負載均衡設備就是採用這種方式,相比較而言,DR和TUN模式的負載能力更強大,適用範圍更廣,但節點的安全性要稍差一些

·LVS負載均衡羣集

Linux virtual server:是針對LINUX內核開發的一個負載均衡項目(類似功能的項目有多重,還有第三方軟件也可以實現)

1998年5月,由我國的章文嵩博士創建

LVS實際上相當於基於IP地址的虛擬化應用。LVS現在已成爲LINUX內核的一部分,默認編譯爲ip_vs模塊,必要時能夠自動調用

官方網站:http://www.linuxvirtualserver.org/

·LVS的負載調度算法

針對不同的網絡服務和配置需要,LVS調度器提供各種不同的負載調度算法,包括

輪詢(rr)

將收到的訪問請求按照順序輪流分配給羣集中的各個節點(真實服務器),均等地對侍每一臺服務器,而不管服務器實際的連接數和系統負載。

加權輪詢(wrr)

根據真實服務器的處理能力輪流分配收到的訪問請求,調度器可以自動查詢各節點的負載情況,並動態調整其權重。這樣可以保證處理能力強的服務器承擔更多的訪問流量。

最少連接(lc)

根據真實服務器已建立的連接數進行分配,將收到的訪問請求優先分配給連接數最少的節點。如果所有服務器節點性能相近,採用這種方式可以更好地均衡負載。

加權最少連接(wlc)

在服務器節點的性能差異較大的情況下,可以爲真實服務器自動調整權重,權重較高的節點將承擔更大比例的活動連接負載

二配置NAT模式的LVS負載羣集

·準備環境(web服務器的羣集)

如圖所示

四臺以上RHEL6主機:一臺配置爲負載均衡調度器、一臺配置爲NFS共享存儲服務器、其他的作爲節點主機

節點主機:作爲web服務器,網關指向調度器內網卡地址

負載均衡調度器:作爲網關,需要兩塊網卡;在給RHEL6添加新的網卡後,使用setup配置網卡地址時,發現只有eth0,沒有eth1,並且沒有它的配置文件,這時需要做一下操作

1複製ifcfg-eth0文件

2複製網卡2的MAC地址

3修改ifcfg-eth1,將其MAC地址替換爲複製的MAC

節點主機:網關指向調度器內網卡地址

·配置負載調度器

1加載ip_vs內核模塊

設置開機自動加載

2安裝ipvsadm管理工具

ipvsadm是在負載調度器上使用的LVS羣集管理工具,通過調用ip_vs模塊來添加、刪除服務器節點,以及查看羣集的運行狀態。在RHEL6系統中,要手動安裝ipvsadm-1.25-9軟件包

LVS羣集的管理工作主要包括:創建虛擬服務器、添加服務器節點、查看羣集節點狀態、刪除服務器節點、保存負載分配策略等

3配置SNAT轉發策略

使用iptables爲出站響應配置SNAT轉發規則,以便節點服務器能夠訪問internet

修改sysctl.conf文件,開啓路由轉發功能並使修改生效

在nat表的postrouting規則鏈上創建SNAT策略

創建允許http數據流的規則(因爲本文是以http服務器羣集爲例)

4配置負載分配策略

在NAT模式的羣集中,其外網地址同時也作爲整個羣集的VIP地址;

創建虛擬服務器和添加服務器節點

其中

ipvsadm –C清除ipvsadm原有的策略或service ipvsadm stop也可以清除策略

第2條命令:創建虛擬服務器,針對TCP的80端口提供負載分流服務,使用的調度算法爲輪詢; 選項-A表示添加虛擬服務器,-t用來指定VIP地址及TCP端口,-s用來指定負載調度算法:輪詢(rr)、加權輪詢(wrr),最少連接(lc)、加權最少連接(wlc)

第3、4條命令:添加服務器節點,爲虛擬服務器添加兩個服務器節點(實際中可自行添加);選項-a:表示添加真實服務器;-t用來指定VIP地址及TCP端口,-r用來指定RIP地址及TCP端口,-m表示使用NAT羣集模式(-g: DR模式、-i:TUN模式),-w用來設置權重(權重爲0時表示暫停節點)

第5條命令:保存策略,要停止selinux,否則策略不會被保存;也可以使用ipvsadm-save >/etc/sysconfig/ipvsadm保存策略(start表示重建規則)

第6條命令:設置ipvsadm服務爲自動啓動

ipvsadm其他命令

查看節點狀態

Forward列下的Masq對應masquerade(地址僞裝),表示採用的羣集模式爲NAT,如果是Route,則表示採用的羣集模式爲DR

查看負載情況

刪除服務器節點

ipvsadm –d –r 192.168.1.10:80 –t 1.1.1.1:80

確認保存結果

·配置共享存儲服務器

這裏使用NFS發佈共享服務;NFS(Network File System)是一種基於TCP/IP傳輸的網絡文件系統協議;通過使用NFS協議,客戶機可以像訪問本地目錄一樣訪問遠程服務器中的共享資源;NFS服務的實現依賴於RPC(遠端過程調用)機制,以完成遠程到本地的映射過程

需安裝nfs-utils、rpcbind軟件包,RHEL6中默認已安裝(如果沒有安裝請先安裝)

1設置共享目錄

NFS的配置文件爲/etc/exports,文件內容默認爲空;添加如下內容(創建需要共享的文件夾)

其中

/opt/www是要共享的文件目錄;客戶機地址可以是主機名、IP地址、網段地址,允許使用*或?通配符;權限選項中的rw表示允許讀寫(ro爲只讀),sync表示同步寫入,no_root_squash表示當客戶機以root身份訪問時賦予本地root權限(默認是root_squash,將作爲nfsnobody用戶降權對侍

2啓動相關服務

先啓動rpcbind服務,再啓動nfs服務;注意:rhel5系統中RPC服務腳本是portmap

3設置開機自啓動和設置防火牆規則

因爲NFS服務的默認端口是不固定的,可以設置爲固定,這裏清空防火牆規則

設置完畢可以查看一下本機的共享信息

·配置節點服務器

所有的節點服務器均使用相同的配置,包括httpd服務端口、網站文檔內容;各節點的網站文檔可存放在共享存儲設備中,從而免去同步的過程

1搭建httpd服務

RHEL6中默認已安裝,如果爲安裝,請自行安裝

2創建測試站點

這裏的測試站點位於共享目錄中,因此需要先連接共享存儲設備;客戶機也必須支持RPC,需要啓動rpcbind服務

查看並掛載連接共享目錄

創建測試網頁

此網頁實際是創建到了共享存儲服務器中

3啓動httpd服務並設置開機自動掛載

4配置防火牆規則

要在防火牆上創建允許http數據流的規則

其他服務器節點同樣的操作配置

·測試LVS羣集

安排多臺測試機,直接訪問http://1.1.1.1,將能夠看到由真實服務器提供的網面內容

這時在查看當前負載分配情況,對於輪詢算法來說,每個節點所獲得的連接負載應大致相當

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章