LVS集群nat丶DR HA:高可用 平均無故障時間/(平均無故障時間+平均修複時間) 負載均衡次序lb(負載)——>ha()LB tcp:lvs,haproxy 應用層:nginx haproxy ats 緩存:varnish squiedHA:heartbeat,corosync keepliv ...
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 -g
LVS持久連接、DR、防火牆標記
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.如何讓腳本有更好的適應性