1、概述
前面我們聊過使用 Nginx 為 後端Tomcat 做負載均衡、高可用,但是這時Nginx又成了單點,如果Nginx不幸掛掉,整個網站便無法訪問。
此時我們就會用到另一個軟體 —— Keepalived。
Keepalived 是一個用 C 編寫的路由軟體,Keepalived 會生成一個虛擬IP,此虛擬IP與多臺真實的伺服器的IP繫結,當使用者發來請求到虛擬IP時,請求先路由到主伺服器,當主伺服器當機後,請求會路由到備用伺服器,以達到高可用的目的。
理論上兩臺或多臺Nginx伺服器的硬體配置應該一致,這樣路由改變時,效能不會有太大的差別。
下面我們用一個例子,來實際操作一下。
2、場景說明
在兩臺伺服器上,安裝Nginx,並啟動。
在兩臺伺服器上安裝Keepalived,進行配置,為Nginx做負載均衡,實現雙機主備高可用。
A伺服器配置為主機,B伺服器配置為備機。
虛擬IP:192.168.1.88
A伺服器IP(主):192.168.1.144
B伺服器IP(備):192.168.1.22
3、安裝Keepalived
在兩臺伺服器上都需要安裝Keepalived。
1)下載Keepalived
可以到Keepalived官網(https://www.keepalived.org)下載
圖片來源於官網
圖片來源於官網
2)將Keepalived壓縮包,拷貝到兩臺伺服器的 /home 目錄下
3)解壓Keepalived壓縮包
在Linux系統執行 # tar -zxvf keepalived-2.2.4.tar.gz 命令進行解壓。
4)安裝依賴包
# yum -y install libnl libnl-devel
# yum install -y openssl openssl-devel
5)進入解壓後的Keepalived目錄
6)執行配置命令
# ./configure --prefix=/usr/local/keepalived --sysconf=/etc
7)執行編譯並安裝命令
# make && make install
8)安裝成功後,在 /etc/keepalived 目錄下,會看到 keepalived.conf 檔案。
4、配置 keepalived.conf 檔案
進入 /etc/keepalived 目錄下,修改 keepalived.conf 檔案。
A伺服器配置如下:
! Configuration File for keepalived global_defs { # 全域性唯一的主機標識 router_id server_a } vrrp_instance VI_1 { # 標識是主節點還是備用節點,值為 MASTER 或 BACKUP state MASTER # 繫結的網路卡 interface ens33 # 虛擬路由id,保證主備節點是一致的 virtual_router_id 51 # 權重 priority 100 # 同步檢查時間,間隔預設1秒 advert_int 1 # 認證授權的密碼,所有主備需要一樣 authentication { auth_type PASS auth_pass 1111 } # 虛擬IP virtual_ipaddress { 192.168.1.88 } }
B伺服器配置如下:
! Configuration File for keepalived global_defs { router_id server_b } vrrp_instance VI_1 { # 設定為備機 state BACKUP interface ens33 virtual_router_id 51 # 權重設定的要比主機低 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } # 虛擬IP需要主備設定成一樣 virtual_ipaddress { 192.168.1.88 } }
5、啟動Keepalived
1)進入 /usr/local/keepalived/sbin 目錄
2)輸入命令 # ./keepalived 即可。
此時,檢視網路卡,會發現主機的IP地址多了 192.168.1.88
6、停止A伺服器,看虛擬IP是否路由到B伺服器
經試驗可知,A伺服器關閉後,虛擬IP便路由到了B伺服器。
7、綜述
好了,至此,Keepalived的雙機主備機制已經實現了。後面我們還會介紹Keepalived雙主熱備的配置方式。
希望大家多多留言交流,共同進步。