Centos 7之LVS負載均衡羣集

博文目錄
1、LVS羣集應用基礎
2、LVS虛擬服務器
3、搭建NFS共享存儲服務html

1、LVS羣集應用基礎

根據實際企業環境的不一樣,羣集所提供的功能也各不相同,採用的技術細節也可能各有千秋。然而從總體上來看,須要先了解一些關於羣集的共性特徵,這樣才能在構建和維護羣集的工做中作到心中有數,避免操做上的盲目性。linux

一、羣集的類型

不管是哪一種羣集,都至少包括兩臺節點服務器,而對外表現爲一個總體,只提供一個訪問入口(域名或IP地址),至關於一臺大型計算機。根據羣集所針對的目標差別,能夠分爲如下三種類型。算法

  • 負載均衡羣集(Load Balance Cluster):以提升應用系統的響應能力、儘量處理更多的訪問請求、較少延遲爲目的,得到高併發、高負載的總體性能。例如,「DNS輪詢」 、「應用層交換」、「反向代理」等均可用作負載均衡羣集。LB的負載分配依賴於主節點的分流算法,未來自客戶機的訪問請求分擔給多個服務器節點,從而緩解整個系統的負載壓力。vim

  • 高可用羣集(High Availability Cluster):以提升應用系統的可靠性,儘量地減小中斷時間爲目標,確保服務的連續性,達到高可用(HA)的容錯效果,例如,「故障切換」。「雙機熱備」、「多機熱備」、等都屬於高可用羣集技術,HA的工做方式包括雙工和主從兩種模式。雙工就是全部節點同時在線;主從則只有主節點在線,但當出現故障時從節點能自動切換爲主節點,和Cisco路由器的HSRP原理相似。centos

  • 高性能運算羣集(High Performance Computer Cluster):以提升應用系統的CPU運算速度,擴展硬件資源和分析能力爲目標,得到至關於大型、超級計算機的高性能運算(HPC)能力。例如,「雲計算」、「網格計算」也能夠當成HPC的一種。HPC羣集的高性能依賴於「分佈式計算」 「並行計算」,經過專用硬件和軟件將多臺服務器的CPU、內存等資源整合在一塊兒,實現只有大型、超級計算機才具有的計算能力。

不一樣類型的羣集能夠根據實際需求進行合併,如高可用的負載均衡羣集。安全

二、負載均衡的分層結構

Centos 7之LVS負載均衡羣集

  • 第一層:負載調度器,這是訪問整個羣集系統的惟一入口,對外使用全部服務器共有的VIP(虛擬IP)地址,也稱爲羣集IP。一般會配置主、備兩臺調度器實現熱備份,當主調度器失效之後平滑替換至備用調度器,確保高可用性。服務器

  • 第二層:服務器池,羣集所提供的應用服務(如HTTP、FTP)由服務器池承擔,其中每一個節點具備獨立的RIP(真實IP)地址,只處理調度器分發過來的客戶機請求,當某個節點暫時失效,負載調度器的容錯機制會將其隔離,等待錯誤排除後在將其從新歸入服務器池。網絡

  • 第三層:共享存儲,爲服務器池中的全部節點提供穩定、一致的文件存取服務,確保整個羣集的統一性。在Linux/UNIX環境中,共享存儲可使用NAS設備,或者提供NFS(網絡文件系統)共享服務的專用服務器。

三、負載均衡的工做模式

關於羣集的負載調度技術,能夠基於IP、端口、內容等進行分發,其中基於IP的負載調度是效率最高的,基於IP的負載均衡模式中,常見的有地址轉換、IP隧道和直接路由三種工做模式,以下圖:
Centos 7之LVS負載均衡羣集併發

  • 地址轉換:簡稱NAT模式,相似於防火牆的私有網絡結構,負載調度器做爲全部服務器節點的網關,即做爲客戶機的訪問入口,也是各節點回應客戶機的訪問出口。服務器節點使用私有IP地址,與負載調度器位於同一個物理網絡,安全性要優於其餘兩種方式,但負載調度器的壓力較大。負載均衡

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

  • 直接路由:簡稱DR模式,採用半開放的網絡結構,與TUN模式的結構相似,但各節點不是分散在各地的,而是與調度器位於同一個物理網絡,負載調度器與各節點服務器經過本地網絡鏈接,不須要創建專用的IP隧道。

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

2、LVS虛擬服務器

Linux Virtual Server是針對Linux內核開發的一個負載均衡項目,官網是:http://www.linuxvirtualserver.org/ 能夠進入官網查閱相關的技術文檔。LVS實際上至關於基於IP地址的虛擬化應用,爲基於IP地址和內容請求分發的負載均衡提出了一種高效率的解決方法。LVS如今已經成爲Linux內核的一部分,默認編譯爲ip_vs模塊,必要時可以自動調用。在Centos 7系統中,如下操做能夠手動加載ip_vs模塊,並查看當前系統中ip_vs模塊的版本信息:

[root@centos01 ~]# modprobe ip_vs      <!--加載ip_vs模塊-->
[root@centos01 ~]# cat /proc/net/ip_vs  <!--查看ip_vs版本信息-->
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

一、LVS的負載調度算法

針對不一樣的網絡服務和配置須要,LVS調度器提供多種不一樣的負載調度算法,其中最經常使用的四種算法包括輪詢、加權輪詢、最少鏈接和加權最少鏈接。

  • 輪詢(rr):將收到的訪問請求按照順序輪流分配給羣集中的各節點(真實服務器),均等地對待每臺服務器,而無論服務器實際的鏈接數和系統負載。

  • 加權輪詢(wrr):根據真實服務器的處理能力輪流分配收到的訪問請求,調度器能夠自動查詢個節點的負載狀況,並動態調整其權重。這樣能夠保證處理能力強的服務器承擔更多的訪問流量。

  • 最少鏈接(lc):根據真實服務器已創建的鏈接數進行分配,將受到的訪問請求優先分配給鏈接數最少的節點,若是全部的服務器節點性能相近,採用這種方式能夠更好地均衡負載。

  • 加權最少鏈接(wlc):在服務器節點的性能差別較大的狀況下,能夠爲真實服務器自動調整權重,權重較高的節點將承擔更大比例的活動鏈接負載。

二、使用ipvsadm管理工具

ipvsadm是在負載調度器上使用的LVS羣集管理工具,經過調用ip_vs模塊來添加、刪除服務器節點,以及查看羣集的運行狀態。

[root@centos01 ~]# yum -y install ipvsadm <!--安裝ipvsadm工具-->
[root@centos01 ~]# ipvsadm -v      <!--查看ipvsadm版本-->
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

1)建立虛擬服務器

若羣集的VIP地址爲172.16.16.172,針對TCP 80端口提供負載分流服務,使用的調度算法爲輪詢,則對應的ipvsadm命令操做以下所示,對於負載均衡調度器來講,VIP必須是本機實際已啓用的IP地址:

[root@centos01 ~]# ipvsadm -A -t 172.16.16.172:80 -s rr

上述操做中,選項-A表示添加虛擬服務器,-t用來指定VIP地址及TCP端口,-s用來指定負載調度算法——輪詢(rr)、加權輪詢(wrr)、最少鏈接(lc)、加權最少鏈接(wlc)。

2)添加服務器節點

爲虛擬服務器172.16。16.172添加四個服務器節點,IP地址依次爲192.168.7.21~24,對應的ipvsadm命令操做以下所示。若但願使用保持鏈接,還應添加「-p 60」選項,其中60爲保持時間(單位爲s):

[root@centos01 ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.21:80 -m -w 1
[root@centos01 ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.22:80 -m -w 1
[root@centos01 ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.23:80 -m -w 1
[root@centos01 ~]# ipvsadm -a -t 172.16.16.172:80 -r 192.168.7.24:80 -m -w 1

上述操做中,選項-a表示添加真實服務器,-t用來指定VIP地址及TCP端口,-r用來指定RIP(真實IP)地址及TCP端口,-m表示使用NAT羣集模式(-g DR模式和-i TUN模式),-w用來設置權重(權重爲0時表示暫停節點)。

3)查看羣集節點狀態

結合選項-l能夠列表查看LVS虛擬服務器,能夠指定只查看某一個VIP地址(默認爲查看全部),結合選項-n將以數字形式顯示地址、端口等信息:

[root@centos01 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.16.172:80 rr
  -> 192.168.7.21:80              Masq    1      0          0         
  -> 192.168.7.22:80              Masq    1      0          0         
  -> 192.168.7.23:80              Masq    1      0          0         
  -> 192.168.7.24:80              Masq    1      0          0

上述輸出結果中Forward列下的Masquerade(地址假裝),表示採用的羣集模式爲NAT;若是是Route,則表示採用的羣集模式爲DR。

4)刪除服務器節點

須要從服務器池中刪除某一個節點時,使用選項-d。執行刪除操做必須指定目標對象,包括節點地址、虛擬IP地址。例如,如下操做將會刪除LVS羣集172.16.16.172中的節點192.168.7.24。

[root@centos01 ~]# 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/ipvsadm-restore能夠保存、恢復LVS策略。固然也能夠快速清除、重建負載分配策略。

[root@centos01 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm  <!--保存策略-->
[root@centos01 ~]# cat /etc/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@centos01 ~]# systemctl stop ipvsadm <!--中止服務(清除策略)-->
[root@centos01 ~]# systemctl start ipvsadm <!---啓動服務(重建規則)->

3、搭建NFS共享存儲服務

NFS是一種基於TCP/IP傳輸的網絡文件系統協議,最初由Sun公司開發。經過使用NFS協議,客戶機能夠像訪問本地目錄同樣訪問遠程服務器中的資源,對於大多數負載均衡羣集來講,使用NFS協議來共享數據存儲是比較常見的作法,NFS也是NAS存儲設備必然支持的一種協議。

一、使用NFS發佈共享資源

NFS服務的實現依賴於RPC機制,以完成遠程到本地的映射過程。在Centos 7系統中,須要安裝nfs-utils、rpcbind軟件包來提供NFS共享服務,前者用於NFS共享發佈和訪問,後者用於RPC支持。

1)安裝nfs-utils、rpcbind軟件包

提供RPC支持的服務爲rpcbind,提供NFS共享的服務爲nfs,完成安裝之後建議調整這兩個服務的自啓動狀態,以便每次開機自動啓動。手動加載NFS共享服務時,應該先啓動rpcbind,再啓動nfs。

[root@centos01 ~]# yum -y install nfs-utils rpcbind <!--安裝所需軟件包-->
[root@centos01 ~]# systemctl enable nfs<!--設置開機自動啓動nfs-->
[root@centos01 ~]# systemctl enable rpcbind<!--設置開機自動啓動rpcbind-->

2)設置共享目錄

NFS的配置文件爲/etc/exports,文件內容默認爲空(無任何共享)。在exports文件中設置共享資源時,記錄格式爲「目錄位置 客戶機地址(權限選項)」。例如,若要將文件夾/opt/wwwroot共享給172.16.16.0/24網段使用,容許讀寫操做,具體配置以下所示:

[root@centos01 ~]# mkdir -p /opt/wwwroot <!--建立須要共享的目錄-->
[root@centos01 ~]# vim /etc/exports <!--編輯NFS的配置文件,默認爲空-->
/opt/wwwroot    192.168.100.0/24(rw,sync,no_root_squash)

*上述配置中「192.168.100.0/24」表示容許訪問的客戶機地址,能夠是主機名、IP地址、網段地址、容許使用、?通配符;權限選項中的rw表示容許讀寫(ro爲只讀),sync表示同步寫入,no_root_squash表示當前客戶機以root身份訪問時賦予本地root權限(默認是root_squash,將做爲nfsnobody用戶對待)。**

當須要將同一個目錄共享給不一樣的客戶機,且分配不一樣權限時,只要用空格分隔指定多個「客戶機(權限選項)」便可。例如,如下操做將/var/ftp/public目錄共享給兩個客戶機,並分別給予只讀、讀寫權限。

[root@centos01 ~]# vim /etc/exports
/var/ftp/pub    192.168.4.11(ro) 192.168.4.110(rw)

3)啓動NFS服務程序

[root@centos01 ~]# systemctl start rpcbind
[root@centos01 ~]# systemctl start nfs
[root@centos01 ~]# netstat -anptu | grep rpcbind
udp        0      0 0.0.0.0:965             0.0.0.0:*                           2064/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           2064/rpcbind        
udp6       0      0 :::965                  :::*                                2064/rpcbind        
udp6       0      0 :::111                  :::*                                2064/rpcbind

4)查看本機發布的NFS共享目錄

[root@centos01 ~]# showmount -e
Export list for centos01:
/opt/wwwroot 192.168.100.0/24
/var/ftp/pub 192.168.4.110,192.168.4.11

二、在客戶端中訪問NFS共享資源

NFS協議的目標是提供一種網絡文件系統,所以對NFS共享的訪問也使用mount命令進行掛載,對應的文件系統類型爲nfs,既能夠手動掛載,也能夠加入fstab配置文件來實現開機自動掛載,考慮到羣集系統中的網絡穩定性,NFS服務器與客戶機之間最好使用專有網絡進行鏈接。

1)安裝rpcbind軟件包,並啓動rpcbind服務

若要正常訪問NFS共享資源,客戶機中也須要安裝rpcbind軟件包,並啓動rpcbind系統服務。另外,爲了使用showmount查詢工具,建議將nfs-utils軟件包也一塊兒裝上。

[root@centos02 ~]# yum -y install nfs-utils rpcbind
[root@centos02 ~]# systemctl start rcpbind
[root@centos02 ~]# systemctl enable rcpbind

若是客戶端已經安裝了nfs-utils軟件包,則客戶端也可使用showmount查看NFS服務器端共享了哪些目錄,查詢格式爲「showmount -e 服務器地址」。

[root@centos02 ~]# showmount -e 192.168.100.10
Export list for 192.168.100.10:
/opt/wwwroot 192.168.100.0/24
/var/ftp/pub 192.168.4.110,192.168.4.11

2)手動掛載NFS共享目錄

以root用戶身份執行mount操做,將NFS服務器共享的/opt/wwwroot目錄掛載到本地目錄/var/www/html。與掛載本地文件系統不一樣的是,設備位置處應指出服務器地址。

[root@centos02 ~]# mount 192.168.100.10:/opt/wwwroot /var/www/html  <!--掛載到本地-->
[root@centos02 ~]# df -hT /var/www/html<!--查看是否掛載成功-->
文件系統                    類型  容量  已用  可用 已用% 掛載點
192.168.100.10:/opt/wwwroot nfs4   76G  3.7G   73G    5% /var/www/html

3)fstab自動掛載設置

修改/etc/fstab配置文件,加入NFS共享目錄的掛載設置。注意將文件系統類型設爲nfs,掛載參數建添加_netdev(設備須要網絡);若添加soft、intr參數能夠實現軟掛載,容許在網絡中斷時放棄掛載。這樣客戶端就能夠在每次開機後自動掛載NFS共享資源了。

[root@centos02 ~]# vim /etc/fstab
......  <!--此處省略部份內容-->
192.168.100.10:/opt/wwwroot /var/www/html                         nfs     defaults,_netdev        0 0

完成掛載後,訪問客戶機的/var/www/html文件夾,就至關於訪問NFS服務器中的/opt/wwwroot文件夾,其中網絡映射過程對於用戶程序來講是徹底透明的。

—————— 本文至此結束,感謝閱讀 ——————

相關文章
相關標籤/搜索