伺服器群集LVS負載均衡-NAT
群集
含義
- 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;
相關文章
- 伺服器群集—LVS負載均衡群集(LVS-NAT部署)伺服器負載
- LVS負載均衡群集--NAT模式負載模式
- LVS負載均衡群集概念、NAT模式LVS負載均衡實戰部署負載模式
- LVS負載均衡群集負載
- 負載均衡LVS+NAT負載
- LVS 負載均衡之 VS/NAT 模式負載模式
- LVS 負載均衡負載
- Linux LVS 負載均衡Linux負載
- 伺服器群集—Nginx+Tomcat+keepalived負載均衡、動靜分離群集伺服器NginxTomcat負載
- 負載均衡之--Nginx、LVS、HAProxy負載Nginx
- LVS 負載均衡之 VS/TUN 模式負載模式
- LVS 負載均衡之 VS/DR 模式負載模式
- LVS+KEEPALIVED負載均衡實驗負載
- Haproxy搭建 Web 群集實現負載均衡Web負載
- lvs+keepAlived→效率最高的負載均衡負載
- LVS#MySQL+Keepalived四層負載均衡MySql負載
- 負載均衡之LVS與Nginx對比負載Nginx
- Nginx—tomcat負載均衡動靜分離群集NginxTomcat負載
- 運維講堂:LVS負載均衡模式與F5負載均衡盤點運維負載模式
- LVS+Keepalived 實現高可用負載均衡負載
- LVS負載均衡配置與keepalive服務配置負載
- 叢集,lvs負載均衡的四種工作模式負載模式
- 伺服器負載均衡伺服器負載
- LVS和Nginx實現負載均衡功能的比較Nginx負載
- LVS+Keepalive 實現負載均衡高可用叢集負載
- Nginx+Tomcat負載均衡,動靜分離群集部署解析NginxTomcat負載
- LVS+Keepalived群集
- Nginx/LVS/HAProxy負載均衡軟體的優缺點詳解Nginx負載
- 基於MySQL Cluster + LVS + KeepAlived部署負載均衡高可用架構MySql負載架構
- 使用LVS實現負載均衡原理及安裝配置詳解負載
- 帶你瞭解Nginx+Tomcat負載均衡,動靜分離群集NginxTomcat負載
- windows伺服器第四層負載均衡_基於NLB負載均衡詳解Windows伺服器負載
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- Nginx負載均衡反向代理伺服器Nginx負載伺服器
- 負載均衡負載
- lvs 負載均衡兩臺Discuz+rsync+innotify實現資料同步負載
- 伺服器負載均衡原理及實現伺服器負載