nginx keepalived負載均衡之高可用

2021-07-31 07:49:22 字數 3302 閱讀 6477

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 ...