使用keepalive實現nginx反向代理高可用

簡介:

在網站架構中,為了分散客戶端對服務器的訪問壓力,可以使用nginx作為反向代理。但是使用一個nginx作為代理服務器必定會面對單點故障的情況,所以一般使用多臺nginx反代服務器,而使用多臺nginx服務器還要面對如何協調調度的問題。在此,我給大家介紹使用keepalive協調調度nginx反代服務器的方法。

 

keepalive簡介

說到keepalive就要說到他的實現核心——VRRP協議。VRRP即虛擬路由器冗余協議,最初是為了解決多個路由器熱備份而制定的。它是通過主路由器定時在網絡中發送主路由器信息,通知各個備路由器,當備路由器接收不到信息就會通過優先級競選成為主路由器。

 

VRRP的優先級范圍是0-255,可配置范圍1-254,其中0給路由器放棄MASTER位置時候使用,255保留給IP地址的擁有者使用。如果路由器的IP地址為虛擬IP地址時,只要其工作正常,則為MASTER路由器。

 

VRRP提供了三種認證方式:

1 無認證;

2 簡單字符認證:不能超過8個字符;

3 MD5認證。

 

實驗器材

 使用keepalive實現nginx反向代理高可用

lvs1 Centos7.3 172.18.55.74

lvs2 Centos7.3 172.18.55.75

web1 Centos6.8  172.18.55.61

web2 Centos7.3  172.18.55.71

 

實驗步驟:

1 安裝nginx反向代理服務

2 安裝keepalive服務

 

實驗過程:

1 安裝nginx反向代理服務

為了簡便,這里分別在web1web2上使用yum源安裝的方式

#yum install –y nginx

 

修改nginx的配置文件

# vim /etc/nginx/nginx.conf

增加服務器組

upstream websvrs {
         server 172.18.55.61:80;
         server 172.18.55.71:80;
         server 127.0.0.1:8080 backup; #sorry Server
}

增加sorry server配置

server {
         listen 8080;
         root /etc/nginx/html;
         index sorry.html;
         location / {
}
}

增加sorry server頁面文件

vim /etc/nginx/html/sorry.html
 
<h1> Sorry !!! <h1>
 

2 安裝keepalive服務

使用yum安裝

# yum install –y keepalived

 

修改配置文件

# vim /etc/keepalived/keepalived.conf
 
! Configuration File for keepalived
 
global_defs {
   notification_email {                        
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_MASTER #備服務器LVS_BACKUP
   vrrp_mcast_group4 224.0.109.55 #組播地址,一個虛擬路由器組設置相同
}
 
vrrp_instance VI_1 {
    state MASTER #備服務器BACKUP
    interface ens33 #網卡名
    virtual_router_id 155 #虛擬路由器ID,主備設置相同
    priority 100 #優先級1-254,備服務器98
    advert_int 1 #網絡通知時間間隔
    authentication {
        auth_type PASS #認證方式為密碼
        auth_pass GOOD #密碼為GOOD,最多8位
    }
    virtual_ipaddress {
        172.18.55.100/16 dev ens33 #指定虛擬IP地址和接口網卡
    }
    track_script {
        ngxstatus #調用nginx狀態監測腳本
    }
    notify_backup "/etc/keepalived/notify.sh backup" #如果nginx的狀態改為了BACKUP,則執行此腳本
}
 
vrrp_script ngxstatus { #nginx狀態監測腳本
        script "killall -0 nginx && exit 0 || exit 1"
        interval 1
        weight -5
}

 

增加配置nginx重啟腳本,省略了非必要步驟

 

vim /etc/ keepalived/notify.sh
 
#!/bin/bash
 
myservice='nginx.service'
 
case $1 in
 
backup)
        systemctl restart $myservice;;
esac

原創文章,作者:realmaster,如若轉載,請注明出處:http://www.www58058.com/75869

(0)
realmasterrealmaster
上一篇 2017-05-15 21:45
下一篇 2017-05-15 22:06

相關推薦

  • 馬哥教育網絡班20期+第五周博客作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; ]# grep  "^[[:space:]]\+" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; ]#…

    Linux干貨 2016-07-12
  • 馬哥教育網絡19期+第十二周課程練習

    1、請描述一次完整的http請求處理過程; a.向根域名服務器請求解析域名,然后根服務器返回相應的IP信息; b.用戶的Web瀏覽器向服務器端的80端口通過三次握手建立TCP連接; c.建立完TCP連接后發送HTTP請求,請求的格式包括請求方法、URL和協議版本號,方法有GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE,如: &n…

    Linux干貨 2016-08-22
  • ssh 筆記

    ssh

    Linux干貨 2018-01-08
  • Linux的用戶,組及文件權限管理

    Linux用戶與組的創建,刪除,屬性修改,文件權限管理

    Linux干貨 2018-02-24
  • Btrfs文件系統在CentOS中的應用

      Btrfs作為Linux下一代文件系統與zfs有著許多相似的功能。 擴展性 (scalability) 相關的特性,btrfs 最重要的設計目標是應對大型機器對文件系統的擴展性要求。 Extent,B-Tree 和動態 inode 創建等特性保證了 btrfs 在大型機器上仍有卓越的表現,其整體性能而不會隨著系統容量的增加而降低。 其次是數據一…

    Linux干貨 2016-01-20
  • 用戶和組及批量創建

    用戶和組       操作系統都有用戶和組,windows,linux等等,用戶和組用來做什么呢?       用戶,是我們進入系統時的憑證,不是每一個人想進就進的。你想吧,如果操作系統沒有用戶就能登錄進系統,那這就帶來了許許多多的安全隱患了。而組則是為了方便管理用戶的一個組容器。 &nb…

    系統運維 2016-08-04
欧美性久久久久