1. 程式人生 > 其它 >LVS 負載均衡群集 (實驗:NAT模式 LVS負載均衡群集部署)

LVS 負載均衡群集 (實驗:NAT模式 LVS負載均衡群集部署)

一、企業群集應用概述

1、群集的含義:

  • Cluster,叢集、群集
  • 由多臺主機構成,但對外只表現為一個整體,只提供一個訪問入口(域名或IP地址),相當於臺大型計算機

2、問題:

  • 網際網路應用中,隨著站點對硬體效能、響應速度、服務穩定性、資料可靠性等要求越來越高,單臺伺服器已經無法滿足負載均衡及高可用的要求。

3、解決方法:

  • 使用價格昂貴的小型機、大型機
  • 使用多臺相對廉價的普通伺服器構建服務群集

通過整合多臺伺服器,使用 LVS來達到伺服器的高可用和負載均衡,並以同一個 IP地址對外提供相同的服務。

在企業中常用的一種群集技術——LVS (Linux Virtual Server,Linux虛擬伺服器)

二、企業群集分類

根據群集所針對的目標差異,可分為三種類型

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

1、負載均衡群集(LB/Load Balance Cluster)

  • 提高應用系統的響應能力、儘可能處理更多的訪問請求、減少延遲為目標,獲得高併發、高負載(LB)的整體效能
  • LB的負載分配依賴於主節點的分流演算法,將來自客戶機的訪問請求分擔給多個伺服器節點,從而緩解整個系統的負載壓力。例如,"DNS輪詢" "反向代理"等

2、高可用群集(HA/High Availability Cluster)

  • 提高應用系統的可靠性、儘可能地減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果
  • HA的工作方式包括雙工和主從兩種模式,雙工即所有節點同時線上主從則只有主節點線上,但當出現故障時從節點能自動切換為主節點。例如"故障切換""雙機熱備"等

3、高效能運算群集(HPC/High Performance Computer Cluster)

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

三、負載均衡群集架構

負載均衡群集是目前企業用得最多的群集型別

1、負載均衡的結構

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

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

  • 第二層伺服器池(Server Pool)

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

  • 第三層共享儲存(Share Storage)

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

2、負載均衡群集工作模式分析

  • 負載均衡群集是目前企業用得最多的群集型別
  • 群集的負載排程技術有三種工作模式
    • 地址轉換NAT模式
    • IP隧道
    • 直接路由

3、NAT模式 地址轉換

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

小結:排程伺服器在NAT模式中既要接受資料還需要轉發資料,即作為入口也作為出口,從而擁有的併發量要接受資料和轉發資料都需要使用,在高頻狀態下會影響整個群集的工作效能,作為 排程器還需進行排程演算法等配置,可能會成為整個群集效能的瓶頸

4、TUN模式IP隧道

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

小結:每一條伺服器都分散在網際網路中,對於很講究災備(天災人禍使某地的伺服器壞了可以切換到備用伺服器)的企業才會使用,正常情況下不太可取,因為每臺伺服器需要獨立的公網IP,公網IP本身數量有限,還需要支付費用,並且使用IP隧道轉發時還需在2/3層時新增一個專用的IP頭部,無形中增加了封裝解封裝時的工作流程,效率也隨之降低

5、DR模式直接路由

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

小結:資料通過路由器到達排程器,排程器依據排程演算法分配給主機,主機處理資料後通過路由傳送給使用者,不在經過排程器,減少了排程器的負載情況也無需使用公網IP或IP隧道增加成本,是比較實用的模式,目前使用的比較多

四、關於LVS虛擬伺服器

1、Linux Virtual Server

  • 針對Linux核心開發的負載均衡解決方案
  • 1998年5月,由我國的章文嵩博士建立
  • 官方網站∶ http://www.linuxvirtualserver.org/
  • LVS實際上相當於基於IP地址的虛擬化應用,為基於IP地址和內容請求分發的負載均衡提出了一種高效的解決方法但只支援四層轉發

2、LVS現在已成為Linux 核心的一部分,預設編譯為 ip_vs 模組,必要時能夠自動呼叫。在CentOS 7 系統中,以下操作可以手動載入 ip_vs 模組,並檢視當前系統中 ip_vs 模組的版本資訊。

modprobe ip_vs #確認核心對LVS的支援

cat /proc/net/ip_vs

3、LVS的負載排程演算法

(1)輪詢(Round Robin)

將收到的訪問請求按照順序輪流分配給群集中的各節點(真實伺服器),均等地對待每一臺伺服器,而不管伺服器實際的連線數和系統負載

(2)加權輪詢(Weighted Round Robin)

根據排程器設定的權重值來分發請求,權重值高的節點優先獲得任務,分

配的請求數越多可以保證效能強的伺服器承擔更多的訪問流量

(3)最少連線(Least Connections)

根據真實伺服器已建立的連線數進行分配,將收到的訪問請求優先分配給連線數最少的節點

(4)加權最少連線(Weighted Least Connections)

在伺服器節點的效能差異較大時,可以為真實伺服器自動調整權重效能較高的節點將承擔更大比例的活動連線負載

五、使用 ipvsadm 工具

1、LVS群集建立與管理

2、使用ipvsadm工具對群集管理

ipvsadm 工具選項說明∶

實驗:NAT模式LVS負載均衡群集部署

1、實驗環境:LVS排程器作為Web伺服器池的閘道器,LVS兩塊網絡卡,分別連線內外網,使用輪詢(rr)排程演算法

2、實驗部署:

  • 負載排程器:內閘道器 ens33∶ 20.0.0.6,外閘道器ens36∶12.0.0.1
  • Web節點伺服器1∶20.0.0.7
  • Web節點伺服器2∶20.0.0.8
  • NFS伺服器∶ 20.0.0.9
  • 客戶端∶ 12.0.0.12

3、實驗需求:

1、載入ip_vs 模組

2、開啟路由準發

3、新建LVS虛擬伺服器並新增節點伺服器

4、配置節點伺服器

  • 建立測試網站

  • 掛載NFS共享儲存

  • 建立測試網頁

5、儲存規則並測試

實驗詳細步驟:

環境準備

#關閉防火牆和SE安全全部關閉

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

一、部署NFS共享儲存(NFS伺服器:20.0.0.9)

1、檢視NFS服務是否安裝

若未安裝(我的安裝好了)

#安裝nfs服務

yum install nfs-utils rpcbind -y

2、建立accp、benet 兩個共享目錄

3、啟動NFS服務

二、配置節點伺服器(20.0.0.7、20.0.0.8)

1、關閉防火牆,se安全

2、共享出來後,兩個節點伺服器都安裝 httpd

3、(1)開啟httpd服務,並把 benet 掛載到 /html 目錄中 (節點伺服器1:20.0.0.8)

(2)同樣,節點伺服器2開啟httpd服務,並把 accp 掛載到 /html目錄中 (節點伺服器2:20.0.0.7)

三、配置LVS負載排程器 (20.0.0.6)

1、關機新增一塊網絡卡,重新開機,關閉防火牆,se安全

2、掛載,安裝 ipvsadm 管理工具

3、配置外網絡卡資訊

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-ipv6 ifdown-TeamPort ifup-ippp ifup-routes network-functions
ifcfg-lo ifdown-isdn ifdown-tunnel ifup-ipv6 ifup-sit network-functions-ipv6
ifdown ifdown-post ifup ifup-isdn ifup-Team
ifdown-bnep ifdown-ppp ifup-aliases ifup-plip ifup-TeamPort
ifdown-eth ifdown-routes ifup-bnep ifup-plusb ifup-tunnel
ifdown-ib ifdown-sit ifup-eth ifup-post ifup-wireless
ifdown-ippp ifdown-Team ifup-ib ifup-ppp init.ipv6-global

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens33

[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ifconfig

4、兩個節點伺服器(20.0.0.7、20.0.0.8)的閘道器重新指定一下,設定保持一致即可。要想訪問外網節點伺服器的閘道器要跟排程器對接上

[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

[root@localhost html]# systemctl restart network #重啟網絡卡

5、設定 ip 轉發功能

vim /etc/sysctl.conf #永久開啟SNAT轉發功能

net.ipv4.ip_forward=1

echo '1'> /proc/sys/net/ipv4/ip_forward #臨時開啟SNAT轉發功能

sysctl-p #讀取修改後的配置

[root@localhost network-scripts]#vim /etc/sysctl.conf

iptables -t nat-F #清空nat表中所有鏈

iptables -F #清空表中所有鏈

iptables -t nat -A POSTROUTING -s 192.168.150.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

#新增規則,-t:指定表 -A:指定鏈 -s:指定源IP -o:指定外網網絡卡 -j:指定控制型別 -to:轉換為12.0.0.1 訪問外網

iptables -t nat -nL #檢視一下轉發規則是否配置成功

6、載入LVS核心模組

modprobe ip_vs #載入ip_vs模組

cat /proc/net/ip_vs #檢視ip_vs版本資訊

yum -y install ipvsadm (之前安裝過了)

#啟動服務前須先手動建立該檔案用來儲存負載分配策略才能啟動成功

ipvsadm-save > /etc/sysconfig/ipvsadm

或者

ipvsadm --save >/etc/sysconfig/ipvsadm

systemctl start ipvsadm. service

補充:

#載入所有的ip_vs模組,grep-o"^[^.]*"精確匹配開頭不包含.的部分

for i in$(ls/usr/lib/modules/$(uname-r)/kernel/net/netfilter/ipvs|grep-o"^[^.]*")

do

echo$i

/sbin/modinfo-F filename $i >/dev/null 2>&1 && /sbin/modprobe $i

done

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

[root@localhost network-scripts]# ipvsadm -C #清除原有所有的策略

#新增虛擬伺服器VIP地址和TCP埠為12.0.0.1:80使用輪詢負載排程演算法
[root@localhost network-scripts]# ipvsadm -A -t 12.0.0.1:80 -s rr
[root@localhost network-scripts]# ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.7:80 -m
[root@localhost network-scripts]# ipvsadm -a -t 12.0.0.1:80 -r 20.0.0.8:80 -m

[root@localhost network-scripts]# ipvsadm #啟用策略

ipvsadm -ln #檢視節點狀態,Masq代表NAT模式

ipvsadm-save >/etc/sysconfig/ipvsadm#儲存策略可以誤刪恢復或是重啟後讀取

-A:新增虛擬伺服器,即排程器;

使用的vip:12.0.0.1:80 ;

-s:指定排程輪詢演算法

-r:指定真實伺服器的IP址

-m:指定群集模式

8、刪除、恢復LVS策略

ipvsadm -d -t 12.0.0.1:80 -r 192.168.150.10:80 #刪除群集中某一節點伺服器

ipvsadm -D -t 12.0.0.1:80 #刪除整個虛擬伺服器

systemctl stop ipvsadm #停止服務(清除策略)

systemctl start ipvsadm #啟動服務(重建規則)

ipvsadm-restore</etc/sysconfig/ipvsadm #恢復LVS策略

四、測試

在一臺 IP 12.0.0.12 的客戶機使用瀏覽器訪問 http://12..0.0.1/, 不斷重新整理瀏覽器測試負載均衡效果,重新整理間隔需長一點;

四層轉發,預設保持連線60s,立刻重新整理不會跳轉,等待60s或更長時間重新整理,會跳轉到另一臺伺服器上。