一:LVS群集應用基礎
1.1:概述
1.群集的類型
無論是哪種群集, 都至少包括兩臺節點服務器, 而對外表現為一個整體, 只提供一個訪問入口。根據群集所針對的目標差異, 可分為以下三種類型。
- 負載均衡群集(Load Balance Cluster) : 以提高應用系統的響應能力、盡可能處理更多的訪問請求、減少延遲為目標, 獲得商并發、高負載的整體性能。例如, “ DNS輪詢” “ 應用層交換” “ 反向代理”等都可用作負載均衡群集。LB 的負載分配依賴千主節點的分流算法, 將來自客戶機的訪問請求分擔給多個服務器節點,從而緩解整個系統的負載壓力。
- 高可用群集( High Availability Cluster) : 以提高應用系統的可靠性、盡可能地減少中斷時間為目標,確保服務的連續性,達到高可用( HA ) 的容錯效果。例如,“故障切換”“雙機熱備”“ 多機熱備” 等都屬千高可用群集技術。HA 的工作方式包括雙工和主從兩種模式。雙工即所有節點同時在線; 主從則只有主節點在線, 但當出現故障時從節點能自動切換為主節點。
- 高性能運算群集( High Performance Computer Cluster ) : 以提高應用系統的CPU運算速度、擴展硬件資源和分析能力為目標,獲得相當千大型、超級計算機的高性能運算( HPC) 能力。例如, “ 云計算” “ 網格計算” 也可視為高性能運算的一種。高性能運算群集的高性能依賴千“ 分布式運算” ” 并行計算“, 通過專用硬件和軟件將多個服務器的CPU、內存等資源整合在一起, 實現只有大型、超級計算機才具備的計算能力。
2.負載均衡的分層結構
在典型的負載均衡群集中, 包括三個層次的組件, 如下圖所示。前端至少有一個負載調度器( Load Bal ancer , 或稱為D盯ector) 負責響應并分發來自客戶機的訪問請求; 后端由大量真實服務器( Rea l Server) 構成服務器池( Server Pool ) , 提供實際的應用服務,整個群集的伸縮性通過增加、刪除服務器節點來完成, 而這些過程對客戶機是透明的; 為了保持服務的一致性, 所有節點使用共享存儲設備。
- 第一層, 負載調度器: 這是訪問整個群集系統的唯一入口, 對外使用所有服務器共有的VIP (Virtual IP , 虛擬IP) 地址, 也稱為群集IP 地址。通常會配置主、備兩臺調度器實現熱備份, 當主調度器失效以后能夠平滑替換至備用調度器, 確保高可用性。
- 第二層, 服務器池: 群集所提供的應用服務(如HTTP 、FTP ) 由服務器池承擔, 其中每個節點具有獨立的RI P ( Real IP , 真實IP) 地址,只處理調度器分發過來的客戶機請求。當某個節點暫時失效時, 負載調度器的容錯機制會將其隔離, 等待錯誤排除以后再重新納入服務器池。
- 第三層, 共享存儲: 為服務器池中的所有節點提供穩定、一致的文件存取服務, 確保整個群集的統一性。在L i nux/UNIX 環境中,共享存儲可以使用NAS 設備, 或者提供NFS ( Ne twork 們l e S ys tem , 網絡文件系統)共享服務的專用服務器。?
3.負載均衡的工作模式
關于群集的負載調度技術, 可以基于IP 、端口、內容等進行分發, 其中基于IP 的負載調度是效率最高的。基千IP 的負載均衡模式中, 常見的有地址轉換、IP 隧道和直接路由三種工作模式, 如下圖所示。
- ?地址轉換(Ne twork Address Translat i on ) : 簡稱NAT 模式, 類似于防火墻的私有網絡結構, 負載調度器作為所有服務器節點的網關, 即作為客戶機的訪問入口, 也是各節點回應客戶機的訪問出口。服務器節點使用私有IP 地址, 與負載調度器位于同一個物理網絡, 安全性要優千其他兩種方式。
- IP 隧道( IP Tunne l ) : 簡稱TUN 模式, 采用開放式的網絡結構, 負載調度器僅作為客戶機的訪問入口, 各節點通過各自的Int ernet連接直接回應客戶機, 而不再經過負載調度器。服務器節點分散在互聯網中的不同位置, 具有獨立的公網IP 地址, 通過專用IP 隧道與負載調度器相互通信。
- 直接路由( D i rec t Rout i ng) : 簡稱DR 模式, 采用半開放式的網絡結構, 與TUN模式的結構類似, 但各節點并不是分散在各地, 而是與調度器位千同一個物理網絡。負載調度器與各節點服務器通過本地網絡連接, 不需要建立專用的IP 隧道。
1.2:LVS虛擬服務器?
1.LVS 的負載調度算法
針對不同的網絡服務和配置需要, LVS 調度器提供多種不同的負載調度算法,其中最常
用的四種算法是輪詢、加權輪詢、最少連接和加權最少連接。
- 輪詢( Round Rob in) : 將收到的訪問請求按照順序輪流分配給群集中的各節點, 均等地對待每臺服務器, 而不管服務器實際的連接數和系統負載。
- 加權輪詢( We igh ted Round Rob i n) : 根據調度器設置的權重值來分發請求, 權重值高的節點優先獲得任務并且分配的請求越多, 這樣可以保證性能高的節點承擔更多請求。
- 最少連接( Leas t Connec tions) : 根據真實服務器已建立的連接數進行分配, 將收到的訪問請求優先分配給連接數最少的節點。如果所有的服務器節點性能相近, 采用這種方式可以更好地均衡負載。
- 加權最少連接( We ight ed Least Connec t i ons ) : 在服務器節點的性能差異較大的情況下, 調度器可以根據節點服務器負載自動調整權重, 權重較高的節點將承擔更大比例的活動連接負載。
2.?使用ipvsadm 管理工具
ip vsadm 是在負載調度器上使用的LVS 群集管理工具,通過調用ip_vs 模塊來添加、刪除服務器節點, 以及查看群集的運行狀態。在CentOS 7 系統中,需要手動安裝ipvsadm. x86_64 0: 1. 27- 7. el 7 軟件包。
[root @localhost ~]# yum -y i ns t all ipvsadm
[root @localhost~]# ipvsadm -v
ipvsadm v1. 27 2008/5/15 (compiled wi th popt and IPVS v1. 2. 1)
?(1)創建虛擬服務器
若群集的V I P 地址為172. 1 6.1 6. 172 , 針對TCP 80 端口提供負載分流服務, 使用的調度算法為輪詢, 則對應的i pvsadm 命令操作如下所示。對于負載均衡調度器來說, VIP 必須是本機實際已啟用的IP 地址。
ipvsadm -A - t 172. 16. 16. 172:80 - s rr
?上述操作中, 選項-A 表示添加虛擬服務器, -t用來指定V IP 地址及TCP 端口, -s 用來
指定負載調度算法——輪詢( rr) 、加權輪詢(wrr ) 、最少連接( le) 、加權最少連接( wlc) 。
(2) 添加服務器節點
為虛擬服務器17 2. 16 . 16. 172 添加四個服務器節點, IP 地址依次為1 92 . 168. 7. 21~24,對應的i pvsadm 命令操作如下所示。若希望使用保持連接, 還應添加“-p 60" 選項, 其中60 為保待時間( 單位為s) 。
[root @localhost~]# ipvsadm -a -t 172. 16. 16. 172:80 -r 192. 168. 7.21:80 -m 11 1
[root @localhost~]# ipvsadm -a -t 172. 16. 16. 172:80 -r 192. 168. 7.22:80 -m 11 1
[root @localhost ~]# ipvsadm -a - t 172. 16. 16. 172:80 - r 192. 168. 7.23:80 -m -w 1
[root @localhost ~]# ipvsadm -a -t 172. 16. 16. 172:80 -r 192. 168. 7.24:80 -m 11 1
上述操作中, 有以下選項:
? -a 表示添加真實服務器;
? -t用來指定VIP 地址及TCP 端口;
? -r 用來指定RIP 地址及TCP 端口;
? -m 表示使用NAT 群集模式( -g DR 模式和- i TUN 模式) ;
? -w 用來設置權重(權重為0 時表示暫停節點)。
( 3 ) 查看群集節點狀態
結合選項-l 可以列表查看LVS 虛擬服務器, 可以指定只查看某一個VIP 地址( 默認為
查看所有) , 結合選項-n 將以數字形式顯示地址、端口等信息。
[root @localhost~]# ipvsadm -ln //查看節點狀態
上述輸出結果中, Forward 列下的Masq對應Masquerade (地址偽裝) , 表示采用的群集模式為NAT 。如果是Rou t e , 則表示采用的群集模式為DR 。
(4) 刪除服務器節點
需要從服務器池中刪除某一個節點時, 使用選項-d 。執行刪除操作必須指定目標對象,包括節點地址、虛擬IP 地址。例如,以下操作將會刪除LVS 群集172. 16. 16. 172 中的節點192. 168. 7. 24?
ipvsadm -d -r 192. 168. 7.24:80 -t 172. 16. 16. 172:80
需要刪除整個虛擬服務器時,使用選項-D 并指定虛擬IP 地址即可, 無須指定節點。例如, 若執行“ipvsadm - D - t 172 . 16. 16. 172:80" , 則刪除此虛擬服務器。
(5) 保存負載分配策略
使用導出/導入工具ipvsadm-save/ ipvsad曠restore 可以保存、恢復LVS 策略。當然也可以快速清除、重建負載分配策略。
[root @localhost~]# ipvsadm-save > /etc/sysconfig/ipvsadm //保存策略
[root @localhost ~]11 cat /et c/sysconfig/ipvsadm //確認保存結果
-A - t 172.16.16.172:http - s rr
- a - t 172. 16. 16. 172: http - r 192. 168. 7. 21 : http -m -w 1
- a - t 172. 16. 16. 172: http -r 192. 168. 7. 22: http -m -w 1
- a - t 172.16.16. 172:http - r 192.168. 7.23:http -m -w 1
[root @localhost ~]# systemct l stop ipvsadm? ??//停止服務( 清除策略)
[root @localhost ~]# systemct l start ipvsadm? ??//啟動服務( 重建規則)
?1.3:NFS 共享存儲服務
1.使用NFS 發布共享資源
NFS 服務的實現依賴千RPC ( Remote Process Cal l, 遠端過程調用) 機制,以完成遠程到本地的映射過程。在CentOS 7 系統中, 需要安裝nfs-utils 、rpcbind 軟件包來提供NFS共享服務, 前者用千NFS 共享發布和訪問, 后者用千RPC 支持。
(1 ) 安裝nfs-uti ls 、rpcbind 軟件包
提供RPC 支持的服務為rpcb i nd , 提供NFS 共享的服務為nfs , 完成安裝以后建議調整這兩個服務的自啟動狀態, 以便每次開機后自動啟用。手動加載NFS 共享服務時, 應該先啟動rpcb i n d , 再啟動nfs 。
[root @localhost~]# yum -y install nfs-utils rpcbi nd
[root @localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbi nd
( 2 ) 設置共享目錄
NFS 的配置文件為/e tc/exports , 文件內容默認為空( 無任何共享)。在exports 文件中設置共享資源時, 記錄格式為“ 目錄位置客戶機地址(權限選項) “。例如, 若要將文件夾/opt/wwwroot共享給192 . 168. 7 . 0/24 網段使用, 允許讀寫操作, 具體配置如下所示。?
[root@localhost ~]# mkdir -p /opt/wwwroot
[root@localhost ~]# vi /etc/exports
/opt/wwwroot ??192.168.10.0/24(rw,sync,no_root_squash)
其中客戶機地址可以是主機名、IP 地址、網段地址, 允許使用* 、?通配符; 權限選項中的rw 表示允許讀寫(ro 為只讀) , s ync 表示同步寫入, no_root_squash 表示當客戶機以root身份訪問時賦予本地root權限(默認是root_squash , 將作為nf snobody 用戶降權對待)。
當需要將同一個目錄共享給不同的客戶機, 且分配不同的權限時, 只要以空格分隔指定多個“ 客戶機( 權限選項) ” 即可。例如, 以下操作將/var/ftp/pub l i c 目錄共享給兩個客戶機, 并分別給予只讀、讀寫權限。?
[root @localhost ~]# vi /etc/export s
/var/ftp/public 192. 168. 7. 11 (ro) 192. 168. 7. 22(rw)
( 3 ) 啟動NFS 服務程序
[root @localhost ~]# sys t emct l s t art rpcbi nd
[root @localhost ~] # sys t emct l s t art nf s
[root@l ocalhost ~] # net s t at -anpt I grep rpc?
?( 4 ) 查看本機發布的NFS 共享目錄
[root @localhost ~]# showmount - e
2. 在客戶機中訪問NFS 共享資源?
NFS 協議的目標是提供一種網絡文件系統, 因此對NFS 共享的訪問也使用mount命令來進行掛載,對應的文件系統類型為nfs 。既可以手動掛載,也可以加入/etc/fstab 配置文件來實現開機自動掛載。考慮到群集系統中的網絡穩定性, NFS 服務器與客戶機之間最好使用專有網絡進行連接。
(1) 安裝rpcbind 軟件包, 并啟動rpcbind 服務。
若要正常訪問NFS 共享資源, 客戶機中也需要安裝rpcbind 軟件包, 并啟動rpcbind系統服務。另外,為了使用showmount 查詢工具, 建議將nfs-utils 軟件包也一并裝上。
[root@localhost~]# yum -y i ns t all rpcbind nf s-utils
[root@l ocalhost ~] # sys t emct l enable rpcbi nd
[ root@l ocalhost ~]# sys t emct l start rpcbind
如果已經安裝了nfs-uti ls 軟件包,則客戶機也可以使用showmount 查看NFS 服務器端共享了哪些目錄, 查詢格式為“ shmvmount -e 服務器地址”。?
( 2 ) 手動掛載NFS 共享目錄。
以roo t 用戶身份執行mount操作, 將NFS 服務器共享的/opt/wwwroot目錄掛載到本地目錄/var/www/h tml 。
[root@l ocalhost ~]# mount 192. 168. 7.250:/opt/wwwroot /var/www/html
[root @localhost~]# tail -1 /etc/mtab //確認掛載結果[root @localhost ~]# vi /var/www/html/i ndex.html? ? ? ??//在客戶機創建測試文件
Real Web Server Document
完成掛載以后, 訪問客戶機的/var/嚇w/html 文件夾, 實際上就相當千訪問NFS 服務器中的/opt/wwwroot文件夾, 其中的網絡映射過程對千用戶程序來說是透明的。例如, 上述操作中創建的index. ht ml 測試文件, 會立刻出現在服務器的/opt/wwwroot/目錄下。
(3) fstab 自動掛載設置。
修改/e t c/fs tab 配置文件, 加入NFS 共享目錄的掛載設置。注意將文件系統類型設為nfs , 掛載參數建議添加_net dev (設備需要網絡)。若添加soft 、intr 參數可以實現軟掛載,允許在網絡中斷時放棄掛載。這樣, 客戶機就可以在每次開機后自動掛載NFS 共享資源了。
[root @localhost ~]# vi /et c/f st ab
…… //省略部分信息
192. 168. 7. 250: /opt/wwwroot /var/www/html nfs defaul ts, _net dev 0?0