博文目錄
1、LVS羣集應用基礎
2、LVS虛擬服務器
3、搭建NFS共享存儲服務html
根據實際企業環境的不一樣,羣集所提供的功能也各不相同,採用的技術細節也可能各有千秋。然而從總體上來看,須要先了解一些關於羣集的共性特徵,這樣才能在構建和維護羣集的工做中作到心中有數,避免操做上的盲目性。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、內存等資源整合在一塊兒,實現只有大型、超級計算機才具有的計算能力。
不一樣類型的羣集能夠根據實際需求進行合併,如高可用的負載均衡羣集。安全
第一層:負載調度器,這是訪問整個羣集系統的惟一入口,對外使用全部服務器共有的VIP(虛擬IP)地址,也稱爲羣集IP。一般會配置主、備兩臺調度器實現熱備份,當主調度器失效之後平滑替換至備用調度器,確保高可用性。服務器
第二層:服務器池,羣集所提供的應用服務(如HTTP、FTP)由服務器池承擔,其中每一個節點具備獨立的RIP(真實IP)地址,只處理調度器分發過來的客戶機請求,當某個節點暫時失效,負載調度器的容錯機制會將其隔離,等待錯誤排除後在將其從新歸入服務器池。網絡
關於羣集的負載調度技術,能夠基於IP、端口、內容等進行分發,其中基於IP的負載調度是效率最高的,基於IP的負載均衡模式中,常見的有地址轉換、IP隧道和直接路由三種工做模式,以下圖:併發
地址轉換:簡稱NAT模式,相似於防火牆的私有網絡結構,負載調度器做爲全部服務器節點的網關,即做爲客戶機的訪問入口,也是各節點回應客戶機的訪問出口。服務器節點使用私有IP地址,與負載調度器位於同一個物理網絡,安全性要優於其餘兩種方式,但負載調度器的壓力較大。負載均衡
IP隧道:簡稱TUN模式,採用開放式的網絡結構,負載調度器僅做爲客戶機的訪問入口,各節點經過各自的Internet鏈接直接回應客戶機,而再也不通過負載調度器,服務器節點分散在互聯網中的不一樣位置,具備獨立的公網IP地址,經過專用IP隧道與負載調度器相互通訊。
- 直接路由:簡稱DR模式,採用半開放的網絡結構,與TUN模式的結構相似,但各節點不是分散在各地的,而是與調度器位於同一個物理網絡,負載調度器與各節點服務器經過本地網絡鏈接,不須要創建專用的IP隧道。
以上三種工做模式中,NAT方式只須要一個公網IP地址,從而成爲最易用的一種負載均衡模式,安全性也比較好,許多硬件負載均衡設備就採用這種方式;相比較而言,DR模式和TUN模式的負載能力更增強大,適用範圍更廣,但節點的安全性要稍微差一些。
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調度器提供多種不一樣的負載調度算法,其中最經常使用的四種算法包括輪詢、加權輪詢、最少鏈接和加權最少鏈接。
輪詢(rr):將收到的訪問請求按照順序輪流分配給羣集中的各節點(真實服務器),均等地對待每臺服務器,而無論服務器實際的鏈接數和系統負載。
加權輪詢(wrr):根據真實服務器的處理能力輪流分配收到的訪問請求,調度器能夠自動查詢個節點的負載狀況,並動態調整其權重。這樣能夠保證處理能力強的服務器承擔更多的訪問流量。
最少鏈接(lc):根據真實服務器已創建的鏈接數進行分配,將受到的訪問請求優先分配給鏈接數最少的節點,若是全部的服務器節點性能相近,採用這種方式能夠更好地均衡負載。
- 加權最少鏈接(wlc):在服務器節點的性能差別較大的狀況下,能夠爲真實服務器自動調整權重,權重較高的節點將承擔更大比例的活動鏈接負載。
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)
若羣集的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)。
爲虛擬服務器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時表示暫停節點)。
結合選項-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。
須要從服務器池中刪除某一個節點時,使用選項-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」,則刪除此虛擬化服務器。
使用導出/導入工具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 <!---啓動服務(重建規則)->
NFS是一種基於TCP/IP傳輸的網絡文件系統協議,最初由Sun公司開發。經過使用NFS協議,客戶機能夠像訪問本地目錄同樣訪問遠程服務器中的資源,對於大多數負載均衡羣集來講,使用NFS協議來共享數據存儲是比較常見的作法,NFS也是NAS存儲設備必然支持的一種協議。
NFS服務的實現依賴於RPC機制,以完成遠程到本地的映射過程。在Centos 7系統中,須要安裝nfs-utils、rpcbind軟件包來提供NFS共享服務,前者用於NFS共享發佈和訪問,後者用於RPC支持。
提供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-->
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)
[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
[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共享的訪問也使用mount命令進行掛載,對應的文件系統類型爲nfs,既能夠手動掛載,也能夠加入fstab配置文件來實現開機自動掛載,考慮到羣集系統中的網絡穩定性,NFS服務器與客戶機之間最好使用專有網絡進行鏈接。
若要正常訪問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
以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
修改/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文件夾,其中網絡映射過程對於用戶程序來講是徹底透明的。
—————— 本文至此結束,感謝閱讀 ——————