lvs基本概念、排程方法、ipvsadm命令及nat模型示例
LVS型別:
NAT:-->(DNAT)DR
TUN
FULLNAT
LVS的常見名詞解釋
CIP<-->VIP--DIP<-->RIP
Direct Routing:直接路由
負載均衡層(Loader Balancer),它就是我們所說的的Director
RS real server :真實提供服務的計算機
VIP:Virtual IP(VIP)address:Director用來向客戶端提供服務的IP地址
RIP:Real IP (RIP) address:叢集節點(後臺真正提供服務的伺服器)所使用的IP地址
DIP:Director's IP (DIP) address:Director用來和D/RIP 進行聯絡的地址
CIP:Client computer's IP (CIP) address:公網IP,客戶端使用的IP
LVS NAT的特性
1.RS應該使用私有地址2.RS的閘道器必須指向DIP
3.RIP和DIP必須在同一網段內
4.請求和響應的報文都得經過Director,在高負載場景中,Director很可能成為效能瓶頸
5.支援埠對映
6.RS可以使用任意支援叢集服務的OS
LVS DR型別
解決方案
1.靜態地址繫結
未必有路由器的配置許可權
Director呼叫時靜態地址繫結將難以使用
2.arptables
3.修改linux核心引數,將RS上的VIP配置在lo介面的別名上,限制linux僅對對應介面的ARP請求做相應
LVS DR型別的特性
1.RS可以使用私有地址,還可以使用公網地址,此時可以直接通過網際網路連入RS,以實現配置、監控等2.RS的閘道器一定不能指向DIP
3.RS跟Dirctory要在同一物理網路內(不能有路由器分隔)
4.請求報文經過Directory,但響應報文一定不經過Director
5.不支援埠對映
6.RS可以使用大多數的作業系統
LVS TUN型別:IP隧道
1.RIP,DIP,VIP都得是公網地址
2.RS的閘道器不會指向也不可能指向DIP
3.請求報文經過Directory,但響應報文一定不經過Director
4.不支援埠對映
5.RS的OS必須得支援隧道功能
LVS的排程方法:10種
靜態方法:僅根據演算法本身進行排程rr:Round Robin 輪詢
wrr:Weighted RR 權重輪詢
sh:source hashing源地址hash
dh:destination hashing 目標地址hash
動態方法:根據演算法及RS當前的複製狀態
lc:Least Connection 最少連線
計算當前的負載Overhead=Active*256+Inactive來實現
wlc:Weighted LC
Overhead=(Active*256+Inactive)/weight
sed:Shortest Expect Delay 最短期望延遲
Overhead=(Active+1)*256/weight
nq:Nerver Queus: 永不排隊
lblc:Locality-based least connection 基於本地的最少連線
相當於dh+lc
Lblcr:基於複製的基於本地的最少連線 Replicated and Locality-based least connection
Session持久機制
1.Session繫結:始終將統一請求者的連線定向至統一RS(第一次請求時仍有排程選擇):沒有容錯能力,有損均衡效果
2.session複製:在RS之間同步session,因此,每個RS持叢集中所有的session;對於大規模叢集環境不適用
3.session伺服器:利用單獨部署的伺服器來統一管理session
LVS的叢集服務:
四層交換,四層路由
根據請求目標套接字(包括埠的協議型別tcp,udp)來實現轉發
ipvsadm
ipvsadm -A|E -t|u|f service-address [-s scheduler][-p [timeout]] [-M netmask]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address
[-g|i|m] [-w weight] [-x upper] [-y lower]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface]
[--syncid syncid]
ipvsadm --stop-daemon state
ipvsadm -h
叢集服務相關
-A:新增一個叢集服務
-t:tcp
-u:udp
-f: firewall make 通常應用於將兩個或以上的服務繫結為一個服務進行處理時使用
service-address
-t IP:port
-u ip:port
-f firewall_mark
-s 排程演算法,預設為wlc
-p: timeout persistent connection 持久連線
-E:修改定義過的叢集服務
-D -t|u|f service-address:刪除指定的叢集服務
RS相關
-a:向指定的CS中新增RS
-t|-u|-f service-address:指明將RS新增至那個Cluster Service 中
-r:指定RS,可以包含{IP[:port]},只有支援埠對映的LVS型別才允許此處使用跟叢集服務中不同的埠
lvs型別:
-g:Gateway,DR
-i:ipip,TUN
-m:masquerade(地址偽裝),NAT
預設為DR
指定RS權重
-w
上限下限:
-x:下限
-y:上限
-e:修改指定的RS屬性
-d -t|u|f service-address -r server-address:在指定的叢集服務中刪除一個指定的RS
情況所有的叢集服務:
-C
儲存規則(使用輸出重定向):
ipvsadm-save
ipvaadm -S
載入指定的規則:(使用輸入重定向)
ipvsadmin-restore
ipvasdm -R
檢視ipvs規則等
-L [options]
-n 使用數字格式顯示IP地址,不反解
-c:檢視連線數相關資訊
--stats:顯示統計資料
--rate:資料傳輸速率
--timeout:顯示tcp會話時長
--daemon:守護程式的資訊
--sort:對虛擬服務進行排序,預設為升序
--exact:精確顯示,不做單位換算
-Z:計數器清零
LVS-DR模型
Director兩個地址:VIP,DIP
RS有兩個地址:VIP,RIP
禁止rs響應對BIP的ARP廣播請求
1.在前端路由上實現靜態MAC地址VIP的繫結
前提:得有路由器的配置許可權
缺點:Directory故障轉移時,無法更新此繫結
2.arptables
前提:在各RS在安裝arptables程式i,並編寫arptables規則
缺點:依賴於獨特功能的應用程式
3.修改Linux核心引數
前提:RS必須是Linux
缺點:適用性差
兩個引數:
arp_announce:定義通告模式
arp_ignore:定義收到arp請求的響應模式
配置專用路由,以使得響應報文首先通過VIP所篇日誌的lo上的別名介面
Linux的工作特性:IP地址是屬於主機,而非特定網路卡
LVS-DR配置架構根據其VIP與RIP是否在同一個網路內有兩種情況
在Directory 和RS上配置VIP,要使用如下格式
ifconfig ALIAS VIP netmask 255.255.255.255 broadcast VIP
route add -host VIP dev
LVS-DR的配置
Director
iptables -t filter -F
ifconfig eth0:0 VIP netmask 255.255.255.255 broadcast VIP up
route add -host VIP dev eth0:0
RS:
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP up
route add -host VIP dev eth0:0
Director:
ipvsadm -A -t ip:port -s scheduler
ipvsadm -a -t ip:port -r rs1 -g
nat模型示例(虛擬機器下):
dip和rip都在vmnet2上面
主伺服器配置:
開啟路由間轉發功能
# vim /etc/sysctl.conf
# sysctl -p
測試配置:
# ipconfig eth0 172.16.10.10/24 up
# route add default 172.16.10.1
在兩個dip伺服器上分別安裝web服務,並測試是否聯通
建立lvs nat模型
# ipvsadm -A -t 192.168.8.41:80 -s rr
新增排程伺服器
# ipvsadm -a -t 192.168.8.41:80 -r 172.16.10.10 -m
# ipvsadm -a -t 192.168.8.41:80 -r 172.16.10.20 -m
顯示列表
# ipvsadm -L -n
# ipvsadm -L -nc
# ipvsadm -L -n --rate
# ipvsadm -L -n --stats
清空計數器
# ipvsadm -Z
修改lvs伺服器的排程演算法為wrr(權重)
# ipvsadm -E -t 192.168.8.41:80 -s wrr
修改其中之一權重為3
# ipvsadm -e -t 192.168.8.41:80 -r 172.16.10.10 -m -w 3
通過
/var/log/httpd/access_log可以檢視訪問的客戶端IP地址
例項二:(真實的伺服器充當vip伺服器)
網路環境概述:
VIP伺服器有兩塊網路卡:
EM1(IP:192.168.8.68)
EM2(IP:192.168.8.70)
192.168.8.68的8888號埠通過路由對映到外網的183.239.143.212 8888 號埠
VIP:183.239.143.212:8888
DIP:192.168.8.70
RIP1:192.168.8.40
RIP1:192.168.8.20
主伺服器配置:
em1:192.168.8.68
em2:192.168.8.70
# vim /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
# sysctl -p
rip1和rip2配置好web伺服器埠為8888,並且將閘道器指向192.168.8.70
# ipvsadm -A -t 183.239.143.212:8888 -s rr
# ipvsadm -a -t 183.239.143.212:8888 -r 192.168.8.40 -m
# ipvsadm -a -t 183.239.143.212:8888 -r 192.168.8.20 -m
該方案是失敗的,將183.239.143.212:8888更改為192.168.8.68:8888後可以成功
# ipvsadm -A -t 192.168.8.68:8888 -s rr
# ipvsadm -a -t 192.168.8.68:8888 -r 192.168.8.40 -m
# ipvsadm -a -t 192.168.8.68:8888 -r 192.168.8.20 -m
通過訪問
http://183.239.143.212:8888/
http://192.168.8.68:8888
都可以訪問網站
相關文章
- LVS - ipvsadm命令參考
- LVS(二)NAT模型配置模型
- LVS - 地址轉換(NAT)模式示例模式
- LVS型別的介紹以及LVS的排程方法型別
- LVS排程演算法演算法
- CentOS 7上配置LVS + Keepalived + ipvsadmCentOS
- 圖解協程排程模型-GMP模型圖解模型
- Go 排程模型 GPMGo模型
- 負載均衡LVS+NAT負載
- LVS-NAT叢集搭建
- LVS-NAT模式的實現模式
- LVS負載均衡群集--NAT模式負載模式
- LVS 負載均衡之 VS/NAT 模式負載模式
- LVS-NAT模式的配置詳解模式
- 伺服器群集—LVS負載均衡群集(LVS-NAT部署)伺服器負載
- sed 命令詳解及示例
- 伺服器群集LVS負載均衡-NAT伺服器負載
- Linux IO排程方法Linux
- keepalived詳解 - LVS(IPVS)管理工具ipvsadm簡介
- LVS負載均衡群集概念、NAT模式LVS負載均衡實戰部署負載模式
- Flink排程之排程器、排程策略、排程模式模式
- TSM管理及備份資料到帶庫的方法及具體命令使用示例
- LVS - 直接路由(DR)模式示例路由模式
- keepalived之 ipvsadm-1.26-4(lvs)+ keepalived-1.2.24 安裝
- 1. 企業級排程器LVS初識、工作模式詳解模式
- Golang的GMP排程模型與原始碼解析Golang模型原始碼
- Laravel 模型關聯 「 預載入 」中 with () 方法的功能的示例及說明Laravel模型
- LVS - 相關介紹、工作模式和排程演算法的說明模式演算法
- JavaScript 陣列方法集合及示例!JavaScript陣列
- 正則匹配方法及示例
- LVS的DR模型配置模型
- 深度解讀昇騰CANN模型下沉技術,提升模型排程效能模型
- du 及 df 命令的使用(附帶示例)
- linux crontab 命令詳細用法及示例Linux
- NodeJS命令列注入:示例及預防NodeJS命令列
- netcat 命令介紹及使用示例
- LVS NAT模式下,CIP和RIP處於同一內網的問題以及解決方法模式內網
- Linux系統(四)LVS叢集負載均衡NAT模式Linux負載模式