伺服器群集—LVS負載均衡群集(LVS-NAT部署)

康丶發表於2020-12-08

一、群集概述

1.1 群集的概念

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

1.2 群集的作用

有多臺主機鉤成,但對外只表現為一個整體
接待使用者的請求

1.3 為什麼需要群集

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

1.31 解決方法

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

1.4 群集的種類

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

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

1.41 負載均衡群集(Load Balance Cluster)

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

1.42 高可用群集(High Availability Cluster)——主●備

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

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

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

二、負載均衡群集架構

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

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

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

地址轉換——NAT優點:與負載排程器位於同一個物理網路,安全性要優於其他兩種方式;缺點:負載量相較於另外兩種較低

IP隧道——Tunnel;特點:具有獨立的公網IP地址,通過專用IP隧道與負載排程器相互通訊;優點:承載更多使用者

直接路由——DR
相同點:都是各web節點直接響應客戶機
不同點
1、TUN各節點有獨立的公網,DR沒有
2、TUN各web節點和排程器是IP隧道的方式,而DR各web節點和排程器是區域網方式
3、YUN web節點直接響應,DR web節點需要通過路由器響應

2.11 NAT模式——地址轉換

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

2.12 TUN模式——IP隧道

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

2.13 DR模式——直接路由

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

2.14 TUN和DR的區別

相同點:都是各web節點直接響應客戶機
不同點
1、TUN各節點有獨立的公網,DR沒有
2、TUN各web節點和排程器是IP隧道的方式,而DR各web節點和排程器是區域網方式
3、YUN web節點直接響應,DR web節點需要通過路由器響應

三、關於LVS虛擬伺服器

3.1 Linux Virtual Server

● 針對Linux核心的負載均衡解決方案
● modprobe ip_vs(載入lvs)
● cat /proc/net/ip_vs(檢視lvs)

3.2 LVS的負載排程演算法

3.21 輪詢(RR)

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

3.22 加權輪詢(WRR)

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

3.23 最少連線(LC)

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

3.24 加權最少連線(WLC)

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

四、LVS群集建立與管理

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

4.1 部署步驟

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

4.2 LVS-NAT專案部署

部署環境

排程伺服器:vmnet1:192.168.100.11(內網)vmnet2:192.168.200.11(外網)
web1vmnet1:192.168.100.12(內網)
web2vmnet1:192.168.100.13(內網)
nfsvmnet1:192.168.100.14(內網)
客戶端vmnet2:192.168.200.15(外網)

1、配置網路卡
##配置完網路卡記得重啟網路卡!!內網ping內網,外網ping外網互通

web1、web2的閘道器需指向排程伺服器的vmnet1
客戶端的閘道器需指向排程伺服器的vmnet2
排程伺服器的vmnet2記得刪除UUID

2、配置NFS

[root@server4 ~]# yum -y install rpcbind nfs-utils
[root@server4 ~]# mkdir /opt/web1      #建立網頁
[root@server4 ~]# mkdir /opt/web2
[root@server4 ~]# echo "<h1> this is web1. </h1>" > /opt/web1/index.html
[root@server4 ~]# echo "<h1> this is web2. </h1>" > /opt/web2/index.html
[root@server4 ~]# vi /etc/exports    #新增
/opt/web1 192.168.100.12(ro)
/opt/web2 192.168.100.13(ro)
[root@server4 ~]# systemctl restart nfs   
[root@server4 ~]# systemctl restart rpcbind
[root@server4 ~]# showmount -e 192.168.100.14     #檢視
Export list for 192.168.100.14:
/opt/web2 192.168.100.13
/opt/web1 192.168.100.12

在這裡插入圖片描述
在這裡插入圖片描述

3、配置web1和web2
web1:

[root@server2 ~]# yum -y install httpd     #新系統未下載過
[root@server2 ~]# showmount -e 192.168.100.14
Export list for 192.168.100.14:
/opt/web2 192.168.100.13
/opt/web1 192.168.100.12
[root@server2 ~]# mount 192.168.100.14:/opt/web1 /var/www/html
[root@server2 ~]# df -Th   #檢查掛載
[root@server2 ~]# systemctl restart httpd
[root@server2 ~]# netstat -anpt |grep httpd   #檢查服務是否開啟
tcp6       0      0 :::80                   :::*                    LISTEN      54179/httpd  
[root@server2 ~]# curl http://localhost   #未出效果
[root@server2 ~]# systemctl stop firewalld    #關閉防火牆
[root@server2 ~]# setenforce 0
[root@server2 ~]# curl http://localhost
<h1> this is web1. </h1>

在這裡插入圖片描述
在這裡插入圖片描述

web2:

[root@server3 ~]# yum -y install httpd
[root@server3 ~]# showmount -e 192.168.100.14
Export list for 192.168.100.14:
/opt/web2 192.168.100.13
/opt/web1 192.168.100.12
[root@server3 ~]# mount 192.168.100.14:/opt/web2 /var/www/html
[root@server3 ~]# df -Th
[root@server3 ~]# systemctl start httpd
[root@server3 ~]# netstat -anpt |grep httpd   #檢查服務是否開啟
tcp6       0      0 :::80                   :::*                    LISTEN      54055/httpd 
[root@server3 ~]# curl http://localhost    #沒出效果
[root@server3 ~]# systemctl stop firewalld    #關閉防火牆
[root@server3 ~]# setenforce 0
[root@server3 ~]# curl http://localhost
<h1> this is web2. </h1>

在這裡插入圖片描述
在這裡插入圖片描述

4、配置LVS排程伺服器

[root@server1 ~]# echo "net.ipv4.ip_forward=1"> /etc/sysctl.conf   #開啟路由交換功能
[root@server1 ~]# sysctl -p   #檢查是否開啟
net.ipv4.ip_forward = 1    #這時候內外網可以互ping,因為路由功能以開啟
[root@server1 ~]# modprobe ip_vs   #載入lvs
[root@server1 ~]# cat /proc/net/ip_vs   #檢視lvs
IP Virtual Server version 1.2.1 (size=4096)     #顯示版本資訊
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActCo    #lvs未設定
[root@server1 ~]# rpm -ivh /mnt/Packages/ipvsadm-1.27-7.el7.x86_64.rpm      #安裝管理軟體ipvsadm,不需要啟動
[root@server1 ~]# vi nat.sh     #編寫排程指令碼
#!/bin/bash
ipvsadm -C     #清除虛擬伺服器表中所有記錄
ipvsadm -A -t 192.168.200.11:80 -s rr     #建立虛擬伺服器
ipvsadm -a -t 192.168.200.11:80 -r 192.168.100.12:80 -m     #新增伺服器節點,虛擬地址對映真實web地址
ipvsadm -a -t 192.168.200.11:80 -r 192.168.100.13:80 -m      #新增伺服器節點,虛擬地址對映真實web地址
ipvsadm -Ln     #以數字形式檢視節點狀態 

在這裡插入圖片描述

###引數註釋

“-A”表示新增虛擬伺服器
“-a”表示新增真實伺服器
“-t”用來指定VIP地址及TCP埠
“-r”用來指定RIP地址及TCP埠
“-s”用來指定負載排程演算法一一rr(輪詢)、wrr(加權輪詢)、lc(最少連線)、wlc(加權最少連線)
“-m”表示使用NAT群集模式("-g"是DR模式,"-i"是TUN模式)
[root@server1 ~]# sh nat.sh      #執行前在自己網頁訪問下web  ip,自己能訪問別人才能通過自己訪問
[root@server1 ~]# sh nat.sh    #執行指令碼
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.11:80 rr
  -> 192.168.100.12:80            Masq    1      0          0         
  -> 192.168.100.13:80            Masq    1      0          0         

在這裡插入圖片描述

4、客戶機訪問

[root@server5 ~]# curl http://192.168.200.11   #不出效果
curl: (7) Failed connect to 192.168.200.11:80; 沒有到主機的路由    #關閉自己和LVS排程伺服器防火牆
[root@server5 ~]# systemctl stop firewalld    #LVS排程伺服器防火牆也要關
[root@server5 ~]# setenforce 0
[root@server5 ~]# curl http://192.168.200.11
<h1> this is web2. </h1>
[root@server5 ~]# curl http://192.168.200.11
<h1> this is web1. </h1>

在這裡插入圖片描述
在這裡插入圖片描述

5、lvs檢視排程情況

[root@server1 ~]# ipvsadm -Lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:53  TIME_WAIT   192.168.200.15:46440 192.168.200.11:80  192.168.100.12:80
TCP 01:52  TIME_WAIT   192.168.200.15:46438 192.168.200.11:80  192.168.100.13:80
TCP 01:53  TIME_WAIT   192.168.200.15:46442 192.168.200.11:80  192.168.100.13:80
TCP 01:54  TIME_WAIT   192.168.200.15:46446 192.168.200.11:80  192.168.100.13:80
TCP 01:54  TIME_WAIT   192.168.200.15:46444 192.168.200.11:80  192.168.100.12:80
TCP 01:55  TIME_WAIT   192.168.200.15:46448 192.168.200.11:80  192.168.100.12:80
[root@server1 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.200.11:80 rr
  -> 192.168.100.12:80            Masq    1      0          3         
  -> 192.168.100.13:80            Masq    1      0          3         

在這裡插入圖片描述

相關文章