keepalived+nginx部署(單主模型)

環境準備
Centos7系統,后端服務器提供web服務。
地址規劃:

  • VS1: 172.18.51.7
  • VS2:172.17.51.77
  • RS1:172.18.51.74
  • RS2:172.18.51.75
  • VirtualIP:172.18.51.82

拓撲圖:

keepalived+nginx部署(單主模型)

原理:nginx是高度模塊化的應用程序,其中nginx_proxy模塊即可實現負載均衡,將前端的用戶請求通過調度算法分攤在后端的真實主機,達到均衡的效果。這里使用upstream模塊將前端請求轉發至后端;利用keepalived配置主備服務器,對各RS的健康狀態進行檢測,通過共用的虛擬IP地址對外提供服務。


RS:

提供httpd服務,定義web主頁,并啟動服務

 RS的預配置腳本:

vim setparam.sh
#!/bin/bash
        #
        vip=172.18.51.100
        mask='255.255.255.255'

        case $1 in
        start)
          echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
          echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
          echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
          echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

          ifconfig lo:0 $vip netmask $mask broadcast $vip up
          route add -host $vip dev lo:0
          ;;
        
         stop)
          ifconfig lo:0 down
          echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
          echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
          echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
          echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
          ;;
       
         *) 
          echo "Usage $(basename $0) start|stop"
          exit 1
      ;;
esac

VS

當所有real server宕掉時,sorry server頂替,定義其主頁,啟動服務(注意修改服務端口為8080)

開啟nginx的upstream模塊,配置反向代理,啟動服務(nginx占用80端口)

/etc/nginx/nginx.conf

    upstream websers {
        server 172.18.51.74:80;
        server 172.18.51.75:80;
        server 127.0.0.1:8080 backup; #設置其應急響應服務器

/etc/nginx/conf.d/default.conf

    location / {
        root   /usr/share/nginx/html;
        proxy_pass http://websers;    #代理至后端主機
        index  index.html index.htm;
    }

配置keepalived配置文件:

vs1和vs2的配置文件,主備模式、優先級不一樣,其它地方一致;

/etc/keepalived/keepalived.con

! Configuration File for keepalived

global_defs {
   notification_email {       
   root@localhost
}
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   vrrp_mcast_group4 224.0.101.24
}
vrrp_script chk_down {       #存在文件時,檢測成功,即執行降級;否則不存在,全部退出;實現服務器切換
        script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"
        interval 1
        weight -5
}

vrrp_script ngxstatus {    #腳本,健康狀態檢測,檢測nginx是否存活
        script "killall -0 nginx && exit 0 || exit 1"
        interval 1
        weight -5
}

vrrp_instance sr1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    #nopreempt            #非搶占模式(默認搶占模式)
    authentication {
        auth_type PASS
        auth_pass rE+szbuO
    }
        track_script {     #腳本調用
        chk_down
        ngxstatus
}

    virtual_ipaddress {
        172.18.51.82/16 dev ens33 label ens33:0
    }
        notify_master "/etc/keepalived/notify.sh master"
        notify_backup "/etc/keepalived/notify.sh backup"
        notify_fault "/etc/keepalived/notify.sh fault"
         #此處調用腳本實現發郵件給管理員
}

調用腳本

[root@centos703 keepalived]# vim notify.sh 
          #!/bin/bash
          #
          contact='root@localhost'
          notify() {
             mailsubject="vrrp:$(hostname) to be $1"
             mailbody="$(hostname) to be $1,vrrp transition, $(date)."
             echo "$mailbody" | mail -s "$mailsubject" $contact
          }
            case $1 in
            master)
              notify master
              ;;
            backup)
              notify backup
              ;;
            fault)
              notify fault
              ;;
            *)
              echo "Usage: $(basename $0) {master|backup|fault}"
              exit 1
              ;;
          esac
~               

客戶端測試:

模擬服務器正常,一臺web服務器宕機,兩臺都宕機訪問情況:

keepalived+nginx部署(單主模型)

配置vrrp實例后將遵循自動生成VIP地址,主服務器故障時自動實現地址漂移

keepalived+nginx部署(單主模型)

keepalived+nginx部署(單主模型)

nginx健康狀態檢測腳本當nginx宕機時,則會自動將權重減去5,VIP地址漂移至優先級高的主機

keepalived+nginx部署(單主模型)

keepalived+nginx部署(單主模型)


原創文章,作者:Mr-Xiao,如若轉載,請注明出處:http://www.www58058.com/76023

(0)
Mr-XiaoMr-Xiao
上一篇 2017-05-17
下一篇 2017-05-17

相關推薦

  • 第一周作業

    一、計算機的組成及功能(參照書籍:《計算機的組成原理》)  按照馮?諾伊曼結構,計算機的硬件由運算器、控制器、存儲器、輸入設備和輸出設備五部分組成。  CPU   :由運算器與控制器組成。主要功能就是控制各部件協調工作。         運…

    Linux干貨 2017-02-06
  • LVS基本原理

    LVS基本原理 簡介 負載調度器、真實服務器群節點一起被稱為LVS。LVS負載調度器(有時也稱為負載平衡器),接收所服務的所有接入服務集群的請求,并決定集群中的哪個節點應該回復其請求。 1)負載調度器(Director):作為整個集群的前端,主要將用戶請求分發至真實服務器中進行處理。 2)真實服務器池:由多個功能相同的真實服務器組成,為用戶提供真正的網絡服務…

    Linux干貨 2016-12-27
  • Linux的常用的計劃任務(一次任務與周期性任務) at & cron

      在Linux日常維護工作中,維護員不可能每時每刻都守在服務前前,但如果遇到例行的操作要進行怎么辦?設定計劃任務!?     Linux任務計劃、周期性任務執行     ? 未來的某時間點執行一次任務:      &n…

    Linux干貨 2016-09-09
  • 緩存需知

    Edit Web緩存核心技術點需知 5.1 HTTP首部控制 5.2 基于新鮮度檢測機制: 2.1 特征1:時間局部性 2.2 特征2:空間局部性 2.3 緩存的優點 2.4 哪類數據應該被緩存 2.5 哪類數據可緩存但不應該被緩存 2.6 緩存命中率決定緩存有效性 2.7 緩存數據生命周期 2.8 緩存處理步驟 2.9 緩存和普通數據讀取的區別 1. 完整…

    Linux干貨 2017-06-01
  • 8月11日shell編程腳本及課后作業

    shell腳本編程 本章內容 編程基礎 腳本基礎格式 變量 運算 條件測試 流程控制 函數 數組 高級字符串操作 高級變量 配置用戶環境 編程基礎 程序:指令+數據    程序編程風格:       過程式:以指令為中心,數據服務于指令   &nbs…

    Linux干貨 2016-08-15
欧美性久久久久