伺服器群集—LVS負載均衡群集(LVS-NAT部署)
一、群集概述
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(外網) |
---|---|
web1 | vmnet1:192.168.100.12(內網) |
web2 | vmnet1:192.168.100.13(內網) |
nfs | vmnet1: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
相關文章
- LVS負載均衡群集負載
- LVS負載均衡群集概念、NAT模式LVS負載均衡實戰部署負載模式
- 伺服器群集LVS負載均衡-NAT伺服器負載
- LVS負載均衡群集--NAT模式負載模式
- 伺服器群集—Nginx+Tomcat+keepalived負載均衡、動靜分離群集伺服器NginxTomcat負載
- Haproxy搭建 Web 群集實現負載均衡Web負載
- Nginx+Tomcat負載均衡,動靜分離群集部署解析NginxTomcat負載
- Nginx—tomcat負載均衡動靜分離群集NginxTomcat負載
- LVS+Keepalived群集
- LVS 負載均衡負載
- LVS+Keepalived高可用群集
- LVS+Keepalived 高可用群集(理論+實戰部署)
- 伺服器群集—Haproxy+keepalived群集伺服器
- Linux LVS 負載均衡Linux負載
- 帶你瞭解Nginx+Tomcat負載均衡,動靜分離群集NginxTomcat負載
- linux下部署lvs-DR群集構建實施過程Linux
- 負載均衡LVS+NAT負載
- 綜合專案:lvs+keepalived+glusterfs群集
- 負載均衡之--Nginx、LVS、HAProxy負載Nginx
- LVS 負載均衡之 VS/NAT 模式負載模式
- LVS 負載均衡之 VS/TUN 模式負載模式
- LVS 負載均衡之 VS/DR 模式負載模式
- LVS+KEEPALIVED負載均衡實驗負載
- 基於MySQL Cluster + LVS + KeepAlived部署負載均衡高可用架構MySql負載架構
- lvs+keepAlived→效率最高的負載均衡負載
- LVS#MySQL+Keepalived四層負載均衡MySql負載
- 負載均衡之LVS與Nginx對比負載Nginx
- 運維講堂:LVS負載均衡模式與F5負載均衡盤點運維負載模式
- LVS+Keepalived 實現高可用負載均衡負載
- LVS負載均衡配置與keepalive服務配置負載
- 叢集,lvs負載均衡的四種工作模式負載模式
- 基於MySQL雙主複製架構下部署LVS+KeepAlived負載均衡MySql架構負載
- ELK 日誌分析系統 ----------- 部署ElasticSearch群集Elasticsearch
- 伺服器負載均衡伺服器負載
- Nginx+Tomcat部署負載均衡NginxTomcat負載
- LVS和Nginx實現負載均衡功能的比較Nginx負載
- LVS+Keepalive 實現負載均衡高可用叢集負載
- Sqlserver 2014 alwayson故障轉移群集節點被踢出群集SQLServer