一、環境及安裝版本: 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安裝 分 ...
一、環境及安裝版本:
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 keepalived global_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 ## 虛擬路由的 ID 號,兩個節點設置必須一樣 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 3 10 continue 11 else 12 count=0 13 break 14 fi 15 done 16 if [ "$count" != "0" ]; then 17 /etc/init.d/keepalived stop 18 # exit 1 19 else 20 exit 0 21 fiView 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