LVS集羣nat丶DR前端
HA:高可用
平均無端障時間/(平均無端障時間+平均修復時間)
負載均衡
次序
lb(負載)——>ha()
LB
tcp:lvs,haproxy
應用層:nginx haproxy ats
緩存:varnish squied
HA:heartbeat,corosync keeplived iscsi gfs2 drdb
MogileFS
NoSQL:MongoDB
集羣類型:
LB:Load Banlancing(負載)
擴展容量,實現伸縮性
HA:High Availability(高可用)
服務可用性
HP:High Performace(高性能)
向量機
併發處理集羣
開源方案
LB:lvs,haproxy,nginx,ats
HA:
heartbeat
corosync+pacemaker
cman+rgmanager
cman+pacemaker
keepalived
ultramonkey
HP:hadoop
LB:解決方案
硬件:
F5 BIG-IP
思傑 Citrix Netscaler
A10 A10
Array
Redware
軟件:lvs
linux Virtual Server
章文嵩:正明
ipvs至關於netfilter,將用戶轉發
框架,須要依賴以規則完成轉發
ipvs集羣服務
定義一個或多個後端的服務器
ipvsadm
LVS:四層交換、四層路由
VIP:
keepalived
CIP
Director:負載均衡器
real server
DIP:跟real server交互
RIP
CIP<-->VIP--DIP<-->RIP
LVS類型:
NAT:-->(DNAT)
DR
TUN
FULLNAT
LVS NAT的特性
1.RS的應該使用私有地址
2.RS的網關必須指向DIP
3.RIP和DIP必須在同一網段內
4.請求和響應的報文都得通過Director,在高負載場景中,Director極可能成爲性能憑藉
5.支持端口映射
6.RS可使用任意支持集羣服務的OS
LVS DR類型
1.讓前段路由將請求發往VIP時,只能是Dirctor上的VIP
解決方案
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種
下午:回顧
LVS-NAT,DNAT
LVS-DR(Direct Routing)
LVS-TUN:(IPIP)
LNS-FULLNAT
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
aq: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
LNS-FULLNAT:
LVS的集羣服務:
四層交換,四層路由
根據請求目標套接字(包括端口的協議類型tcp,udp)來實現轉發
ipvsadm
集羣服務相關
-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 -glinux
LVS持久鏈接、DR、防火牆標記 nginx
VIP 與DIP 不在同一網段
DIP 和RIP在同一網段
LVS持久鏈接
源地址HASH
ipvs的鏈接模板 能夠經過ipvsadm -L -c
持久鏈接
持久客戶端鏈接 PCC:在固定時間內未來自於同一個客戶端發往VIP的全部請求通通定向至同一個RS
0表示全部端口
持久端口鏈接 PPC:未來着餘同一個客戶端發往某VIP的某端口的全部請求通通定向至同一個RS
-p 指定時間
持久防火牆標記鏈接PFMC:port affinity
基於防火牆標記,將兩個或以上的端口綁定爲同一個服務
iptables -t mangle -A PREROUTING -d 172.16.100.8 -p tcp --dport 80 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -d 172.16.100.8 -p tcp --dport 443 -j MARK --set-mark 10
ipvsadm -A -f 10 -s rr
ipvsadm -a -f 10 -r 172.16.100.11 -g
ipvsadm -a -f 10 -r 172.16.100.11 -g
ipvsadm -E -f 10 -s rr -p 1200
ipvs集羣兩個問題
1.後端RS的監控狀態檢測?
1.腳本
2.keepalived,ldorectord
2.Director自身的可用性?
1.ldirectord(heartabeat,corosync)
2.keeplived
手動腳本檢測
1.某RS故障時,要檢測至少三次才能讓且下線,而從新上線時,只須要檢測一次
2.如何讓腳本有更好的適應性算法