1. 程式人生 > 其它 >LVS負載均衡叢集--NAT模式部署

LVS負載均衡叢集--NAT模式部署

一、企業群集應用概述

1、群集的含義

  • Cluster、叢集、群集

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

2、問題及解決方法

問題:

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

解決方法:

  • 使用價格昂貴的小型機、大型機

  • 使用多臺相對廉價的普通伺服器構建服務群集

在企業中常用的一種群集技術–LVS(Linux virtual server,linux虛擬伺服器)

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

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

• 負載均衡群集

• 高可用群集

• 高效能運算群集

4、負載均衡群集(Load Balance Cluster)

  • 提高應用系統的響應能力,儘可能處理更多的訪問請求、減少延遲為目標,獲得高併發、高負載(LB)的整體效能

  • LB的負載分擔依賴於主節點的分流演算法,將來自客戶機的訪問請求分擔給多個伺服器節點,從而緩解整個系統的負載壓力。例如 "反向代理 "
    5.高可用群集(High Availability Cluster)

  • 提高應用系統的可靠性、儘可能的減少中斷時間為目標,確保服務的連續性,達到高可用(HA)的容錯效果

  • HA的工作方式包括雙工和主從兩種模式,雙工即所有節點同時線上;主從則只有主節點線上,但當出現故障時從節點能自動切換為主節點。
    例如 “故障切換” “雙機熱備” 等

6、高效能運算群集(High Performance Computer Cluster)

  • 以提高應用系統的CPU運算速度、擴充套件硬體資源和分析能力為目標,獲得相當於大型、超級計算機的高效能運算(HPC)能力

  • 高效能依賴於“分散式運算”、“平行計算”,通過專用硬體和軟體將多個伺服器的cpu、記憶體等資源整合在一起,實現只有大型、超級計算機才具備的計算能力,例如 “雲端計算” “網路計算”等

二、負載均衡群集架構

負載均衡的結構

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

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

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

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

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

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

2、群集的負載排程技術有三種工作模式

• 地址轉換

• IP隧道

• 直接路由

■ NAT模式

地址轉換

  • Network Address Translation,簡稱NAT模式

  • 類似於防火牆的私有網路結構,負載排程器作為所有伺服器節點的閘道器結構,負載排程器作為所有伺服器節點的閘道器,即作為客戶機的訪問入口,也是各節點回應客戶機的訪問出口

  • 伺服器節點使用私有IP地址,與負載排程器位於同一個物理網路,安全性要優於其他兩種方式

原理:首先負載均衡器接收到客戶的請求資料包時,根據排程演算法決定將請求傳送給哪個後端的真實伺服器(RS)。然後負載均衡器就把客戶端傳送的請求資料包的目標IP地址及埠改成後端真實伺服器的IP地址(RIP)。真實伺服器響應完請求後,檢視預設路由,把響應後的資料包傳送給負載均衡器,負載均衡器在接收到響應包後,把包的源地址改成虛擬地址(VIP)然後傳送回給客戶端

優點:叢集中的伺服器可以使用任何支援TCP/IP的作業系統,只要負載均衡器有一個合法的IP地址

缺點:擴充套件性有限,當伺服器節點增長過多時,由於所有的請求和應答都需要經過負載均衡器,因此負載均衡器將成為整個系統的瓶頸

■ TUN模式

IP隧道

  • IP Tunnel ,簡稱TUN模式

  • 採用開放式的網路結構,負載排程器僅作為客戶機的訪問入口,各節點通過各自的lnternet連線直接回應客戶機,而不再經過負載排程器

  • 伺服器節點分散在網際網路中的不同位置,具有獨立的公網IP地址,通過專用IP隧道與負載排程器相互通訊

原理:首先負載均衡器接收到客戶的請求資料包時,根據排程演算法決定將請求傳送給哪個後端的真實伺服器(RS)。然後負載均衡器就把客戶端傳送的請求報文封裝一層IP隧道(T-IP)轉發到真實伺服器(RS)。真實伺服器響應完請求後,檢視預設路由,把響應後的資料包直接傳送給客戶端,不需要經過負載均衡器

優點:負載均衡器只負責將請求包分發給後端節點伺服器,而RS將應答包直接發給使用者。所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,也能處理很巨大的請求量

缺點:隧道模式的RS節點需要合法IP,這種方式需要所有的伺服器支援“IP Tunneling”

■ DR 模式

直接路由

  • Direct Routing ,簡稱DR模式

  • 採用半開放式的網路結構,與TUN模式的結構類似,但各節點並不是分散在各地,而是與排程器位於同一個物理網路

  • 負載排程器與各節點伺服器通過本地網路連線,不需要建立專用的IP隧道

原理:首先負載均衡器接收到客戶的請求資料包時,根據排程演算法決定將請求傳送給哪個後端的真實伺服器(RS)。然後負載均衡器就把客戶端傳送的請求資料包的目標MAC地址改成後端真實伺服器的MAC地址(R-MAC)。真實伺服器響應完請求後,檢視預設路由,把響應後的資料包直接傳送給客戶端,不需要經過負載均衡器

優點:負載均衡器只負責將請求包分發給後端節點伺服器,而RS將應答包直接發給使用者。所以,減少了負載均衡器的大量資料流動,負載均衡器不再是系統的瓶頸,也能處理很巨大的請求量

缺點:需要負載均衡器與真實伺服器RS都有一塊網絡卡連線到同一物理網段上,必須在同一個區域網環境

四、關於LVS虛擬伺服器

1、Linux Virtual Server

  • 針對Linux核心開發的負載均衡解決方案

  • 1998年5月,由我國的章文嵩博士建立

  • 官方網站: http://www.linuxvirtualserver.org/

  • LVS實際上相當於基於IP地址的虛擬化應用,為基於IP地址和內容請求分發的負載均衡提出了一種高效的解決方法

LVS現在已經成為 LInux 核心的一部分,預設編譯為ip_vs模組,必要時能夠自動呼叫

2、LVS的負載排程演算法

■ 輪詢 (Round Robin)

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

■ 加權輪詢(Weighted Round Robin)

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

  • 保證效能強的伺服器承擔更多的訪問流量

■ 最少連線 (Least Connections)

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

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

  • 在伺服器節點的效能差異較大時,可以為真實伺服器自動調整權重

  • 效能較高的節點承擔更大比例的活動連線負載

五、NAT模式 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

環境準備

負載排程器:內閘道器 ens33:192.168.237.10,外閘道器 ens37:12.0.0.1
Web節點伺服器1:192.168.237.20
Web節點伺服器2:192.168.237.30
NFS伺服器:192.168.237.40
客戶端:12.0.0.12

1、部署共享儲存(NFS伺服器:192.168.237.40)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install nfs-utils rpcbind -y
systemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service

mkdir /opt/accp /opt/benet
chmod 777 /opt/accp /opt/benet
echo 'this is accp web!' > /opt/accp/index.html
echo 'this is benet web!' > /opt/benet/index.html

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.237.0/24(rw,sync)
/opt/benet 192.168.237.0/24(rw,sync)

2、釋出共享

exportfs -rv

3、配置節點伺服器(192.168.237.20、192.168.237.30)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

yum install httpd -y
systemctl start httpd.service
systemctl enable httpd.service

yum install nfs-utils rpcbind -y
showmount -e 192.168.237.40

systemctl start rpcbind
systemctl enable rpcbind
mount.nfs 192.168.237.40:/opt/accp /var/www/html
echo 'this is accp web!' > /var/www/html/index.html

vim /etc/fstab
192.168.237.40:/opt/accp		/myshare	nfs defaults,_netdev	0  0

web節點伺服器1

web節點伺服器2

4、配置負載排程器(內閘道器 ens33:192.168.237.10,外閘道器 ens37:12.0.0.1)

systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
(1)配置SNAT轉發規則
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

或 echo '1' > /proc/sys/net/ipv4/ip_forward
sysctl -p

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

(2)載入LVS核心模組
modprobe ip_vs					#載入 ip_vs模組
cat /proc/net/ip_vs				#檢視 ip_vs版本資訊

(3)安裝ipvsadm 管理工具
yum -y install ipvsadm

啟動服務前須儲存負載分配策略

ipvsadm-save > /etc/sysconfig/ipvsadm
或者 ipvsadm --save > /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

(4)配置負載分配策略(NAT模式只要在伺服器上配置,節點伺服器不需要特殊配置)
ipvsadm -C 					#清除原有策略
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.11:80 -m [-w 1]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.80.12:80 -m [-w 1]
ipvsadm						#啟用策略

ipvsadm -ln					#檢視節點狀態,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm						#儲存策略

5、測試效果

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