KeepAlived+Nginx實現高可用負載,keepalivednginx

來源:互聯網
上載者:User

KeepAlived+Nginx實現高可用負載,keepalivednginx

一、環境及安裝版本:

centos6.5、Nginx1.4.7、keepalived1.3.2

虛擬IP

真是IP

Nginx連接埠

主從分配

10.0.90.215

10.0.90.217

80

MASTER

10.0.90.215

10.0.90.218

80

BACKUP

二、Nginx安裝

分別在10.0.90.217、10.0.90.218兩台機器安裝Nginx

1、  安裝Nginx所需要的安裝包  

# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

2、  上傳Nginx(nginx-1.4.7.tar.gz)到/usr/local/src目錄

3、  編譯安裝Nginx

進入Nginx上傳目錄

# cd /usr/local/nginx

解壓安裝包

# tar –zxvf nginx-1.4.7.tar.gz

進入解壓後的檔案夾

# cd nginx-1.4.7

指定編譯位置

# ./configure --prefix=/usr/local/nginx

編譯安裝

# make && make install

4、  配置Nginx

通過修改/conf/nginx.conf檔案來修改Nginx的配置資訊

# vim /usr/local/nginx/conf/nginx.conf

5、  系統防火牆中開啟對應的連接埠80(預設80)或者關閉防火牆

# vim /etc/sysconfig/iptables

添加:

## nginx-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

添加後重啟防火牆:

# service iptables restart

或者不做第5步上述配置直接關閉防火牆(不推薦)

# service iptables stop

 

6、  啟動nginx

# /usr/local/nginx/sbin/nginx

檢查是否啟動成功

瀏覽器訪問Nginx所在機器真實IP,如下顯示即為成功

查看Nginx進程# ps -ef|grep nginx停止Nginx# /usr/local/nginx/sbin/nginx -s stop重啟Nginx# /usr/local/nginx/sbin/nginx -s reload

三、Keepalived安裝(分別在10.0.90.217和10.0.90.218兩台機器安裝)

1、 上傳或下載 keepalived(keepalived-1.3.2.tar.gz)到 /usr/local/src 目錄

2、  解壓安裝

# cd /usr/local/src/# tar -zxvf keepalived-1.3.2.tar.gz# ./configure --prefix=/usr/local/keepalived# make && make install

 

3、 將keepalived安裝成Linux系統服務

因為沒有使用keepalived的預設路徑安裝(預設是/usr/local),安裝完成後,需要手動複製預設的設定檔到預設路徑

# mkdir /etc/keepalived# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/## 下面這個拷貝有時會找不到檔案或檔案夾導致無法複製# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ (可能不會成功)## 可用如下拷貝替代:# cp /usr/local/src/keepalived-1.3.2/keepalived/etc/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/

設定keepalived服務開機啟動

# chkconfig keepalived on

4、修改keepalived設定檔

# vim /etc/keepalived/keepalived.conf

配置如下

! Configuration File for keepalivedglobal_defs {    # keepalived 內建的寄件提醒需要開啟 sendmail 服務。建議用獨立的監控或第三方 SMTP   router_id server1 ## 標識本節點的字條串,通常為 hostname }vrrp_script chk_nginx {    script "/etc/keepalived/check_nginx.sh" ## 檢測 nginx 狀態的指令碼路徑    interval 2    ## 檢測時間間隔    weight -20    ## 如果條件成立,權重-20}vrrp_instance VI_1 {    state MASTER    ## 主節點為 MASTER,對應的備份節點為 BACKUP    interface eth0    ## 綁定虛擬 IP 的網路介面,與本機 IP 位址所在的網路介面相同,我的是 eth0    virtual_router_id 146 ## 虛擬路由的 識別碼,兩個節點設定必須一樣    mcast_src_ip 10.0.90.218    ## 本機 IP 位址    priority 100    ## 節點優先順序,值範圍 0-254,MASTER 要比 BACKUP 高    advert_int 1    ## 組播資訊發送間隔,兩個節點設定必須一樣,預設 1s    authentication {    ## 設定驗證資訊,兩個節點必須一致        auth_type PASS        auth_pass 1111    }    track_script {        chk_nginx    ## 執行 Nginx 監控的服務    }    virtual_ipaddress {        10.0.90.215    ## 虛擬 ip,可以定義多個    }}
View Code

check_nginx.sh指令碼代碼如下:

 1 #!/bin/bash 2 # curl -IL http://localhost/index.htm 3 count=0 4 for (( k=0; k<2; k++ )) 5 do 6     check_code=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost/index.html -o /dev/null ) 7     if [ "$check_code" != "200" ]; then 8         count=$(expr $count + 1) 9         sleep 310         continue11     else12         count=013         break14     fi15 done16 if [ "$count" != "0" ]; then17    /etc/init.d/keepalived stop18 #    exit 119 else20     exit 021 fi
View Code

5、最主要的一點,為check_nginx.sh增加可執行許可權,否則準備不切換並且又不報錯

# chmod +x /etc/check_nginx.sh

6、 修改Nginx首頁增加本機IP,以便後面主備切換查看效果

# vim /usr/local/nginx/html/index.html

7、 啟動keepalived(兩台機器的keepalived均需要啟動)

# service keepalived start如下顯示即為成功在啟動 keepalived:                                      [確定]

8、 啟動完成後在MASTER機器運行命令

# ip add

可以看到配置的虛擬ip 10.0.90.215飄到Master上

網頁訪問效果

 

 

9、  停止Master服務

# service keepalived stop

10、在BACKUP機器運行

# ip add

發現虛擬IP已經飄到BUCKUP機器

網頁訪問效果:

 

 

 

KeepAlived+nginx配置完成。

 KeepAlived參數詳情請參考:

http://blog.csdn.net/fruler/article/details/53334082

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.