伺服器群集LVS負載均衡-NAT

Euphrosyne!發表於2020-12-08

群集

含義

  • 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)

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

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

都屬於LVS

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

NAT模式

地址轉換

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

TUN模式

IP隧道

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

DR模式

直接路由

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

注:DR模式與TUN模式的區別

相同點:

  • 都是各web節點直接響應客戶機

不同點:

  • Tunnel各有獨立公網,DR沒有
  • Tun各節點與排程器IP隧道方式通訊 DR各節點與排程器區域網方式通訊
  • Tun的web節點直接響應 DR通過路由器響應

LVS虛擬伺服器

Linux Virtual Server

針對Linux內和平的負載均衡解決方案

[root@localhost ~]# modprobe ip_vs  //確認核心對LVS的支援
[root@localhost ~]# cat /proc/net/ip_vs
iPVirtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port Forward Weight ActiveConn InActConn

LVS虛擬伺服器

LVS的負載排程演算法

輪詢(Round Robin)

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

加權輪詢(Weighted Round Robin)

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

最少連線(Least Connections)

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

加權最少連線(Weighted Least Connections)

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

使用ipvsadm工具

LVS群集建立與管理

在這裡插入圖片描述

NFS共享儲存服務

Network File System,網路檔案系統

  • 依賴於RPC(遠端過程呼叫)
  • 需安裝nfs-utils、rpcbind軟體包
  • 系統服務:nfs、rpcbind
  • 共享配置檔案:letc/exports

使用NFS釋出共享資源

  • 安裝nfs-utils、rpcbind軟體包
  • 設定共享目錄
  • 啟動NFS服務程式
  • 檢視本機發布的NFS共享目錄

在客戶機中訪問NFS共享資源

  • 安裝rpcbind軟體包,並啟動rpcbind服務
  • 手動掛載NFS共享目錄
  • fstab自動掛載設定

專案:LVS-NAT部署實戰

案例環境

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

部署步驟

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

環境

排程伺服器一臺:
IP地址:

  • 192.168.100.10(內網)
  • 192.168.200.10(外網)

Web伺服器兩臺:

  • IP地址:192.168.200.20 (SERVER AA)
  • IP地址:192.168.200.30 (SERVER AB)

NFS共享伺服器:

  • IP地址:192.168.200.40

客戶端一臺:以win10為例,用於測試驗證

  • IP地址:192.168.1.15(內網)
  • IP地址:192.168.2.15(外網)

排程器配置

路由轉發及基礎模組

[root@localhost ~]# hostnamectl set-hostname lvs  
[root@localhost ~]# bash 
[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf 
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1   //開啟路由轉發功能
[root@lvs ~]# modprobe ip_vs                 //載入LVS核心模組 
[root@lvs ~]# cat /proc/net/ip_vs            //檢視版本資訊
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn
[root@lvs ~]# yum -y install ipvsadm.x86_64     //安裝管理軟體ipvsadm,不需要啟動

編輯排程伺服器指令碼

[root@lvs ~]# vi nat.sh                        
#!/bin/bash
ipvsadm -C     //清除核心虛擬伺服器表中的所有記錄
ipvsadm -A -t 192.168.100.10:80 -s rr   //建立虛擬伺服器
ipvsadm -a -t 192.168.100.10:80 -r 192.168.200.20:80 -m   //新增伺服器節點
ipvsadm -a -t 192.168.100.10:80 -r 192.168.200.30:80 -m  //新增伺服器節點
ipvsadm -Ln          //檢視節點狀態,“-n”以數字形式顯示顯示地址,埠資訊

賦予許可權執行指令碼

[root@lvs ~]# chmod +x nat.sh
[root@lvs ~]# ./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.100.10:80 rr
  -> 192.168.200.20:80            Masq    1      0          0         
  -> 192.168.200.30:80            Masq    1      0          0        

在這裡插入圖片描述

NFS共享目錄配置

網頁內容編輯

[root@localhost ~]# hostnamectl set-hostname nfs
[root@localhost ~]# bash
[root@nfs ~]# mkdir /opt/web1             
[root@nfs ~]# mkdir /opt/web2             
[root@nfs ~]# echo "<h1>aaa<h1>" > /opt/web1/index.html
[root@nfs ~]# echo "<h1>bbb<h1>" > /opt/web2/index.html

配置檔案並重啟服務

[root@nfs ~]# vi /etc/exports     //新增以下內容
/opt/web1 192.168.200.20/24(ro)
/opt/web2 192.168.200.30/24(ro)
[root@nfs ~]# systemctl restart nfs              ##重啟服務
[root@nfs ~]# systemctl restart rpcbind
[root@nfs ~]# showmount -e
Export list for nfs:
/opt/web2 192.168.200.30/24
/opt/web1 192.168.200.20/24

Web1配置

檢視配置狀態

[root@localhost ~]# hostnamectl set-hostname web1  
[root@localhost ~]# bash 
[root@web1 ~]# systemctl stop firewalld     ##關閉防火牆
[root@web1 ~]# setenforce 0
[root@web1 ~]# route -n                ##檢視是否有預設路由生成
Kernel IP routing table 
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.200.10  0.0.0.0         UG    100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.200.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

安裝Apache並驗證NFS

[root@web1 ~]# yum -y install httpd
[root@web1 ~]# showmount -e 192.168.200.40
Export list for 192.168.200.40:
/opt/web2 192.168.200.30/24
/opt/web1 192.168.200.20/24
[root@web1 ~]# mount 192.168.200.40:/opt/web1 /var/www/html
[root@web1 ~]#  systemctl start httpd

在這裡插入圖片描述

Web2配置

檢視配置狀態

[root@localhost ~]# hostnamectl set-hostname web2  
[root@localhost ~]# bash 
[root@web2 ~]# systemctl stop firewalld     ##關閉防火牆
[root@web2 ~]# setenforce 0
[root@web2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.200.10  0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.6.2     0.0.0.0         UG    101    0        0 ens36
192.168.6.0     0.0.0.0         255.255.255.0   U     100    0        0 ens36
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
192.168.200.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

安裝Apache並驗證NFS

[root@web2 ~]# yum -y install httpd
[root@web2 ~]# showmount -e 192.168.200.40
Export list for 192.168.200.40:
/opt/web2 192.168.200.30/24
/opt/web2 192.168.200.20/24
[root@web2 ~]# mount 192.168.200.40:/opt/web2 /var/www/html
[root@web2 ~]#  systemctl start httpd

在這裡插入圖片描述

訪問測試

瀏覽器訪問192.168.100.10,2次訪問分別顯示aaa和bbb;
在這裡插入圖片描述
在這裡插入圖片描述

相關文章