LVS負載均衡群集

wishy blog發表於2020-12-08

群集概述

群集的含義

Cluster,叢集,群集
有多臺主機構成,但是對外只表現為一個整體

問題

網際網路應用中,隨著站點對硬體效能能、相應速度、服務穩定性、資料可靠性登要求越來越高,單臺伺服器力不從心

解決方法

使用介個昂貴的小機型、大型機
使用普通伺服器構建伺服器群集

群集的種類

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

1.負載均衡群集(Load Balance Cluster)

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

2.高可用群集(High Availability Cluster)

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

3.高效能運算群集(High Performance Computer Cluster)

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

負載均衡群集架構

負載均衡的結構

第一層,負載排程器(Load Balancer或Director)
第二層,伺服器池(Server Pool)
第三層,共享儲存(Share Storage)

負載均衡群集工作模式

地址轉換——NAT
IP隧道——Tunnel
直接路由——DR

1.NAT模式(地址轉換)

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

2.TUN模式(IP隧道)

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

3.DR模式(直接路由)

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

群集工作模式區別

1.DR模式相同點web節點直接響應客戶機
2.tunnel模式各個節點都有獨立的公網地址,DR沒有
3.TUN各web節點和排程器IP隧道通訊,DR是區域網通訊
4.TUN的web節點直接響應,DR通過路由器響應

LVS虛擬機器伺服器

Linux Virtual Server

針對Linux核心的負載均衡解決方案
1998年5月,由我國的章文嵩博士建立
官方網站:http://www.linuxvirtualserver.org/

確認對lvs的支援

modprobe ip_vs
cat /proc/netip_vs

LVS負載排程演算法

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

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

根據排程器設定的權重值來分發請求,權重值高的節點優先獲得任務,分配的請求數越多
保證效能牆的伺服器承擔更多的訪問流量

3.最少連線(Least Connections)

根據真是伺服器已簡歷的連線數進行分配,將受到的訪問請求優先分配給連線數最少的節點

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

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

LVS群集建立與管理

建立虛擬伺服器
新增、刪除伺服器節點
檢視群集節點情況
儲存負載分配策略

LVS群集部署

部署步驟

1.載入ip_vs模組,安裝ipvsadm工具
2.開啟路由轉發
3.新建LVS虛擬機器伺服器並新增節點伺服器
4.配置節點伺服器
建立測試網站
掛載NFS共享儲存
建立測試網頁
5.儲存規則並測試

群集拓撲圖

在這裡插入圖片描述

部署環境

IP設定

裝置IP地址子網掩碼閘道器內/外網
LVS20.0.0.15255.255.255.0 外網
LVS192.168.2.15255.255.255.0 內網
web1192.168.2.16255.255.255.0192.168.2.15內網
web2192.168.2.17255.255.255.0192.168.2.15內網
nfs192.168.2.18255.255.255.0 內網

NFS共享儲存

1.需安裝nfs-utils、rpcbind軟體包

yum -y install nfs-utils rpcbind

2.設定共享目錄
(為了便於測試,所以設定兩個不同的目錄區分)

mkdir /opt/web1
mkdir /opt/web2
echo "<html><title>web1</title><body><h1>This is web1</h1></body></html>" >> /opt/web1/index.html
echo "<html><title>web2</title><body><h1>This is web2</h1></body></html>" >> /opt/web2/index.html
vi /etc/exports
/opt/web1 192.168.2.16(ro)
/opt/web2 192.168.2.17(ro)

在這裡插入圖片描述

重啟

systemctl restart nfs

檢視本機發布的NFS共享目錄

showmount -e

在這裡插入圖片描述

web1節點

安裝httpd用於測試

yum -y install httpd

檢視NFS伺服器共享的目錄

showmount -e 192.168.2.18

在這裡插入圖片描述
將目錄掛載到網站根目錄

mount 192.168.2.18:/opt/web1 /var/www/html/

檢查一下是否掛載成功

在這裡插入圖片描述
開啟httpd

systemctl start httpd

關閉防火牆

systemctl stop firewalld
setenforce 0
vi /etc/selinux/config

在這裡插入圖片描述
測試

curl http://localhost

在這裡插入圖片描述

web2節點

web2節點和web1節點,除了更改幾個引數之外,其它都一樣

安裝httpd用於測試

yum -y install httpd

檢視NFS伺服器共享的目錄

showmount -e 192.168.2.18

在這裡插入圖片描述
將目錄掛載到網站根目錄

mount 192.168.2.18:/opt/web2 /var/www/html/

檢查一下是否掛載成功

cat /var/www/html/index.html

在這裡插入圖片描述

開啟httpd

systemctl start httpd

關閉防火牆

systemctl stop firewalld
setenforce 0
vi /etc/selinux/config

在這裡插入圖片描述
測試

curl http://localhost

在這裡插入圖片描述

LVS排程部署

1.開啟路由轉發

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

在這裡插入圖片描述
2.手動載入ip_vs模組

modprobe ip_vs

檢視

cat /proc/net/ip_vs

在這裡插入圖片描述
安裝 ipvsadm

yum -y install ipvsadm

編寫指令碼

vim nat.sh
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 20.0.0.15:80 -s rr
ipvsadm -a -t 20.0.0.15:80 -r 192.168.2.16:80 -m
ipvsadm -a -t 20.0.0.15:80 -r 192.168.2.17:80 -m
ipvsadm -Ln

在這裡插入圖片描述

ipvsadm選項

選項說明
-C清除核心虛擬伺服器表中的所有記錄
-A新增虛擬伺服器
-a新增真是伺服器
-t用來指定VIP地址及TCP埠
-r用來指定RIP地址及TCP埠
-s用來指定負載排程演算法
-m表示使用NAT群集模式
-g表示使用DR群集模式
i表示使用TUN群集模式

執行指令碼

測試
在這裡插入圖片描述
在這裡插入圖片描述
檢視詳細資訊

ipvsadm -Lnc

在這裡插入圖片描述

相關文章