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,將能夠看到由真實服務器提供的網面內容
這時在查看當前負載分配情況,對於輪詢算法來說,每個節點所獲得的連接負載應大致相當