nginx+keepalived構建高可用web服務器

   隨着nginx的發展越是成熟,nginx的高併發、高穩定性及支持反向代理等特性使得其倍受青睞。下面筆者就來對nginx+keepalived的高可用架構進行簡單搭建。筆者水平有限,僅供參考,如有不足望指正。見笑了。^_^ ^_^

一、實驗環境 

系統環境:centos 6.0 x86_64

nginx版本 nginx-1.2.7

keepalived版本 keepalived-1.26.tar.gz

nginx_1  192.168.1.105  (master)

nginx_2  192.168.1.106  (backup)

vip       192.168.1.200

二、nginx安裝配置

分別在105、106倆臺實驗機器上執行下面腳本,安裝配置nginx:

 

#!/bin/bash

##This is a auto install nginx shell scripts.

##li  2013-03-16

##defie path

DIR1=/usr/local/src/

DIR2=/usr/local/nginx/

DIR3=http://nginx.org/download/nginx-1.2.7.tar.gz  

DIR4=/usr/local/src/nginx-1.2.7.tar.gz

DIR5=nginx-1.2.7  

yum install pcre pcre-devel -y

if

[ $UID -ne 0 ];then 

The shell scripts user must is root or adminstrator,please change user.

sleep 3

exit 

fi

if 

[ ! -d $DIR2 ];then

mkdir -p /usr/local/nginx/

else 

echo  "The directory was exit."

fi

download ()

{

cd $DIR1 ;wget $DIR3 

if 

[ ! -f $DIR4 ];then 

ehco  'The nginx source packages  download was defeated,please check.'

else 

echo  'The nginx source packages was downloaded.'

fi

}

install ()

{

tar zxvf $DIR4 ;cd  $DIR5 &&./configure --prefix=$DIR2 &&make &&make install

if 

[ $? -ne 0 ];then

echo  'The nginx insall was defeated,please check.'

else 

echo 'The nginx was insatlled.'

fi

}

start ()

{

/usr/local/nginx/sbin/nginx &&ps -ef |grep nginx |grep -v grep 

}

stop ()

{

pkill nginx 

}

download &&install &&start &&stop

執行該腳本過程中如無報錯,說明我們的nginx安裝成功。
 

三、安裝配置keepalived

 

在105跟106上執行該腳本,內容如下:

 

#!/bin/bash

##auto install keepalived shell scripts.

##li 2013-03-16

##define PATH

DIR1=/usr/local/src/

DIR2=/usr/local/

DIR3=keepalived-1.2.6.tar.gz

DIR4=keepalived-1.2.6

DIR5=/usr/src/kernels/2.6.32-220.e16.x86_64/ 

if

[ $UID -ne 0 ];then

echo 'The shell scripts user must be root or administrator,please change user.'

sleep 3  

exit 0

fi  

download ()

{

cd $DIR1 ;wget http://www.keepalived.org/software/keepalived-1.2.6.tar.gz 

if 

[ $? -ne 0 ];then 

echo  'Download keepalived source package was failed,please check network or download state.'

else 

echo 'Download keepalived source package  successfully.'

fi

}

install ()

{

tar zxvf $DIR3 &&cd $DIR4 &&./configure --with-kernel-dir=$DIR5 &&make &&make install 

if 

[ $? -ne 0 ];then

echo 'Install keepalived was failed,please check.'

else 

echo 'Install keepalived successfully.'

fi

}

configure_keepalived  ()

{

cp $DIR2/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ &&cp $DIR2/etc/sysconfig/keepalived /etc/sysconfig/ &&cp $DIR2/sbin/keepalived /sbin/  &&mkdir -p /ect/keepalived.conf 

if

[ $? -ne 0 ];then 

echo 'Keepalived configure was failed,please check.'

else 

echo 'Keepalived configure successfully.'

fi

}

 

PS3="Please insert select Menu:"

select i in "download" "install" "configure_keepalived"

do

$i

done   (添加這五行,在執行腳本過後會隨後根據選擇的選項去執行下一步動作,方便只下載等說什麼的單一動作,執行完成後按 alt+c 退出)

 

 

執行過程中無報錯,則說明keepalived安裝成功。下一步,新建keepalived配置文件keepalived.conf 內容如下:

 

! Configuration File for keepalived 

 

 global_defs { 

 

  notification_email { 

 

      [email protected] 

 

 } 

 

    notification_email_from [email protected] 

 

    smtp_server 127.0.0.1 

 

    smtp_connect_timeout 30 

 

    router_id LVS_DEVEL 

 

 } 

 

 vrrp_script chk_nginx { 

 

    script "/data/sh/check_nginx.sh" 

 

    interval 2 

 

    weight 2 

 

 } 

 

 # VIP1 

 

 vrrp_instance VI_1 { 

 

     state MASTER

 

     interface eth0 

 

     lvs_sync_daemon_inteface eth0 

 

     virtual_router_id 151 

 

     priority 100 

 

     advert_int 5 

 

     nopreempt 

 

     authentication { 

 

         auth_typePASS 

 

         auth_pass  1111 

 

     } 

 

     virtual_ipaddress { 

 

         192.168.1.200 

 

     } 

 

     track_script { 

 

     chk_nginx 

 

    } 

 

 } 

在106上的配置文件/etc/keepalived/keepalived上修改參數:state爲BACKUP模式、優先級priority 爲90(低於MASTER的優先級即可),根據上面的配置,我們建立一個check_nginx.sh腳本,用來查看nginx是否存活來切換nginx服務器。check_nginx.sh腳本內容如下:
#!/bin/bash
##auto check nginx process 
##li 2013-03-16
killall -0 nginx 
if 
[ $? -ne 0 ];then
/etc/init.d/keepalived stop
fi
五、啓動測試nginx+keepalived高可用
 在105跟106上都執行以下步驟: 
 1.啓動nginx執行:    /usr/local/nginx/sbin/nginx
 2.啓動keepalived執行:/etc/rc.d/init.d/keepalived start
 3.執行腳本: /data/sh/check_nginx.sh
在瀏覽器訪問:192.168.1.200
 

 
 
因我們的105上設置的是MASTER模式,所以我們去查看105下的日誌文件:
 

從上面可用觀察出105爲MASTER模式,現在我們宕掉105的nginx,觀察在瀏覽器裏面還能不能訪問192.168.1.200,如果能訪問且頁面跟上面訪問頁面一樣,則說明我們的nginx+keepalived搭建成功,當然我們也需要去觀察105的日誌文件:
 

以上說明:我們搭建的nginx+keepalived高可用web服務器完成。
如果你看到這,是對我最大的褒獎,希望你能給寶貴的建議。謝謝。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章