1. 程式人生 > >Nginx+keepalived實現伺服器一主一備(高可用)

Nginx+keepalived實現伺服器一主一備(高可用)

1.上一篇講解了如何在伺服器搭建Nginx伺服器,這裡不做過多描述。

首先把壓縮包拷貝到Linux的/usr/local目錄下(主Nginx:192.168.0.111)

2.安裝keepalived(主Nginx:192.168.0.111)

進入/usr/local目錄下:

tar -zxvf keepalived-1.2.18.tar.gz

yum install -y openssl openssl-devel(需要安裝一個軟體包)

cd keepalived-1.2.18/  && ./configure --prefix=/usr/local/keepalived

make && make install

3.將keepalived安裝成Linux系統服務,因為沒有使用keepalived的預設安裝路徑(預設路徑:/usr/local),安裝完成之後,需要做一些修改工作:(主Nginx:192.168.0.111)

① 首先建立資料夾,將keepalived配置檔案進行復制:

mkdir /etc/keepalived

cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

② 然後複製keepalived指令碼檔案:

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/sbin/keepalived /usr/sbin/

ln -s /usr/local/keepalived/sbin/keepalived /sbin/

可以設定開機啟動:chkconfig keepalived on,到此我們安裝完畢!

4.替換預設的keepalived.conf配置檔案(本人已配置好,直接用SecureFX工具將下圖本地兩個檔案上傳,並替換)

5.進入/etc/keepalived目錄(主Nginx:192.168.0.111)

檢視一下當前linux虛擬機器網絡卡,可以看出是eth0

開啟keepalived配置檔案,注意以下五處:

master:192.168.0.111我們設定為主Nginx

eth0:上圖中ip a得出的網絡卡名

192.168.0.111:虛擬機器IP

121:多個Nginx配keepalived時,這個值必須一致

192.168.110.110:虛擬ip,可在windows瀏覽器下直接訪問

上述配置好後,wq儲存退出。此時我們再次鍵入ip a,可以發現多了一個eth0,即我們配置的虛擬IP

6.此時,啟動keepalived:service keepalived start

在Windows瀏覽器下訪問我們配置的虛擬IP:192.168.110.110,會調到主Nginx首頁(nginx/html/index.html)

7.我們再配一個備機Nginx(備Nginx:192.168.0.108)

重複上述安裝步驟,ip a發現網絡卡為eth1

開啟keepalived配置檔案

此Nginx改為備機:BACKUP

網絡卡改為:eth1

虛擬路由ID號與主機保持一致,都為121

IP地址改為備機IP

虛擬IP也配為192.168.110.110

wq退出

啟動備機192.168.0.108的keepalived:service keepalived start

此時我們再次鍵入ip a,發現還是隻有一個eth1,主Nginx(192.168.0.111)配完keepalived後有兩個eth0

原因:現在虛擬IP192.168.110.110在走主機,沒走備機

8.此時,我們把主Nignx的keepalived停掉

在192.168.0.111伺服器下執行命令:service keepalived stop

再次在瀏覽器鍵入虛擬IP:192.168.110.110,可以發現進入備機Nginx

並且,此時主Nginx變為一個eth0,備Nginx變為兩個eth1:

 

下面做個試驗:

① 把兩臺伺服器伺服器的keepalived和nginx都停掉

注意:都停掉(如果只停keepalived,訪問192.169.0.111和192.168.0.108都可以訪問得到Nginx首頁)

    

可以發現,現在虛擬IP:192.168.110.110訪問不了了,因為這個IP地址是keepalived虛擬出來的,現在keekalived都停了

訪問192.169.0.111和192.168.0.108也訪問不到Nginx首頁了

② 此時把192.168.0.108的keepalived啟動起來

依舊訪問不到192.168.110.110

原因:沒有許可權

 

解決方法:先把剛才啟動的keepalived停掉,進入/etc/keepalived,給上述sh賦予許可權

此時啟動192.168.0.108的keepalived,瀏覽器訪問虛擬IP:192.168.110.110,會訪問得到108Nginx首頁

並且此時,強制把nginx宕機掉,會秒起,只要keepalived不掛,會一直自動重啟

③ 把 主Nginx(192.168.0.111)的/etc/keepalived下的nginx_check.sh賦予許可權

啟動192.168.0.111的keepalived

瀏覽器訪問虛擬IP:192.168.110.110,會訪問得到111Nginx首頁

 

總結:不同於Redis的哨兵機制一樣,keepalived當主機掛了,再重啟後,之前主機還是主機