1. 程式人生 > >利用Keepalived 搭建Nginx雙機主備模式

利用Keepalived 搭建Nginx雙機主備模式

    先上示意圖

    

    Nginx做為反向代理伺服器,負責後端的WEB應用服務的代理,即終端使用者的Http請求,將由Nginx的負載均衡策略,轉發到不同的Web伺服器(Tomcat)上處理。

    當然,在一些網際網路應用中,Nginx也可以作為http伺服器,專門負責靜態資源的處理(html,css,js等),這樣的部署架構雖然效能有所提升,但相對我們實際專案的部署能力、運維能力來說,增加了不少複雜度,容易發生一些莫名其妙的更新失敗的錯誤,所以不建議在併發不高的專案中將靜態資源單獨部署到Nginx中。

    上述架構中,Nginx共部署了2臺伺服器,分為Mater(主)和Slave(備),兩臺伺服器的Nginx配置一致,但因為是單活模式,所以同一時間,只有一臺Nginx參與工作。主備模式是為了保證Nginx的高可用(HA)。

    Nginx的高可用是通過Keepalived來保障的。Keepalived在每臺Nginx伺服器中都需部署。每臺伺服器的Keepalived負責監控本地的Nginx服務是否正常,一旦發現異常則會執行相應的處理指令碼(sh),完成Nginx主備的切換。

    所有的Keepalived服務(主&備)均設定了同一個虛擬IP,終端使用者即通過此虛擬IP訪問WEB系統。這樣一旦伺服器端發生了故障切換,但對於終端使用者而言,他們是感覺不到的,因為系統訪問的IP地址(虛擬IP)並沒有變(會有極為短暫的404錯誤或其他錯誤,約3秒鐘,示系統訪問量而定,重新整理即可)。

    Keepalived虛擬IP的工作原理為VRRP協議(請參考

虛擬路由冗餘協議),想了解工作原理的同學可自行百度Keepalived工作原理或VRRP協議內容。簡而言之,Keepalived的虛擬IP類似於ARP欺騙,如果你經歷或者瞭解過ARP攻擊,相信不難理解。

    具體步驟後續有時間再整理吧