負載均衡LVS+NAT

尋找散落的微光發表於2020-11-02

一、理解負載均衡群集的原理

1.1、企業群集應用概述群集的含義

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

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

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

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

1.2、企業群集分類

根據群集所針對的目標差異,可分為三種型別
●負載均衡群集
●高可用群集
●高效能運算群集

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

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

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

1.3、負載均衡群集架構

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

負載均衡的結構
在這裡插入圖片描述

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

負載均衡群集是目前企業用得最多的群集型別
群集的負載排程技術有三種工作模式
地址轉換
IP隧道
直接路由

1.5、NAT模式

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

1.6、直接路由(Direct Routing)

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

1.7、關於LVS虛擬伺服器

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

1.8、LVS的負載排程演算法

1、輪詢(Round Robin)
將收到的訪問請求按照順序輪流分配給群集中的各節點(真實伺服器),均等地對待每一臺伺服器,而不管伺服器實際的連線數和系統負載
2.加權輪詢(Weighted Round Robin)
根據真實伺服器的處理能力輪流分配收到的訪問請求,排程器可以自動查詢各節點的負載情況,並動態調整其權重
3、最少連線(Least Connections)
根據真實伺服器已建立的連線數進行分配,將收到的訪問請求優先分配給連線數最少的節點
4、加權最少連線(Weighted Least Connections)
在伺服器節點的效能差異較大的情況下,可以為真實伺服器自動調整權重
權重較高的節點將承擔更大比例的活動連線負載

1.9、NFS共享儲存服務

1.Network File System,網路檔案系統
依賴於RPC(遠端過程呼叫)
需安裝nfs-utils.rpcbind軟體包
系統服務:nfs、rpcbind
共享配置檔案:/etc/exports

2、使用NFS釋出共享資源
安裝nfs-utils.rpcbind軟體包
設定共享目錄
啟動NFS服務程式
檢視本機發布的NFS共享目錄

3、在客戶機中訪問NFS共享資源
安裝rpcbind軟體包,並啟動rpcbind服務
手動掛載NFS共享目錄
fstab自動掛載設定

二、案列:LVS-NAT負載均衡叢集搭建

2.1、部署配置

一臺排程器:配置雙網路卡VM1: 192168.100.23橋接網路卡:20.0.0.23
二臺WEB伺服器叢集池:192.168.100:24、192.168.100:25 這邊的閘道器必須指向192.168.100.23這個地址
一臺NFS共享伺服器:192.168.100:21

2.2、排程器上設定

#虛擬機器新增網路卡##
[root@localhost network-scripts]# nmcli connection
NAME              UUID                        TYPE            DEVICE
ens33             49511b41-e51a-41f0-a43e-d13274d3ce10 ethernet       ens33
virbr0             1816178ee-807e-3499-9d19-20507cbb8ad3 ethernet    ens36

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost ~]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost ~]#  vi ifcfg-ens36
UUID 改一下
ens33換成36
只需要下面兩個就可以了
IPADDR=192.168.100.23
NETMASK=255.255.255.0

##檢視一下三臺的閘道器

yum -y install net-tools      最小安裝需要

####192.168.100.23的主機:
route -n
Kernel IP routing table
Destination         Gateway         Genmask         Flags   Metric  Ref    Use Iface
20.0.0.0               0.0.0.0          255.255.255.0   U          102     0        0 ens33
192.168.100.0      0.0.0.0         255.255.255.0   U           101    0        0 ens36

###192.168.100.24的主機:
[root@localhost ~]# route -n
Kernel IP routing table
Destination            Gateway                Genmask             Flags   Metric   Ref     Use Iface
0.0.0.0                  192.168.100.23        0.0.0.0                 UG      100       0        0 ens33
192.168.100.0       0.0.0.0                     255.255.255.0     U         100       0        0 ens33
192.168.122.0       0.0.0.0                     255.255.255.0     U          0          0        0 virbr0

###192.168.100.25的主機:
[root@localhost ~]# route -n
Kernel IP routing table
Destination               Gateway                 Genmask            Flags   Metric   Ref    Use Iface
0.0.0.0                    192.168.100.23         0.0.0.0                UG      100        0        0 ens33
192.168.100.0         0.0.0.0                  255.255.255.0        U         100       0        0 ens33

###192.168.100.25的主機:
[root@localhost ~]# route -n
Kernel IP routing table
Destination           Gateway               Genmask         Flags    Metric   Ref    Use Iface
0.0.0.0                  192.168.100.23     0.0.0.0              UG      100        0        0 ens33
192.168.100.0      0.0.0.0                   255.255.255.0   U        100        0        0 ens33
這個閘道器可以不用配192.168.100.23的,配置你VM1網路卡的就行

2.3、下面開始實驗配置

###LVS主機192.168.100.23的配置
[root@localhost~ ]# yum  -y install ipvsadm

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
centos                                              | 3.6 kB     00:00     
Resolving Dependencies
--> Running transaction check
---> Package ipvsadm.x86_64 0:1.27-7.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================
 Package         Arch           Version               Repository      Size
===========================================================================
Installing:
 ipvsadm         x86_64         1.27-7.el7            centos          45 k

Transaction Summary
===========================================================================
Install  1 Package

Total download size: 45 k
Installed size: 75 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : ipvsadm-1.27-7.el7.x86_64                               1/1 
  Verifying  : ipvsadm-1.27-7.el7.x86_64                               1/1 

Installed:
  ipvsadm.x86_64 0:1.27-7.el7                                              

Complete!

#########

[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

[root@localhost ~]# modprobe ip_vs
[root@localhost ~]# 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

1)建立虛擬伺服器(注意:NAT模式要兩塊網路卡,排程器的地址是外網口地址)
群集的VIP地址為192.168.100.23,針對TCP80埠提供負載分流服務,使用的輪詢排程演算法。對於負載均衡排程器來說,VIP必須是本機實際已啟用的IP地址
[root@localhost ~]# ipvsadm -A -t 20.0.0.23:80 -s rr

2)新增伺服器節點
[root@localhost ~]# ipvsadm -a -t 20.0.0.23:80 -r 192.168.100.24:80 -m
[root@localhost ~]# ipvsadm -a -t 20.0.0.23:80 -r 192.168.100.25:80 -m 


3)儲存LVS策略並檢視
[root@localhost ~]# ipvsadm-save > /opt/ipvsadm 
[root@localhost ~]# cat /opt/ipvsadm 
-A -t localhost.localdomain:http -s rr
-a -t localhost.localdomain:http -r 192.168.100.24:http -m -w 1
-a -t localhost.localdomain:http -r 192.168.100.25:http -m -w 1


4)開啟排程伺服器路由轉發功能
[root@localhost ~]# vi /etc/sysctl.conf 
net.ipv4.ip_forward = 1

##檢視是否開啟
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1


########儲存伺服器192.168.100.21 配置########

rpm -q nfs-utils  ###如果沒裝,yum -y install nfs-utils
rpm -q rpcbind  ###如果沒裝,yum  -y install rpcbind

[root@localhost~ ]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind

##建立掛載點內容
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "你好,我是51" > /opt/51xit/index.html
[root@localhost ~]# echo "你好,我是52" > /opt/51xit/index.html

##宣告掛載什麼內容
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24(rw,sync)
/opt/52xit 192.168.100.0/24(rw,sync)

##檢視一下
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24


[root@localhost~]# systemctl restart nfs
[root@localhost~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind

2.3、NAT輪詢主機1:192.168.100.24的配置

[root@localhost~]# yum -y install nfs-utils rpcbind      ####必須要裝nfs-untils否則mount不識別nfs格式,系統最小化安裝帶要裝
[root@localhost~]# showmount -e 192.168.100.21      ####如果還沒釋出,請到儲存伺服器釋出下. exportfs -rv
Export list for 192.168.100.21:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.21:/opt/51xit /var/www/html/

[root@localhost~]# vi /etc/fstab
192.168.100.21:/opt/51xit/   /var/www/html/  nfsdefaults,_netdev 0 0                ###開機自動掛載,注意格式對齊

[root@localhost ~]# systemctl start httpd
[root@localhost~] systemctl enable httpd

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

2.4、NAT輪詢主機2:192.168.100.25的配置

[root@localhost~]# yum -y install nfs-utils rpcbind      ####必須要裝nfs-untils否則mount不識別nfs格式,系統最小化安裝帶要裝
[root@localhost~]# showmount -e 192.168.100.21      ####如果還沒釋出,請到儲存伺服器釋出下. exportfs -rv
Export list for 192.168.100.21:
/opt/52xit 192.168.100.0/24
/opt/51xit 192.168.100.0/24

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.21:/opt/52xit /var/www/html/

[root@localhost~]# vi /etc/fstab
192.168.100.21:/opt/52xit/   /var/www/html/  nfsdefaults,_netdev 0 0                ###開機自動掛載,注意格式對齊

[root@localhost ~]# systemctl start httpd
[root@localhost~]#  systemctl enable httpd

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

三、常用命令的解釋如下:

LVS的負載排程演算法有四種最常用的:輪詢演算法(rr)、加權輪詢(wrr)、最少輪詢(Ic)、加權最少輪詢(wlc)

  1. 建立虛擬伺服器(注意: NAT模式要兩塊網路卡,排程器的地址是外網口地址)
    群集的VIP地址為192.168.100.23,針對TCP 80埠提供負載分流服務,使用的輪詢排程演算法。對於負載均衡排程器來說,VIP必須是本機實際已啟用的IP地址
    ipvsadm -A -t 192.168.100.23:80 -s rr

//選項"-A"表示新增虛擬伺服器,"-t"用來指定VIP地址及TCP埠,"-s"用來指定負載排程演算法——rr、wrr、lc、wlc

  1. 新增伺服器節點
    ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.33:80 -m
    ipvsadm -a -t 192.168.20.11:80 -r 192.168.80.44:80 -m

/選項"-a"表示新增真實伺服器,"-“用來指定VIP地址及TCP埠,“以"用來指定RIP地址及TCP埠,“m"表示使用NAT群集模式(“-g"是DR模式,”-“是TUN模式)
{-m引數後面還可以跟-w的引數,這裡沒有做的”-w“用來設定權重(權重為0時表示暫停節點)}

  1. 刪除伺服器節點
    ipvsadm -d -r 192.168.90.22:80 -t 192.168.80.88:80
    //需要從伺服器池中刪除某一個節點時,使用選項"-d”。執行刪除操作必須指定目標物件,包括節點地址、虛擬IP地址。如上所示的操作將會刪除LVS群集192.168.80.8中的節點
    192.168.90.22

若需要刪除整個虛擬伺服器時,使用選項-D並指定虛擬IP地址即可,無需要指定節點。例如:“ipvsadm -D-t 192.168.80.11:80",則刪除此虛擬伺服器

ipvsadm -L 檢視節點狀態,加個”"-n“將以數字形式顯示地址、埠資訊
ipvsadm-save >/etc/sysconfig/ipvsadm//儲存策略

使用匯出/匯入工具ipvsadm-save/ipvsadm-restore可以儲存、恢復LVS策略,方法類似於iptables的規則的匯出、匯入

相關文章