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當主機掛了,再重啟後,之前主機還是主機