高并发负载均衡(四):基于keepalived的LVS高可用搭建
LVS四層 & Nginx七層 對(duì)比
你要分清哪些程序是應(yīng)用層的,哪些程序是內(nèi)核的。
LVS四層負(fù)載均衡服務(wù)器,是不會(huì)碰握手這一個(gè)步驟的。
Nginx是基于反向代理(七層)的負(fù)載均衡服務(wù)器,要先握手建立連接,才能取到URI,在判定location是否匹配,然后才將URI傳遞給后面的服務(wù)器。
server返回?cái)?shù)據(jù)時(shí),是需要過Nginx服務(wù)器的,而使用LVS的時(shí)候不會(huì)過LVS服務(wù)器。
學(xué)習(xí) keepalived 之前,關(guān)于高可用,你需要知道:
1、如果你的LVS負(fù)載均衡服務(wù)器掛掉了,你整個(gè)公司的業(yè)務(wù)就下線了,這是不能容忍的。
這屬于單點(diǎn)故障。
解決方法:一變多!但是入口的IP地址只能有一個(gè),怎么變多?怎么實(shí)現(xiàn)多點(diǎn)?有2種形式:要么是主備,要么是主主
主備模型:備用機(jī)要以最快的速度接管原來的VIP(virtual IP),只有主機(jī)對(duì)外提供服務(wù),只有主機(jī)掛了的時(shí)候,備機(jī)才頂上去。
主主模型:所有的LVS都是主,現(xiàn)在要借用其他形式搞定只有一個(gè)的入口IP地址,比如動(dòng)態(tài)DNS。主和主之間是協(xié)作的形式。
我們首先討論主備,有兩個(gè)點(diǎn)需要考慮:方向性、效率性。
怎么知道主機(jī)掛沒掛?
可以由備機(jī)輪詢主機(jī),但是這樣會(huì)對(duì)主或多或少造成一些壓力。
可以由主機(jī)發(fā)廣播到所有的備機(jī),但是網(wǎng)絡(luò)是不可靠的,所以有一種重試機(jī)制。
如果已經(jīng)確定主機(jī)掛了,誰來作為新的主機(jī)?
使用加權(quán)重的方式,這也是paxos和zookeeper的區(qū)別。官方壓測(cè)200ms就能選出新的主機(jī)出來。
2、如果你后臺(tái)的某一個(gè)RS(Real Server)掛掉了,負(fù)載均衡服務(wù)器還會(huì)對(duì)另外兩臺(tái)正常連接,會(huì)造成一部分人的業(yè)務(wù)請(qǐng)求異常,另一部分人的業(yè)務(wù)正常。
怎么知道RS掛了?可以用ping嗎?
不可以!ping命令是網(wǎng)絡(luò)層的只能檢驗(yàn)網(wǎng)絡(luò)能不能通,連TCP握手都不做,而web服務(wù)是應(yīng)用層的。能ping通不能代表web服務(wù)可用。那怎么知道RS掛沒掛?最簡(jiǎn)單的方式是“訪問一下”。
“訪問一下”這個(gè)操作,它的底層驗(yàn)證的是 應(yīng)用層的HTTP協(xié)議,你發(fā)一個(gè)請(qǐng)求,返回的是200ok,就說明是可用的。
LVS內(nèi)核中有模塊:ipvs負(fù)載均衡模塊。你想要檢測(cè)各個(gè)RS是否可用的話,可以直接去修改模塊的源碼,也可以使用第三方實(shí)現(xiàn)。第三方可以是人,也可以是自動(dòng)化(也就有了自動(dòng)化運(yùn)維)。
這個(gè)自動(dòng)化的程序就是keepalived!它可以代替人工,實(shí)現(xiàn)自動(dòng)運(yùn)維。解決LVS單點(diǎn)故障,實(shí)現(xiàn)HA
keepalived
(1)監(jiān)控自己的LVS服務(wù)
(2)每一臺(tái)機(jī)器上都安裝keepalived。Master(主機(jī))通告自己還活著,Backup(備機(jī))監(jiān)聽Master狀態(tài)。如果Master掛了,一堆Backup推舉選出一個(gè)新的Master.
(3)你不需要再手動(dòng)配置VIP,添加LVS(ipvs模塊)配置,只需要寫到配置文件中即可。
(4)對(duì)后端的RS(real server)做健康檢查,及時(shí)剔除不可用的節(jié)點(diǎn)
(5)最后,keepalived不僅僅用來解決LVS,它是一個(gè)通用的環(huán)境,主要作為linux上的HA的實(shí)現(xiàn)。例如,當(dāng)你并發(fā)量不大的時(shí)候,nginx可以作為公司的負(fù)載均衡來使用,此時(shí)nginx成為了單點(diǎn)故障。這個(gè)問題也可以用keepalived來解決。
keepalived 實(shí)驗(yàn)手冊(cè)
步驟說明
另外,可以參考Keepalived之——Keepalived + Nginx 實(shí)現(xiàn)高可用 Web 負(fù)載均衡,寫的比較詳細(xì)
一些過程記錄
清空原來的負(fù)載記錄
卸掉原來配置的VIP,因?yàn)閗eepalived會(huì)幫你去配。
虛擬路由冗余協(xié)議
VRRP使用選舉機(jī)制來確定路由器的狀態(tài)(Master或Backup)。運(yùn)行VRRP的一組路由器對(duì)外組成了一個(gè)虛擬路由器,其中一臺(tái)路由器處于Master狀態(tài),其他的處于Backup狀態(tài)。
關(guān)于keepalived配置文件
可以使用man 5 keepalived.conf查看它的配置文件的幫助文檔(并不是所有軟件的配置文件都有幫助文檔,只是它剛好提供了)
總結(jié)
以上是生活随笔為你收集整理的高并发负载均衡(四):基于keepalived的LVS高可用搭建的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HotSpot源码(一):Docker与
- 下一篇: ZooKeeper实战(一):ZooKe