使用Keepalived實現Nginx的雙機主備高可用

追風人聊Java發表於2021-09-06

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雙主熱備的配置方式。

希望大家多多留言交流,共同進步。

 

相關文章