負載均衡LVS+NAT
目錄
一、理解負載均衡群集的原理
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)
- 建立虛擬伺服器(注意: 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
- 新增伺服器節點
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時表示暫停節點)}
- 刪除伺服器節點
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的規則的匯出、匯入
相關文章
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- 負載均衡負載
- IP負載均衡負載
- WebSocket負載均衡Web負載
- nginx負載均衡Nginx負載
- NGINX 負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- 負載均衡---ribbon負載
- LoadBalancer負載均衡負載
- LVS 負載均衡負載
- 負載均衡技術(一)———負載均衡技術介紹負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- Nginx負載均衡模式Nginx負載模式
- 漫談負載均衡負載
- 負載均衡簡介負載
- golang grpc 負載均衡GolangRPC負載
- gRPC的負載均衡RPC負載
- 負載均衡詳解負載
- 負載均衡知多少?負載
- Linux LVS 負載均衡Linux負載
- 淺談負載均衡負載
- 負載均衡叢集負載
- 負載均衡補充負載
- 負載均衡4層負載
- 負載均衡之keepalived負載
- LVS負載均衡群集負載
- 負載均衡和動態負載均衡分別是什麼?-VeCloud負載Cloud
- LVS負載均衡群集概念、NAT模式LVS負載均衡實戰部署負載模式
- 做了反向代理和負載均衡的nginx配置檔案簡單示例(nginx.conf) HTTP負載均衡/TCP負載均衡負載NginxHTTPTCP
- OceanBase 負載均衡的魅力負載
- 【譯】Consul負載均衡策略負載
- 4.8 負載均衡的概念負載
- 4.10 負載均衡分散式負載分散式
- 面試之負載均衡面試負載
- Ribbon實現負載均衡負載