1. Nginx常規部署
如下圖所示,用戶在訪問網站的時候是直接訪問到Nginx,Nginx下掛了一個Tomcat集羣,在集羣環境下,Tomcat之間彼此協調,已達到負載均衡,如果有一臺Tomcat宕機了,其他Tomcat還可以提供服務。
但是因爲Nginx只有一臺,如果Nginx所在的節點宕機了,那麼就會導致整個服務癱瘓。所以我們需要一臺備用機及時的替換他進行服務。
2. Nginx高可用部署
如下圖所示,新增一臺備用的Nginx,原來的節點稱之爲master,新增的節點稱之爲backup,當原來的節點宕機以後,通過一種方法將請求發給備用的Nginx,繼續服務。那麼這個方法是什麼呢?就是Keppalived。
3. Keepalived
- Keepalived的作用是解決Nginx單點故障問題,實現Nginx的高可用;
- Keepalived是基於VRRP協議,即虛擬路由冗餘協議。這個協議是解決內網單機故障的路由協議,可以構建多個路由器master和backup,每個節點啓動的時候都會綁定一個虛擬的IP;
- 如果Nginx集羣裏面有一個master和多個backup,那麼backup之間有一個weight,即權重的分配;
- 如下圖所示,有了Keepalived之後,用戶會先請求虛擬IP,虛擬IP和master綁定到一起的,所以同樣可以訪問到主Nginx;
- 備用機會對主Nginx進行心跳檢測,如果主Nginx宕機了,發現主Nginx掛了,請求會被轉發給備用Nginx;
- Keepalived實現Nginx的高可用,本質是:通過實現VRRP協議來實現,主節點不停的向備用節點發送心跳,備用節點接收到心跳之後,就知道主節點還活着,一旦接受不到了,就知道主節點掛了,就會接管服務,當主機修復好了之後,備用機就恢復成小弟了。
4. Keepalived安裝和配置實現雙機主備
-
來到https://www.keepalived.org/download.html下載,然後解壓;
-
安裝依賴
yum -y install libnl libnl-devel
; -
進入到keepalived文件夾中,執行如下命令
./configure \ --prefix=/usr/local/keepalived \ --sysconf=/etc
-
執行命令
make && make install
-
進入到/etc/keepalived文件夾中,編輯keepalived.conf文件,刪除沒用的默認配置項,剩餘的配置如下:
-
執行命令
/usr/local/keepalived/sbin/keepalived
啓動keepalived,啓動成功後可輸入ip addr命令查看到配置的虛擬主機
-
備用節點的配置如下: