nginx為什麼要用keepalived?
一家公司只用一台nginx伺服器(master)是不夠用的,通常來說還需要一台備胎(backup),當master出現宕機,backup就會啟動替代master,那麼backup是怎麼知道master宕機了呢?keepalived就能解決這個問題,如下圖:
什麼是keepalived?
基本伺服器宕機的主從切換配置步驟:
1、準備兩台nginx伺服器(一台為主nginx,一台為備nginx),分別安裝keepalived
# yum –y install keepalived
2、修改主nginx下/etc/keepalived/keepalived.conf檔案
# vi /etc/keepalived/keepalived.conf
主nginx下的keepalived.conf檔案裡面的意義及配置如下
! configuration file for keepalived
#全域性配置
global_defs
notification_email_from ***@***.com #指定發件人
#smtp_server ***.smtp.com #指定smtp伺服器位址
#smtp_connect_timeout 30 #指定smtp連線超時時間
router_id lvs_devel #執行keepalived機器的乙個標識
}vrrp_instance vi_1
virtual_ipaddress
}
3、修改備nginx下/etc/keepalived/keepalived.conf檔案
# vi /etc/keepalived/keepalived.conf
配置備nginx時需要注意:需要修改state為backup , priority比主nginx低,virtual_router_id和主nginx的值一致,具體配置如下:
! configuration file for keepalived
#全域性配置
global_defs
notification_email_from ***@***.com #指定發件人
#smtp_server ***.smtp.com #指定smtp伺服器位址
#smtp_connect_timeout 30 #指定smtp連線超時時間
router_id lvs_devel #執行keepalived機器的乙個標識
}vrrp_instance vi_1
virtual_ipaddress
}
此時如果主機宕機則備機會頂替主機獲得虛擬ip
基於nginx程序死掉的主從切換配置
keepalived是通過檢測keepalived程序是否存在判斷伺服器是否宕機,如果keepalived程序在但是nginx程序不在了那麼keepalived是不會做主備切換,所以我們需要寫個指令碼來監控nginx程序是否存在,如果nginx不存在就將keepalived程序殺掉。1、在主nginx上需要編寫nginx程序檢測指令碼(check_nginx.sh),判斷nginx程序是否存在,如果nginx不存在就將keepalived程序殺掉,check_nginx.sh內容如下:
#!/bin/bash
# 如果程序中沒有nginx則將keepalived程序kill掉
a=`ps -c nginx --no-header |wc -l` ## 檢視是否有 nginx程序 把值賦給變數a
if [ $a
-eq0 ];then
## 如果沒有程序值得為 零
service keepalived stop ## 則結束 keepalived 程序
fi
2、將check_nginx.sh拷貝至/etc/keepalived下
# cp check_nginx.sh /etc/keepalived
3、注意修改/etc/keepalived/check_nginx.sh的可執行許可權
# chmod 755 /etc/keepalived/check_nginx.sh
4、修改主nginx的keepalived.conf,新增指令碼定義檢測
# vi /etc/keepalived/keepalived.conf
修改內容如下,注意check_nginx配置:
#全域性配置
global_defs
notification_email_from ***@***.com #指定發件人
#smtp_server ***.smtp.com #指定smtp伺服器位址
#smtp_connect_timeout 30 #指定smtp連線超時時間
router_id lvs_devel #執行keepalived機器的乙個標識
}vrrp_script check_nginx
vrrp_instance vi_1
track_script
virtual_ipaddress
}
5、修改後重啟keepalived
# service keepalived restart
測試1、依次啟動兩個tomcat=>啟動兩個nginx=>啟動兩個keepalived,檢視主機上是否有虛擬ip,比如:192.168.17.10
2、通過虛擬ip訪問nignx,看頁面是不是輪詢兩個tomcat
3、將主機的nginx程序kill掉,看看vip是不是切換到備機器上了
4、再次訪問虛擬ip是不是還能輪詢訪問tomcat
nginx keepalived學習目錄
keepalived權威指南 深入理解nginx nginx模組開發與架構解析第二版 nginx開發從入門到精通 keepalived工作原理和配置說明 1 nginx安裝和介紹 2 nginx的啟動和停止 3 nginx程序模型 4 nginx處理請求過程 5 nginx配置一 6 nginx配置...
Nginx Keepalived 負載均衡
喜歡搞nginx,這兩天研究了一下nginx的負載配置 nginx平台搭建 nginx mysql php fpm搭建高效能nginx平台 單nginx負載均衡 nginx 負載均衡 配置全過程 熟悉上面的配置之後,今天我再來搞nginx keepalived 的配置,具體拓撲如下 一 安裝keep...
nginx keepalived雙機熱備
採用nginx實現反向 配置集群,實現軟f5的功能。nginx.conf的配置如下 server 192.168.2.134 8082 upstream socologin server access log home soco share nginx logs access.log access ...