1. 程式人生 > 其它 >Blog.054 LVS 負載均衡群集部署① NAT 模式

Blog.054 LVS 負載均衡群集部署① NAT 模式

本章目錄

1. 企業群集應用概述
  1.1 群集的含義
  1.2 群集的三種類型
  1.3 負載均衡群集
  1.4 高可用群集
  1.5 高效能運算群集
2. 負載均衡結構
3. 負載均衡群集工作模式
4. LVS 虛擬伺服器
  4.1 LVS 的負載排程演算法
  4.2 使用 ipvsadm 管理工具
5. NAT 模式:LVS負載均衡群集部署
  5.1 操作步驟

1. 企業群集應用概述
  1.1 群集的含義

  • Cluster:叢集、群集
  • 由多臺主機構成,但對外只表現為一個整體


  1.2 群集的三種類型

  • 負載均衡群集;
  • 高可用群集;
  • 高效能運算群集。


  1.3 負載均衡群集

  • 提高應用系統的響應能力、儘可能處理更多的訪問請求、減少延遲為目標,獲得高併發、高負載(LB)的整體效能;
  • LB的負載分配依賴於主節點的分流演算法。

    將工作量分配到多臺計算機以達到最佳的資源利用率、最大限度地提高吞吐量、縮短響應時間和避免過載的計算機集群系統。


  1.4 高可用群集

  • 提高應用系統的可靠性、儘可能地減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果;
  • HA 的工作方式包括雙工和主從兩種模式。

    高可用叢集是指以減少服務中斷時間為目的的伺服器叢集技術。它通過保護使用者的業務程式對外不間斷提供的服務,把因軟體/硬體/人為造成的故障對業務的影響降低到最小程度。


  1.5 高效能運算群集

  • 提高應用系統的CPU運算速度、擴充套件硬體資源和分析能力為目標,獲得相當於大型、超級計算機的高效能運算(HPC)能力;
  • 高效能依賴於“分散式運算”、“平行計算”,通過專用硬體和軟體將多個伺服器的CPU、記憶體等資源整合在一起,實現只有大型、超級計算機才具備的計算能力。

    HPCC(高效能運算叢集)也稱為DAS(資料分析超級計算機),是由LexisNexis風險解決方案開發的開源,資料密集型計算系統平臺。
    HPCC平臺整合了在商品計算叢集上實現的軟體架構,為使用大資料的應用程式提供高效能的資料並行處理。


2. 負載均衡結構

    (1)第一層:負載排程器(Load Balancer或 Director)

  • 訪問整個群集系統的唯一入口,對外使用所有伺服器共有的 vip 地址(對外提供入口的ip),也稱為群集 ip 地址。
  • 通常會配置主、備兩臺排程器實現熱備份,當主排程器失效以後能夠平滑替換至備用排程器,確保高可用性。

    (2)第二層:伺服器池(Server Pool)

  • 群集所提供的應用服務,由伺服器池承擔,其中每個節點具有獨立的 rip 地址(真實 ip,獨立的ip),只處理排程器分發過來的客戶機請求。
  • 當某個節點暫時失效時,負載排程器的容錯機制會將其隔離,等待錯誤排除以後再重新納入伺服器池。
  • 配置在節點伺服器上。

    (3)第三層:共享儲存(Share Storage)

  • 為伺服器池中的所有結點提供穩定、一致的檔案存取服務,確保整個群集的統一性。
  • 共享儲存可以使用 nas 裝置,或者提供 nfs 共享服務的專用伺服器。
  • 配置在 nfs 伺服器上。

3. 負載均衡群集工作模式

    負載均衡群集是目前企業用得最多的群集型別。群集的負載排程技術有三種工作模式:

  • (NAT)地址轉換
  • (TUN)IP隧道
  • (DR)直接路由

    (1)NAT 模式:地址轉換

  • Network Address Translation,簡稱NAT模式;
  • 類似於防火牆的私有網路結構,負載排程器作為所有伺服器節點的閘道器,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口;
  • 伺服器節點使用私有IP地址,與負載排程器位於同一個物理網路,安全性要優於其他兩種方式。

    (2)TUN 模式:IP 隧道

  • IP Tunnel,簡稱TUN模式;
  • 採用開放式的網路結構,負載排程器僅作為客戶機的訪問入口,各節點通過各自的Internet連線直接回應客戶機,而不再經過負載排程器;
  • 伺服器節點分散在網際網路中的不同位置,具有獨立的公網IP地址,通過專用IP隧道與負載排程器相互通訊。

    (3)DR 模式:直接路由

  • Direct Routing,簡稱 DR 模式;
  • 採用半開放式的網路結構,與 TUN 模式的結構類似,但各節點並不是分散在各地,而是與排程器位於同一個物理網路;
  • 負載排程器與各節點伺服器通過本地網路連線,不需要建立專用的IP隧道。

4. LVS 虛擬伺服器

  • Linux Virtual Server 是針對 Linux 核心開發的一個負載均衡專案,由我國的 章文嵩 博士在 1998 年 5 月建立,官方站點位於 http://www.linuxvirtualserver.org/。
  • LVS 實際 上相當於基於 IP 地址的虛擬化應用,為基於 IP 地址和內容請求分發的負載均衡提出了一種高效的解決方法。
  • LVS 現在已成為 Linux 核心的一部分,預設編譯為 ip_vs 模組,必要時能夠自動呼叫。
  • 在 CentOS 7 系統中,以下操作可以手動載入 ip_vs 模組,並檢視當前系統中 ip_vs 模組的 版本資訊。


  4.1 LVS 的負載排程演算法

    針對不同的網路服務和配置需要,LVS 排程器提供多種不同的負載排程演算法,其中最常用的四種演算法是輪詢、加權輪詢、最少連線和加權最少連線。

  • 輪詢(Round Robin):將收到的訪問請求按照順序輪流分配給群集中的各節點,均等地對待每臺伺服器,而不管伺服器實際的連線數和系統負載。
  • 加權輪詢(Weighted Round Robin):根據排程器設定的權重值來分發請求,權重值高的節點優先獲得任務並且分配的請求越多,這樣可以保證效能高的節點承擔更多請求。
  • 最少連線(Least Connections):根據真實伺服器已建立的連線數進行分配,將收到的訪問請求優先分配給連線數最少的節點。如果所有的伺服器節點效能相近,採用這種方式可以更好地均衡負載。
  • 加權最少連線(Weighted Least Connections):在伺服器節點的效能差異較大的情況下,排程器可以根據節點伺服器負載自動調整權重,權重較高的節點將承擔更大比例的活動連線負載。


  4.2 使用 ipvsadm 管理工具

    ipvsadm 是在負載排程器上使用的 LVS 群集管理工具,通過呼叫 ip_vs 模組來新增、刪 除伺服器節點 ,以及檢視群集的執行狀態。
    在 CentOS 7 系統中 ,需要手動安裝軟體包。

1 [root@localhost ~]# yum -y install ipvsadm 
2 [root@localhost ~]# ipvsadm -v 
3 ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

    LVS 群集的管理工作主要包括建立虛擬伺服器、新增伺服器節點、檢視群集節點狀態、 刪除伺服器節點和儲存負載分配策略

    ipvsadm 工具選項說明:

-A 新增虛擬伺服器
-D 刪除整個虛擬伺服器
-s 指定負載排程演算法(輪詢:rr、加權輪詢:wrr、最少連線:lc、加權最少連線:wlc
-a 表示新增真實伺服器(節點伺服器)
-d 刪除某一個節點
-t 指定 VIP 地址及 TCP 埠
-r 指定 RIP 地址及 TCP 埠
-m 表示使用 NAT 群集模式
-g 表示使用 DR 模式
-i 表示使用 TUN 模式
-w 設定權重(權重為 0 時表示暫停節點)
-p 60 表示保持長連線60秒
-l 列表檢視 LVS 虛擬伺服器(預設為檢視所有)
-n

以數字形式顯示地址、埠等資訊,常與“-l”選項組合使用。

例:ipvsadm -ln


5. NAT 模式:LVS負載均衡群集部署
  5.1 操作步驟

    (1)實驗環境準備:

  • 負載排程器:內閘道器 ens33:192.168.80.80,外閘道器 ens37:12.0.0.1
  • Web節點伺服器1:192.168.80.10
  • Web節點伺服器2:192.168.80.20
  • NFS伺服器:192.168.80.30
  • 客戶端:12.0.0.12

    (2)部署共享儲存(NFS伺服器:192.168.80.30)

 1 systemctl stop firewalld.service
 2 systemctl disable firewalld.service
 3 setenforce 0
 4 
 5 yum install nfs-utils rpcbind -y
 6 systemctl start rpcbind.service
 7 systemctl start nfs.service
 8 
 9 systemctl enable rpcbind.service
10 systemctl enable nfs.service
11 
12 mkdir /opt/kgc /opt/benet
13 chmod 777 /opt/kgc /opt/benet
14 echo 'this is kgc web!' > /opt/kgc/index.html
15 echo 'this is benet web!' > /opt/benet/index.html
1 vim /etc/exports
2 
3 /opt/kgc 192.168.80.0/24(rw,sync)
4 /opt/benet 192.168.80.0/24(rw,sync)
5 
6 --釋出共享---
7 exportfs -rv

    (3)配置節點伺服器(192.168.80.10、192.168.80.20)

  • ens33閘道器需要設定為閘道器伺服器
 1 systemctl stop firewalld.service
 2 systemctl disable firewalld.service
 3 setenforce 0
 4 
 5 yum install httpd -y
 6 systemctl start httpd.service
 7 systemctl enable httpd.service
 8 
 9 yum install nfs-utils rpcbind -y
10 showmount -e 192.168.80.30
11 
12 
13 systemctl start rpcbind.service
14 systemctl start nfs.service
15 systemctl enable rpcbind.service
16 systemctl enable nfs.service
17 
18 --192.168.80.10---
19 mount.nfs 192.168.80.30:/opt/kgc /var/www/html
20 
21 vim /etc/fstab
22 192.168.80.30:/opt/kgc        /myshare    nfs defaults,_netdev    0  0
23 
24 
25 另一臺節點伺服器掛載如下:
26 --192.168.80.20---
27 mount.nfs 192.168.80.30:/opt/benet /var/www/html
28 
29 vim /etc/fstab
30 192.168.80.30:/opt/benet        /myshare    nfs defaults,_netdev    0  0

    (4)配置負載排程器(內閘道器 ens33:192.168.80.1,外閘道器 ens36:12.0.0.1)

1 systemctl stop firewalld.service
2 systemctl disable firewalld.service
3 setenforce 0

    (5)配置 SNAT 轉發規則

1 vim /etc/sysctl.conf
2 net.ipv4.ip_forward = 1                    #新增ip路由轉發
3 
4 或 echo '1' > /proc/sys/net/ipv4/ip_forward
5 sysctl -p
6 
7 iptables -t nat -F
8 iptables -F
9 iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

    (6)載入 LVS 核心模組

1 modprobe ip_vs                    #載入 ip_vs模組
2 cat /proc/net/ip_vs                #檢視 ip_vs版本資訊
3 
4 ##載入全部模組
5 for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F 
6 filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

    (7)安裝 ipvsadm 管理工具

1 yum -y install ipvsadm
2 
3 --啟動服務前須儲存負載分配策略---
4 ipvsadm-save > /etc/sysconfig/ipvsadm
5 或者 ipvsadm --save > /etc/sysconfig/ipvsadm
6 
7 systemctl start ipvsadm.service

    (8)配置負載分配策略(NAT模式只要在伺服器上配置,節點伺服器不需要特殊配置)

1 ipvsadm -C                     #清除原有策略
2 ipvsadm -A -t 12.0.0.1:80 -s rr
3 ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.10:80 -m [-w 1]            #新增真實ip
4 ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.20:80 -m [-w 1]            #新增真實ip
5 ipvsadm                        #啟用策略
6 
7 ipvsadm -ln                    #檢視節點狀態,Masq代表 NAT模式
8 ipvsadm-save > /etc/sysconfig/ipvsadm                        #儲存策略
1 ipvsadm -d -t 12.0.0.1:80 -r 192.168.80.10:80 -m [-w 1]        #刪除群集中某一節點伺服器
2 ipvsadm -D -t 12.0.0.1:80                                      #刪除整個虛擬伺服器
3 systemctl stop ipvsadm                                         #停止服務(清除策略)
4 systemctl start ipvsadm                                        #啟動服務(重建規則)
5 ipvsadm-restore < /etc/sysconfig/ipvsadm                       #恢復LVS 策略

    (9)執行測試

  • 網路設定裡面閘道器需要設定為閘道器伺服器
  • 在一臺IP為12.0.0.12的客戶機使用瀏覽器訪問 http://12.0.0.1/ ,不斷重新整理瀏覽器測試負載均衡效果,重新整理間隔需長一些

-