高可用方案其實(shí)很多,而且有很多本錢(qián)是非常低和簡(jiǎn)單的。比如你如果有1個(gè)網(wǎng)站,高可用最簡(jiǎn)單的就是nds+nginx+兩臺(tái)機(jī)器。
我們由因而客戶的1個(gè)項(xiàng)目,dns申請(qǐng)是非常麻煩的,所以才斟酌用keepalived+nginx做高可用方案。
從網(wǎng)上整理了HA經(jīng)常使用組合。
heartbeat v2+crm
heartbeat v3+pacemaker
corosync+pacemaker
cman + rgmanager
keepalived+lvs。
這里我們沒(méi)有用lvs,而是直接用了nginx,感覺(jué)就兩臺(tái)機(jī)器,所以也沒(méi)有必要弄的太復(fù)雜。而且也能滿足要求。
安裝前的計(jì)劃,這個(gè)我認(rèn)為還是比較重要的,我們就是之前沒(méi)有好好計(jì)劃,現(xiàn)在感覺(jué)比較亂,而且客戶升級(jí)也很麻煩。1堆的流程。
我們系統(tǒng)是java開(kāi)發(fā)的,所以用了tomcat進(jìn)行后臺(tái)的解析。
首先是目錄計(jì)劃,比如tomcat放在甚么地方,靜態(tài)文件放在甚么地方。1般來(lái)講有nginx后靜態(tài)文件由nginx去解析,可以分擔(dān)tomcat的很多壓力。
nginx安裝前準(zhǔn)備,由于nginx安裝還是比較簡(jiǎn)單的,但是有個(gè)問(wèn)題就是nginx有很多插件,這些插件是不是需要安裝需要研究1下。由于nginx對(duì)回話處理不是太好,所以我們這邊需要添加1個(gè)會(huì)話保持的插件,其他插件建議不要安裝太多,畢竟穩(wěn)定和效力是第1的,非官方的插件就怕有問(wèn)題,到時(shí)候找都不好找。
依賴yum -y install gcc pcre-devel kernel-devel
yum install openssl-* -y 剩下的就看提示,沒(méi)有就安裝1下。
下面就是安裝:
tar -zxvf nginx⑴.7.9.tar.gz
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --add-module=../nginx-stick
make
make install
這里里面用了1個(gè)stick回話保持的插件,下載地址為,這個(gè)有時(shí)候不太好找,基本上都是google服務(wù)器上的,沒(méi)有辦法下載。
https://github.com/ezbake/nginx-sticky-module
這里有個(gè)問(wèn)題就是當(dāng)nginx掛了的時(shí)候,keepalived其實(shí)不知道服務(wù)不可用,所以還回繼續(xù)提供服務(wù),但這個(gè)時(shí)候已不起作用了。
所以需要添加1個(gè)守護(hù)進(jìn)程,當(dāng)nginx掛的時(shí)候把keepalived也觀殺掉,當(dāng)進(jìn)程啟動(dòng)的時(shí)候也啟動(dòng)keepalived。
可以在crontab里面設(shè)置30秒檢測(cè)1次,也就是當(dāng)nginx掛的時(shí)候最長(zhǎng)時(shí)間會(huì)延遲310秒切換。
*:30 * * * * /opt/nginx_pid.sh
#!/bin/bash
# varsion 1.0
A=`ps -C nginx --no-header |wc -l`
B=`ps -C keepalived --no-header |wc -l`
if [ $A -eq 0 ];then
# /usr/local/nginx/sbin/nginx
sleep 1
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
elif [ $B -eq 0 ];then
/etc/rc.d/init.d/keepalived start
fi
最后別忘了腳本要加上可履行的權(quán)限,不然不會(huì)履行。
上一篇 FragmentTab切換Fragment時(shí)避免重復(fù)加載UI
下一篇 [置頂] 電子商務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(八):前端商城系統(tǒng)功能細(xì)化