Lvs+Keepalived原理篇

1.Lvs原理簡介
LVS由前端的負載均衡器(Load Balancer,LB)和後端的真實服務器(Real Server,RS)羣組成。RS間可通過局域網或廣域網連接。LVS的這種結構對用戶是透明的,用戶只能看見一臺作爲LB的虛擬服務器(Virtual Server),而看不到提供服務的RS羣。當用戶的請求發往虛擬服務器,LB根據設定的包轉發策略和負載均衡調度算法將用戶請求轉發給RS。RS再將用 戶請求結果返回給用戶。lvs-kernel.jpg

1.當客戶端的請求到達負載均衡器的內核空間時,首先會到達PREROUTING鏈。
2.當內核發現請求數據包的目的地址是本機時,將數據包送往INPUT鏈。
3.LVS由用戶空間的ipvsadm和內核空間的IPVS組成,ipvsadm用來定義規則,IPVS利用ipvsadm定義的規則工作,IPVS工作在INPUT鏈上,當數據包到達INPUT鏈時,首先會被IPVS檢查,如果數據包裏面的目的地址及端口沒有在規則裏面,那麼這條數據包 將被放行至用戶空間。
4.如果數據包裏面的目的地址及端口在規則裏面,那麼這條數據報文將被修改目的地址爲事先定義好的後端服務器,並送往POSTROUTING鏈。
5.最後經由POSTROUTING鏈發往後端服務器。

Lvs的包轉發模型
Lvs-NAT模型原理:通過網絡地址轉換,調度器重寫報文的目標地址,根據預先設定的調度算法將請求分配給後端的真實服務器,真是服務器的響應報文通過調度器時,報文的源地址被重寫,再返回給客戶,完成整個負載調度過程。
lvs-nat.jpg

Lvs-NAT模式的工作過程:
1.客戶端向負載均衡器發送請求,源地址是CIP目的地址是VIP
2.當負載均衡器收到用戶的請求時,發現請求的時負載均衡器裏面存在的規則,那麼它將客戶端請求報文的地址改爲後端服務器的地址RIP並根據算法發送出去
3.realserver看見報文的目標地址是自己會響應該請求,並將響應報文返回給LVS,源地址RIP目的地址CIP將響應報文返回給LVS
4.LVS將報文的源地址修改爲本機VIP,源地址VIP目的地址CIP發送給客戶端

DR模型: LVS-DR通過改寫請求報文的MAC地址進行轉發,將請求發送到真實服務器,而真實服務器將響應直接返回給客戶端

lvs-dr.jpg

1.客戶端向LVS的VIP發送請求,源IP和目的IP分別爲CIP和VIP,源MAC地址和目的MAC分別爲CMAC和DMAC
2.當LVS收到請求後通過調度選出一個realserver來響應請求將源請求中的MAC地址該爲自己的MAC地址目的地址改爲realserver的MAC地址,此時源MAC和目的MAC分別爲DMAC和RMAC,然後將報文送往交換機,交換機收報文後根據目的MAC地址將請求轉發至後端Realserver
3.Realserver發現請求報文中的MAC地址是自己就會將報文接收並處理,處理完請求報文後將響應報文通過lo接口送給eth0網卡直接發送給客戶端。 注意:需要設置lo接口的VIP不能響應本地網絡內的arp請求。

Lvs-TUN模型:TUN模型的工作原理與DR類似,只不過Lvs-TUN是在原有的報文中再添加一個IP首部,而不是去改寫報文中的MAC地址
lvs-tun.jpg
1.客戶端向LVS的VIP發送請求,源IP和目的IP分別爲CIP和VIP,過程1
2.當LVS收到客戶端請求報文後,通過調度選出Realserver來響應請求,在原有的報文中添加一個報文首部源IP是DIP,目的IP是realserver的RIP,過程2
3.Realserver發現報文中的目的IP是自己,拆掉最外層的IP首部後發現裏面還有一層IP首部目標是自己lo接口上的VIP,接收並處理將處理結果用過lo接口送給eth0網卡後向外傳遞

LVS-FULLNAT模式:
以上三種LVS-NAT、LVS-TUN、LVS-DR三種模式各有優劣,由於LVS-TUN模型中,所有的IP都是公網IP也就意味着Realserver有可能被直接訪問到這種模式雖然解決了LVS異地調度的問題,相對來說不夠安全那麼,如果想要隱藏後端的Realserver且後建自由的Realserver集羣的話,就要用到LVS-FULLNAT模式。
LVS-FULLNAT模式的原理是:
1.在客戶端向LVS發送請求,源地址IP爲CIP,目的地址IP爲VIP
2.LVS收到用戶的請求時,通過指定的調度算法選出後端的某一臺Realserver然後重寫請求報文中的的源IP和目的IP,將源IP修改爲LVS的DIP,將目的IP修改爲挑選出來的Realserver的RIP
2.當Realserver響應客戶端請求時,源地址IP爲RIP,目的地址爲LVS的DIP
3.LVS在轉發後端Realserver的響應報文之前,將源地址重寫爲VIP,將目的地址重寫爲CIP,然後轉發至客戶端

Keepalived是集羣管理中保證集羣高可用的一個服務軟件,其功能類似於HEARTBEAT,用來防止單點故障,它時以VRRP協議爲基礎實現的,VRRP全稱Virtual Router Redundancy Protocol 即虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面由一個master和多個backup,master上面有一個對外提供服務的VIP(該路由器所在局域網內其他機器默認路由爲該IP),master會發組播,當backup收不到VRRP包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master,這樣就可以保證路由器的高可用了。
Keepalived主要有三個模塊,分別是Core,Check和VrRRP。其中Core模塊爲keepalived的核心組成部分,負責進程的啓動維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。VRRP模塊是用來實現VRRP協議的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章