群集技術———LVS(Linux Virtual Server,Linux虛擬伺服器)負載均衡

2020-09-25 11:01:45

企業群集應用概述

群集的含義

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

面臨問題

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

解決方法

  • 使用價格昂貴的小型機、大型電腦
  • 使用普通伺服器構建服務群集

企業群集分類

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

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

負載均衡群集(Load Balance Cluster)

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

高可用群集(High Availability Cluster)

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

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

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

負載均衡的結構

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

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

  • 地址轉換
  • IP隧道
  • 直接路由

關於LVS虛擬伺服器

LVS的負載排程演演算法

  • 輪詢輪詢 (Round Robin)

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

    • 根據排程器設定的權重值來分發請求,權重值高的節點優先獲得任務,分配的請求數越多。
    • 保證效能強的伺服器承擔更多的存取流量。
  • 最少連線 (Least Connections)

    • 根據真實伺服器已建立的連線數進行分配,將收到的存取請求優先分配給連線數最少的節點。
  • 加權最少連線 (Weighted Least Connections)

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

案例:LVS-NAT部署實戰

環境

  • LVS排程器作為Web伺服器池的閘道器,LVS兩塊網路卡,分別連線內外網,使用輪詢 (rr) 排程演演算法。

IP地址規劃

名稱IP閘道器
排程器對外公網:20.0.0.21 (NAT)/
排程器私有網路:192.168.100.21 (VM1)/
WE1私有網路:192.168.100.22(VM1)192.168.100.21
WE2私有網路:192.168.100.23 (VM1 )192.168.100.21
儲存伺服器192.168.100.24(VM1)192.168.100.21(可配可不配)
真機20.0.0.1(VM8)20.0.0.21

排程器設定 (192.168.100.21)

[root@localhost ~]# yum -y install ipvsadm
[root@localhost ~]# modprobe ip_vs 				##載入ip_vs模組
[root@localhost ~]# cat /proc/net/ip_vs 				##檢視ip_vs模組是否載入成功

[root@localhost ~]# ipvsadm -A -t 20.0.0.21:80 -s rr 			##建立虛擬伺服器
[root@localhost ~]# ipvsadm -a -t 20.0.0.21:80 -r 192.168.100.22:80 -m		##新增伺服器節點
[root@localhost ~]# ipvsadm -a -t 20.0.0.21:80 -r 192.168.100.23:80 -m
[root@localhost ~]# ipvsadm -ln				##檢視節點狀態

[root@localhost ~]# ipvsadm-save > /opt/ipvsadm			##儲存負載分配策略
[root@localhost ~]# cat /opt/ipvsadm					##確認儲存結果

[root@localhost ~]# vi /etc/sysctl.conf 				##開啟排程伺服器路由轉發功能
net.ipv4.ip_forward = 1
[root@localhost ~]# sysctl -p 						##讓核心引數立即生效

儲存伺服器設定(192.168.100.24)

[root@localhost ~]# rpm -q nfs-utils   ##最小化安裝需要yum -y install nfs-utils
[root@localhost ~]# rpm -q rpcbind     ##最小化安裝需要yum -y install rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

[root@localhost ~]# mkdir /opt/51xit /opt/52xit    ##建立兩個目錄
[root@localhost ~]# echo "this is www.51xit.top" >/opt/51xit/index.html
[root@localhost ~]# echo "this is www.52xit.top" >/opt/52xit/index.html

[root@localhost opt]# vi /etc/exports      ##設定NFS伺服器的相關資訊
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)

[root@localhost opt]# systemctl restart nfs rpcbind    ##重新啟動
[root@localhost opt]# systemctl enable nfs rpcbind    ##開機自啟


[root@localhost opt]# showmount -e     ##查詢NFS伺服器的相關資訊(僅顯示被客戶掛載的目錄名)
Export list for localhost.localdomain:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

WE1設定(192.168.100.22)

[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/			##臨時掛載
[root@localhost ~]# vi /etc/fstab 				##永久掛載
192.168.100.24:/opt/51xit /var/www/html nfs defaults,_netdev 0 0 
[root@localhost ~]# init 6				##最好重新啟動檢測下

###登入192.168.100.22測試網站是否正常####

WE2設定 (192.168.100.23)

[root@localhost ~]# showmount -e 192.168.100.24
Export list for 192.168.100.24:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

[root@localhost ~]# mount 192.168.100.24:/opt/52xit /var/www/html/  		 ##臨時掛載
[root@localhost ~]# vi /etc/fstab      	  ##永久掛載
192.168.100.24:/opt/52xit /var/www/html nfs defaults,_netdev 0 0 
[root@localhost ~]# init 6      	  ##重新啟動測試

###登入192.168.100.23測試網站是否正常####

附加:

新增一個新網路卡(ens37):

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens37			#複製ens33到ens37

[root@localhost ~]# nmcli connection  		##檢視UUID資訊

[root@localhost ~]# route -n   ##檢視路由條目 把地址以數位的形式顯示

註釋:
每一個UUID只能一個網路卡使用!!

【可能遇到的問題】

[root@localhost ~]# showmount -e 192.168.100.24
clnt_create: RPC: Port mapper failure - Unable to receive: errno 113 (No route to host)
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:

【解決方案】

(1)檢查防火牆和核心防護

[root@localhost ~]# systemctl status firewalld
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

(2)檢查共用列表有沒有設定

[root@localhost ~]# cat /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind