系統擴展方式:
Scale UP:向上擴展,加強(硬件性能的提升)
Scale Out:向外擴展,增長設備,調度分配問題,Clusterhtml
Cluster:集羣,爲解決某個特定問題將多臺計算機組合起來造成的單個系統前端
Linux Cluster類型:
LB:Load Balancing,負載均衡
HA:High Availiablity,高可用,SPOF(single Point Of failure)
MTBF:Mean Time Between Failure 平均無端障時間
MTTR:Mean Time To Restoration( repair)平均恢復前時間
A=MTBF/(MTBF+MTTR)
(0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%, 99.9999%
HPC:High-performance computing,高性能 www.top500.org
分佈式系統:
分佈式存儲:雲盤 分
布式計算:hadoop,Sparkmysql
LB Cluster的實現
硬件
F5 Big-IP
Citrix Netscaler
A10 A10
軟件
lvs:Linux Virtual Server
nginx:支持四層調度
haproxy:支持四層調度
ats:apache traffic server,yahoo捐助
perlbal:Perl 編寫
poundlinux
基於工做的協議層次劃分:
傳輸層(通用):DPORT
LVS:
nginx:stream
haproxy:mode tcp
應用層(專用):針對特定協議,自定義的請求模型分類
proxy server:
http:nginx, httpd, haproxy(mode http), ...
fastcgi:nginx, httpd, ...
mysql:mysql-proxy, ...nginx
會話保持:負載均衡web
(1) session sticky:同一用戶調度固定服務器 Source IP:LVS sh算法(對某一特定服務而言) Cookie算法
(2) session replication:每臺服務器擁有所有session session multicast clustersql
(3) session server:專門的session服務器 Memcached,Redisshell
HA集羣實現方案
keepalived:vrrp協議
ais:應用接口規範
heartbeat
cman+rgmanager(RHCS)
coresync_pacemakerapache
LVS:Linux Virtual Server字面意思是linux虛擬服務器理解爲負載調度器,集成早內核中,開發者是中國人章文嵩目前在阿里任職。
官網:http://www.linuxvirtualserver.org/
VS: Virtual Server,負責調度
RS: Real Server,負責真正提供服務
L4:四層路由器或交換機
工做原理:VS根據請求報文的目標IP和目標協議及端口將其調度轉發至某RS,根據調度算法來挑選RS
iptables/netfilter:
iptables:用戶空間的管理工具
netfilter:內核空間上的框架
流入:PREROUTING --> INPUT
流出:OUTPUT --> POSTROUTING
轉發:PREROUTING --> FORWARD --> POSTROUTING
DNAT:目標地址轉換; PREROUTING
lvs集羣類型中的術語:
VS:Virtual Server, Director, Dispatcher(調度器) Load Balancer
RS:Real Server(lvs), upstream server(nginx) backend server(haproxy)
CIP:Client IP 客戶端IP地址
VIP: Virtual serve IP VS外網的IP
DIP: Director IP VS內網的IP
RIP: Real server IP 服務端IP地址
訪問流程:CIP <--> VIP == DIP <--> RIP
lvs: ipvsadm/ipvs
ipvsadm:用戶空間的命令行工具,規則管理器
用於管理集羣服務及RealServer
ipvs:工做於內核空間netfilter的INPUT鉤子上的框架
lvs集羣的類型:
lvs-nat:修改請求報文的目標IP,多目標IP的DNAT
lvs-dr(直接路由):操縱封裝新的MAC地址
lvs-tun(隧道模型):在原請求IP報文以外新加一個IP首部
lvs-fullnat:修改請求報文的源和目標IP
本質是多目標IP的DNAT,經過將請求報文中的目標地址和目標端口修改成某挑出的RS的RIP和PORT實現轉發
(1)RIP和DIP通常在同一個IP網絡,且應該使用私網地址; RS的網關要指向DIP
(2)請求報文和響應報文都必須經由Director轉發,Director 易於成爲系統瓶頸
(3)支持端口映射,可修改請求報文的目標PORT
(4)VS必須是Linux系統,RS能夠是任意OS系統
LVS作爲負載均衡集羣的調度器,須要配置兩個IP地址,一個公網IP負責與網絡中的客戶端通信,一個私網IP負責鏈接集羣內部在服務器RS。集羣內部的RS通常使用私網IP且與調度器的私網IP在同一網段,因此要求RS的網關要指向調度器的私網地址,中間由交換機鏈接。理論狀況下,RS與調度器的IP地址能夠在不一樣網段,若是RS與調度器再也不同一網段那麼就要求中間有路由器鏈接,路由器的效率遠遠不及交換機好,極可能再次成爲集羣的工做瓶頸。
正如上圖所示,客戶端訪問RS服務的請求會發往LVS主機,此時,客戶端請求報文的源IP爲CIP,目標IP爲LVS的VIP,當LVS收到客戶端的請求報文時,會將請求報文中的目標IP修改成後端某 個RealServer的RIP,就以上圖爲例,當LVS收到客戶端的請求報文時,會將報文中的VIP修改成RIP1或者RIP2,具體將VIP修改成哪一個RealServer的RIP,取決於LVS使用的具體算 法,以輪詢算法爲例,輪詢算法就是若是此次將報文的目標IP修改成RIP1,那麼下次就將目標IP修改成RIP2,再下次就再將目標IP修改成RI P1,以此類推,當客戶端請求報文的目標IP被修改成對應的RIP後,請求報文的源IP 爲CIP,目標IP已經改成RIP,那麼報文天然會被LVS轉發到對應的RealServer中,當RealServer收到對應的請求報文時,會發現報文的目標IP就是本身的RIP,因而就會接收報文, 處理後進行響應,由於RealServer收到請求報文時,源IP爲CIP,目標IP爲RIP,因此RealServer在進行響應時,響應報文的源IP則爲RIP,目標IP則爲CIP,可是CIP對於RealServe r來講確定不在一個網絡內,由於CIP是一個公網IP,因此,咱們要將全部RealServer的網關指向DIP,當RealServer產生響應報文時,會將響應報文發往網關DIP,而DIP就是LVS 的內網IP,當LVS收到對應的響應報文時,響應報文的源IP爲RIP,目標IP爲CIP,此時,LVS會將響應報文的源IP修改成VIP,修改後的響應報文的源IP爲VIP,目標IP爲CIP,因而響應報文被髮往客戶端,客戶端則會收到響應報文,其實上述整個過程是一個DNAT的過程,因此,此種LVS模型被稱之爲LVS-NAT模型。
上述過程當中,由於客戶端在訪問RS提供的服務時發出的請求報文的目標IP爲LVS主機的VIP(外網IP),所以RS的響應報文要由中間的LVS服務器再次代替轉發,將相應報文的源地址轉換爲VS的VIP才能使客戶端順利的接受相應報文。也就是說,RS的響應報文要與客戶端發出的請求報文走同一條路線。事實上客戶端的請求報文是比較輕量級的,不帶有實體部分或者實體部分很小,都是一些請求信息。而RS的響應報文通常是重量級的報文,LVS服務器處理客戶端的請求報文時壓力比較小,可是處理RS重量級的響應報文時壓力就會比較大。LVS-NAT模型由於原理的束縛處理不了大規模的集羣服務,更適合小規模的服務集羣。而LVS-DR模型能實現RS的相應報文再也不原路返回給VS。
地址轉換流程:
源地址 | 目標地址 | |
---|---|---|
客戶端請求 | CIP | VIP |
經VS轉換 | CIP | RIP |
響應階段 | ||
RS相應報文 | RIP | CIP |
經VS轉換 | VIP | CIP |
客戶端收到 | VIP | CIP |
LVS-DR:Direct Routing,直接路由,LVS默認模式,應用最普遍 ,經過爲請求報文從新封裝一個MAC首部進行轉發,源MAC是DIP 所在的接口的MAC,目標MAC是某挑選出的RS的RIP所在接口的 MAC地址;源IP/PORT,以及目標IP/PORT均保持不變。
LVS-DR模型與LVS-BAT模型的區別在於,LVS-DR模型中RS的相應報文再也不經由VS的轉發而是直接經過其餘網絡路徑發送給客戶端。大大減輕了VS的工做負擔。可是要實現RS與客戶端的之間的通信的前提條件是請求報文與相應報文中的IP地址必須匹配,也就是說,客戶端發送的請求報文中的目標IP地址要與RS發送的相應報文的源IP地址相同。LVS-NST模型中,全部的RS都綁定與VS相同的VIP(外網IP),這是實現RS與客戶端通信的前提,可是又會形成另外一個問題,當客戶端發送請求報文到VS時,VS要經過算法選擇一臺合適的RS去響應客戶端的請求。然而這個時候後端的全部RS的IP地址都爲VIP。爲了解決這一問題,在LVS-DR模型中,須要把RS與VS放在同一物理網路中。並在VS中靜態綁定每一個RS的MAC地址。ARP廣播的前提條件是不知道目標主機的MAC時纔會經過IP地址發送ARP廣播尋址。當VS中靜態綁定每一臺RS的MAC時就能經過MAC順利的找到目標主機。
(1) 確保前端路由器將目標IP爲VIP的請求報文發往Director :LVS-DR模型中後端的每一臺都綁定的有VIP,當請求報文發送到VS與RS所在的網絡中時,爲了不報文不通過VS直接被RS接收,有如下三種手段:
(2) RS的RIP可使用私網地址,也能夠是公網地址;RIP與 DIP在同一IP網絡;RIP的網關不能指向DIP,以確保響應報文不會經由Director
(3) RS和Director要在同一個物理網絡
(4) 請求報文要經由Director,但響應報文不經由Director,而由RS直接發往Client
(5) 不支持端口映射(端口不能修敗)
(6) RS可以使用大多數OS系統
LVS-DR模式IP包調度過程:
源地址 | 目標地址 | 源MAC | 目標MAC | |
---|---|---|---|---|
客戶端請求 | CIP | VIP | ||
VS調度後 | CIP | VIP | RS-MAC | |
RS收到 | CIP | VIP | ||
RS相應包 | CIP | VIP | ||
轉發方式:不修改請求報文的IP首部(源IP爲CIP,目標IP爲 VIP),而在原IP報文以外再封裝一個IP首部(源IP是DIP,目 標IP是RIP),將報文發往挑選出的目標RS;RS直接響應給客戶端(源IP是VIP,目標IP是CIP)
(1) DIP, VIP, RIP都應該是公網地址
(2) RS的網關不能,也不可能指向DIP
(3) 請求報文要經由Director,但響應不能經由Director
(4) 不支持端口映射
(5) RS的OS須支持隧道功能
(6)LVS-TUN模式能夠理解爲VS將收到的客戶端請求報文直接封裝了一層IP信息。適合遠程調用情景。
LVS-TUN模式IP包調度過程:
源地址 | 目標地址 | |
---|---|---|
客戶端請求 | CIP | VIP |
VS轉換 | DIP | RIP |
RS接受 | DIP | RIP |
RS響應 | VIP | CIP |
客戶端接收 | VIP | CIP |
lvs-fullnat:經過同時修改請求報文的源IP地址和目標IP地址進行轉發 CIP --> DIP VIP --> RIP
(1) VIP是公網地址,RIP和DIP是私網地址,且一般不在同一IP網絡;所以,RIP的網關通常不會指向DIP
(2) RS收到的請求報文源地址是DIP,所以,只需響應給DIP;但Director還要將其發往Client
(3) 請求和響應報文都經由Director
(4) 支持端口映射; 注意:此類型kernel默認不支持
lvs-fullnat模式IP包調度過程:
源地址 | 目標地址 | |
---|---|---|
客戶端請求 | CIP | VIP |
VS轉換 | DIP | RIP |
RS接受 | DIP | RIP |
RS響應 | VIP | CIP |
客戶端接收 | VIP | CIP |
lvs-fullnat模式IP包調度過程表面上看起來與lvs-tun模式比較相似,可是事實上是有區別的,並且工做特性也大不相同。在lvs-fullnat模式中,VS接受到客戶端的請求報文時要經過算法調度出一臺合適的RS去相應服務報文。VS在把客戶端的請求報文轉發給後端的RS以前會在請求報文外層直接封裝一層IP信息,而報文原有的IP信息則做爲數據被封裝在報文內部。後端的RS支持隧道功能,解封裝VS轉發過來的請求報文之後識別報文內部原有的IP信息,實現RS的響應報文能夠直接與客戶端通信而再也不經過VS。可是在lvs-fullnat模式中,VS接收到客戶端發來的請求報文之後,再也不將原有的IP信息封裝在報文內,而是作地址轉化將原報文的源地址改成VS的DIP,目標地址改成RIP,RS收到的請求報文的源地址就是DIP,目標地址就是RIP因此後端的RS沒法實現直接與客戶端通信。也就是說lvs-fullnat模式中RS發送的相應報文仍是要在經過VS的轉換以後才能到達客戶端。lvs-fullnat模式實際意義並不大,並且內核默認狀況下不支持該模式。
VS/NAT | VS/TUN | VS/DR | |
---|---|---|---|
RS特性 | any | 支持隧道 | 忽略ARP |
網絡 | PRIVATE | LAN/WAN | LAN |
負載 | 低 | 高 | 高 |
網關 | VS | own router | own router |
lvs-nat與lvs-fullnat:請求和響應報文都經由Director
lvs-nat:RIP的網關要指向DIP
lvs-fullnat:RIP和DIP未必在同一IP網絡,但要能通訊
lvs-dr與lvs-tun:請求報文要經由Director,但響應報文由RS直接 發往Client
lvs-dr:經過封裝新的MAC首部實現,經過MAC網絡轉發
lvs-tun:經過在原IP報文外封裝新IP頭實現轉發,支持遠距離通訊
根據其調度時是否考慮各RS當前的負載狀態
兩種:靜態方法和動態方法
靜態方法:僅根據算法自己進行調度。
一、RR:roundrobin,輪詢
二、WRR:Weighted RR,加權輪詢
三、SH:Source Hashing,實現session sticky,源IP地址 hash;未來自於同一個IP地址的請求始終發往第一次挑中的RS,從而實現會話綁定(現實生活中VS收到的請求報文中的IP地址應該是一個公網IP,然而有可能整個地區的客戶端都使用這一個公網IP,對於VS來言這個公網IP對應的主機多是數以萬計甚至更多。因此這種調度方法意義不大。與源IP地址hash不一樣的是源cookie的hash,生活中每臺主機都有本身的cookie,源cookie的hash能夠有效區分不一樣主機。可是LVS只支持底層的四層調度,cookie則屬於應用層範疇,LVS並不支持)
四、DH:Destination Hashing;目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商
動態方法:主要根據每RS當前的負載狀態及調度算法進行調度 Overhead=value 較小的RS將被調度
一、LC:least connections(最小鏈接數) 適用於長鏈接應用 Overhead=activeconns(活動鏈接)*256+inactiveconns(非活動鏈接)
二、WLC:Weighted LC,默認調度方法 Overhead=(activeconns*256+inactiveconns)/weight
三、SED:Shortest Expection Delay,初始鏈接高權重優先 Overhead=(activeconns+1)*256/weight
四、NQ:Never Queue,第一輪均勻分配,後續SED
五、LBLC:Locality-Based LC,動態的DH算法,使用場景: 根據負載狀態實現正向代理
六、LBLCR:LBLC with Replication,帶複製功能的LBLC 解決LBLC負載不均衡問題,從負載重的複製到負載輕的RS
[root@Centos6 ~]#grep -i -C 20 ipvs /boot/config-2.6.32-696.el6.x86_64 # IPVS scheduler CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m CONFIG_IP_VS_LC=m CONFIG_IP_VS_WLC=m CONFIG_IP_VS_LBLC=m CONFIG_IP_VS_LBLCR=m CONFIG_IP_VS_DH=m CONFIG_IP_VS_SH=m CONFIG_IP_VS_SED=m CONFIG_IP_VS_NQ=m #內核支持的調度算法模塊
ipvsadm/ipvs:ipvs工做在內核級別,ipvsadm則做爲一個工具在用戶空間讓用戶去管理ipvs
ipvs:
grep -i -C 10 "ipvs" /boot/config-VERSIONRELEASE.x86_64
支持的協議:TCP, UDP, AH, ESP, AH_ESP, SCTP
ipvs集羣:
管理集羣服務
管理服務上的RS
程序包:ipvsadm
Unit File: ipvsadm.service
主程序:/usr/sbin/ipvsadm
規則保存工具:/usr/sbin/ipvsadm-save
規則重載工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
核心功能:
集羣服務管理:增、刪、改
集羣服務的RS管理:增、刪、改
查看
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags]
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 [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]清空計數器
管理集羣服務VS:增、改、刪
增、改:
ipvsadm -A|E -t|u|f service-address \[-s scheduler] [-p [timeout]] -A:增長調度器地址 -E:修改調度器地址 -t|u|f: -t: TCP協議的端口,VIP:TCP_PORT -u: udp協議的端口,VIP:UDP_PORT -f:firewall MARK,標記,一個數字 [-s scheduler]:指定集羣的調度算法,默認爲wlc
刪除:
ipvsadm -D -t|u|f service-address
管理集羣上的RS:增、改、刪
增、改: ipvsadm -a|e -t|u|f service-address -r server-address \[-g|i|m] [-w weight] #service-address VS地址(vip) #server-address RS地址(RIP) #-a 添加RS #-e 修改RS屬性,修改時容易出現BUG,清除所有策略之後從新配置 刪: ipvsadm -d -t|u|f service-address -r serveraddress server-address: rip[:port] 如省略port,不做端口映射 選項: lvs類型: -g: gateway, dr類型,默認 -i: ipip, tun類型 -m: masquerade, nat類型 -w weight:權重
清空定義的全部內容:ipvsadm –C
清空計數器:ipvsadm -Z [-t|u|f service-address]
查看:ipvsadm -L|l [options]
--numeric, -n:以數字形式輸出地址和端口號
--exact:擴展信息,精確值
--connection,-c:當前IPVS鏈接輸出
--stats:統計信息
--rate :輸出速率信息
ipvs規則: /proc/net/ip_vs
ipvs鏈接:/proc/net/ip_vs_conn
保存:建議保存至/etc/sysconfig/ipvsadm
ipvsadm-save > /PATH/TO/IPVSADM_FILE
ipvsadm -S > /PATH/TO/IPVSADM_FILE
systemctl stop ipvsadm.service
重載: ipvsadm-restore < /PATH/FROM/IPVSADM_FILE
ipvsadm -R < /PATH/FROM/IPVSADM_FILE
systemctl restart ipvsadm.service
(1)實驗目的:經過四臺虛擬機,實現lvs-nat負載均衡模型簡單搭建
(2)實驗準備:
硬件:
四臺虛擬機,一臺做爲VS,兩臺RS,一臺client
軟件:
關閉全部虛擬機的防火牆設置和selinux設置
在VS安裝ipvsadm工具,並開啓路由轉發功能
在RS部署http服務,並將網關設置爲DIP
(3)實驗拓撲
(4)實驗步驟:
[root@client ~]#service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@client ~]#getenforce Disabled
[RS1 ]#echo "This is RS1 webpage" > /var/www/html/index.html [RS2 ]#echo "This is RS2 webpage" > /var/www/html/index.html #查看80端口是否開啓 #測試可否訪問index頁面
[root@ VS]#echo 1 > /proc/sys/net/ipv4/ip_forward #開啓VS路由轉發功能,該設置爲臨時設置,也能夠寫入配置文件中: #在/etc/sysctl.conf文件中加入一行:net.ipv4.ip_forward=1
[RS1 ]#route add default gw 192.168.45.33 [RS2 ]#route add default gw 192.168.45.33 #將兩臺RS的默認網關都指向VS的DIP [RS1 ]#route -n Kernel IP routing table Destination Gateway Genmask FG Metric Ref Use Iface 0.0.0.0 192.168.45.33 0.0.0.0 UG 0 0 0 eth0 [RS2 ]#route -n Kernel IP routing table Destination Gateway Genmask FG Metric Ref Use Iface 0.0.0.0 192.168.45.33 0.0.0.0 UG 0 0 0 eth0
實際生活中客戶端的默認網關應該指向本身的路由器,本次實現簡化爲客戶端的路由直接指向VS的外網地址VIP
[root@client ~]#curl 192.168.45.11 This is RS1 webpage [root@client ~]#curl 192.168.45.12 This is RS2 webpage #以上配置完成之後,客戶端直接經過RS的DIP就能夠訪問RS上的httpd服務
[root@ VS]#ipvsadm -A -t 172.18.45.7:80 -s rr #-A:添加集羣服務 #-t:指定TCP協議 #172.18.45.7:80 VS的IP地址和端口號 #-s rr:指定調度算法,這裏以最簡單的輪詢爲例,默認爲WLC權重輪詢 [root@ VS]#ipvsadm -a -t 172.18.45.7:80 -r 192.168.45.11:80 -m #-a:添加集羣服務的RS #-t:指定TCP協議 #172.18.45.7:80 VS的IP地址與端口號 #-r 192.168.45.11:80 指定RS的IP地址端口號 #-m:指定LVS模型m爲nat類型 [root@ VS]#ipvsadm -a -t 172.18.45.7:80 -r 192.168.45.12:80 -m [root@ VS]#ipvsadm -Ln IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.18.45.7:80 rr -> 192.168.45.11:80 Masq 1 0 0 -> 192.168.45.12:80 Masq 1 0 0
[root@client ~]#curl 172.18.45.7 This is RS2 webpage [root@client ~]#curl 172.18.45.7 This is RS1 webpage [root@client ~]#curl 172.18.45.7 This is RS2 webpage [root@client ~]#curl 172.18.45.7 This is RS1 webpage
負載均衡集羣設計時要注意的問題
(1) 是否須要會話保持
(2) 是否須要共享存儲
共享存儲:NAS, SAN, DS(分佈式存儲)
數據同步:
(1) RIP與DIP在同一IP網絡, RIP的網關要指向DIP
(2) 支持端口映射
(3) Director要打開核心轉發功能
lvs-dr:
dr模型中,各主機上均須要配置VIP,解決地址衝突的方式有三種:
(1) 在前端網關作靜態綁定
(2) 在各RS使用arptables
(3) 在各RS修改內核參數,來限制arp響應和通告的級別
限制響應級別:arp_ignore 0:默認值,表示可以使用本地任意接口上配置的任意地址進行響應
1: 僅在請求的目標IP配置在本地主機的接收到請求報文的接口上時 ,纔給予響應
限制通告級別:arp_announce 0:默認值,把本機全部接口的全部信息向每一個接口的網絡進行通告
1:儘可能避免將接口信息向非直接鏈接網絡進行通告
2:必須避免將接口信息向非本網絡進行通告
FWM:FireWall Mark
MARK target 可用於給特定的報文打標記
--set-mark value
其中:value 爲十六進制數字
藉助於防火牆標記來分類報文,然後基於標記定義集羣服務 ;可將多個不一樣的應用使用同一個集羣服務進行調度
實現方法:
在Director主機打標記:
iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER
在Director主機基於標記定義集羣服務:
ipvsadm -A -f NUMBER [options]
session 綁定:對共享同一組RS的多個集羣服務,須要統一進行綁 定,lvs sh算法沒法實現
持久鏈接( lvs persistence )模板:實現不管使用任何調度算法 ,在一段時間內(默認360s ),可以實現未來自同一個地址的請求 始終發往同一個RS
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]
持久鏈接實現方式:
每端口持久(PPC):每一個端口對應定義爲一個集羣服務,每集羣服務單獨調度
每防火牆標記持久(PFWMC):
基於防火牆標記定義集羣服務; 可實現將多個端口上的應用統一調度,即所謂的port Affinity
每客戶端持久(PCC):
基於0端口(表示全部服務)定義集羣服 務,即將客戶端對全部應用的請求都調度至後端主機,必須定義 爲持久模式
1 Director不可用,整個系統將不可用;SPoF Single Point of Failure
解決方案:
高可用 keepalived heartbeat/corosync
2 某RS不可用時,Director依然會調度請求至此RS 解決方案:
由Director對各RS健康狀態進行檢查,失敗時禁 用,成功時啓用 keepalived heartbeat/corosync, ldirectord
檢測方式:
(a) 網絡層檢測,icmp
(b) 傳輸層檢測,端口探測
(c) 應用層檢測,請求某關鍵資源
RS全不用時:back server, sorry server
ldirectord:監控和控制LVS守護進程,可管理LVS規則
包名:ldirectord-3.9.6-0rc1.1.1.x86_64.rpm
文件:
/etc/ha.d/ldirectord.cf 主配置文件
/usr/share/doc/ldirectord-3.9.6/ldirectord.cf 配置模版
/usr/lib/systemd/system/ldirectord.service 服務
/usr/sbin/ldirectord 主程序
/var/log/ldirectord.log 日誌
/var/run/ldirectord.ldirectord.pid pid文件
checktimeout=3 checkinterval=1 autoreload=yes logfile=「/var/log/ldirectord.log「 #日誌文件 quiescent=no #down時yes權重爲0,no爲刪除 virtual=5 #指定VS的FWM或IP:port real=172.16.0.7:80 gate 2 real=172.16.0.8:80 gate 1 fallback=127.0.0.1:80 gate #sorry server service=http scheduler=wrr checktype=negotiate checkport=80 reques="index.html" #測試頁面 receive=「Test Ldirectord" #出現這個語句就返回錯誤