- nginx高可用
- 傳統的高可用思路
tomcat的高可用的思路,是在tomcat集羣前面加一層負載服務nginx。如下圖
這種做法,解決了tomcat的高可用問題。但是引入了前面的負載機器的高可用問題(Nginx如果掛了,玩完)
如果nginx沿用此思路,總會有一個最前端是單機的,存在宕機玩完的風險(雞生蛋蛋生雞無窮盡)
- lvs 思想解決高可用問題
如上圖,由服務器集羣虛擬出來一臺 虛擬網關vip(不真實存在,自然不存在宕機問題),
此vip由兩臺機器共同協商生成。當有一臺機器宕機時,另一臺機器一樣能維持vip。這保證了,只要兩臺機器不同時宕機,vip就存在
- keepalived配置LVS過程
前提
1.關閉selinux,打開/etc/sysconfig/selinux設置其中值 à SELINUX=disabled
2.安裝必須的依賴包
yum -y install libnl libnl-devel libnfnetlink-devel
keepalived安裝
下載源碼包--不能使用yum方式安裝(有bug) --wget https://www.keepalived.org/software/keepalived-1.3.4.tar.gz
配置(指定安裝目錄和配置目錄,否則文件太散亂) --./configure --prefix=/usr/local/keepalived --sysconf=/etc
make && make install
keepalived主機配置
打開/etc/keepalived/keepalived.conf,只需要配置如下一段。(其它是多餘配置,刪除)
啓動keepalived,查看機器ip地址,可發現多出一個244.200的ip
此時,使用原ip地址244.253能打開的頁面,使用244.200也能打開
keepalived從機配置
從機配置與主機過程完全一樣,配置文件內以下標識id與優先級稍作變化即可
啓動從機的keepalived後,可發現其ip地址無變化
keepalived校驗LVS效果
1、此時,殺掉主機上的keepalived,244.200的ip將從主機上消失。而出現的從機的ip中
2、再次啓動主機的keepalived,244.200的ip將被主機重新奪回
3、此效果是單主單備方式。備機資源有一定的浪費。可以重複前面的動作,虛擬出第二個ip,將主從機優先級顛倒,從而利用起備機服務
keepalived監控服務軟件
以上操作中,keepalived很好的實現了LVS功能,即集羣機器共同虛擬一個vip,並實現在集羣中自動漂移。
但假如物理機狀況良好,並不能保障其上運行的服務軟件ok,因此需要藉助keepalived來監控服務軟件。
a、使用keepalived來監控nginx
編輯一個sh監控腳本,sh腳本:
#!/bin/bash
A=`ps -C nginx --no-header |wc -l` #統計nginx進程是否存在
if [ $A -eq 0 ];then #爲0,表明nginx停止了
/usr/local/nginx/sbin/nginx #嘗試重啓nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then #nginx重啓失敗,則keepalived自殺,進行VIP轉移
killall keepalived #殺掉,vip就漫遊到另一臺機器
fi
fi
b、在配置文件中加入以下兩處配置:
c、重啓keepalived,測試監控效果,如下圖操作:
nginx已變成不死鳥
備註 chk_nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l` ##統計nginx進程數,若爲0,表明nginx被殺
if [ $A -eq 0 ];then
/usr/local/openresty/nginx/sbin/nginx #重啓nginx
#nginx重啓失敗,則停掉keepalived服務,進行VIP轉移
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived #殺掉,vip就漫遊到另一臺機器
fi
fi