利用keepalived實現nginx七層負載均衡器雙主模型高可用集群

nginx通過ngx_http_upstream_module可以實現七層http服務的負載均衡,同時還自帶RS的健康監測功能,但是也有弊端,nginx負載均衡器如果發生故障則整個集群失效,此文通過keepalived構建nginx負載均衡器的高可用集群。

一、實驗環境:

實驗需要4臺服務器:

nginx負載均衡器1:192.168.11.100

nginx負載均衡器2:192.168.11.101

nginx靜態網頁服務器1:192.168.11.201

nginx靜態網頁服務器2:192.168.11.202

拓撲如下:

利用keepalived實現nginx七層負載均衡器雙主模型高可用集群

二、實驗步驟:

負載均衡器配置:

  1. 安裝nginx和keepalived
    yum install -y nginx keepalived
  2. 修改keepalived配置文件:
    ! 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  ? router_id node1  ? vrrp_mcast_group1 224.0.115.17 #組播ip地址# }  #服務檢測腳本1:當/etc/keepalived目錄下存在down文件,則權重-5# vrrp_script chk_down {  ?  script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"  ?  interval 1 #每隔1秒檢測一次#  ?  weight -5 #權重減5# }  vrrp_script chk_nginx {  ?  script "killall -0 nginx && exit 0 || exit 1" #檢測nginx進程是否存在#  ?  interval 1   ?  weight -5  ?  fall 2 #檢測兩次都不存在則降低權重#  ?  rise 1 #檢測一次存在則加權重# }  vrrp_instance VI_1 {  ?  state MASTER  ?  interface ens33  ?  virtual_router_id 1  ? ? ?  priority 100  ?  advert_int 1  ?  authentication {  ? ? ?  auth_type PASS  ? ? ?  auth_pass hello  ?  }  ?  virtual_ipaddress {  ? ? ?  192.168.11.250 label ens33:0  ?  }  ?  #檢測chk_down和chk_nginx兩個腳本#  ?  track_script {  ? ? ?  chk_down  ? ? ?  chk_nginx  ?  }  ?  notify_master "/etc/keepalived/notify.sh master"  ?  notify_backup "/etc/keepalived/notify.sh backup"  ?  notify_fault "/etc/keepalived/notify.sh fault" }  vrrp_instance VI_2 {  ?  state BACKUP  ?  interface ens33  ?  virtual_router_id 2  ?  priority 96  ?  advert_int 1  ?  authentication {  ? ? ?  auth_type PASS  ? ? ?  auth_pass world  ?  }  ?  virtual_ipaddress {  ? ? ?  192.168.11.251 label ens33:1  ? ? ? ? ?  }  ?  track_script {  ? ? ?  chk_down  ? ? ?  chk_nginx  ?  }  ?  #定義觸發通知腳本條件#  ?  notify_master "/etc/keepalived/notify.sh master"  ?  notify_backup "/etc/keepalived/notify.sh backup"  ?  notify_fault "/etc/keepalived/notify.sh fault" }
  3. 通知腳本內容如下:
     #!/bin/bash # contact='root@localhost' #定義函數:當主次節點發生變更之后給root@localhost發郵件通知# notify() {  ? ? ?  local mailsubject="`hostname` to be $1,vip floating"  ? ? ?  local mailbody="`data +"%F %T"`:vrrp transition,`hostname` changed to be $1"  ? ? ?  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

     

     

原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/79340

(2)
王子豪王子豪
上一篇 2017-07-03 15:42
下一篇 2017-07-03 15:45

相關推薦

  • linux 基礎3

    linux 基礎3

    Linux干貨 2018-03-25
  • 初涉Linux基本要點概括(1)

    計算機,這里通常指可以儲存程序的計算機,根據馮諾依曼體系,計算機組成部件包括控制單元(Control Unit)、算術邏輯單元(Arithmetic Logic Unit)、內存(Memory)、輸入設備(Input)、輸出設備(Output)。計算機通過輸入的數據和指令,可以完成各種復雜的運算任務,小到文字處理、游戲、影音、大到衛星定位,火箭發射,人工智能…

    Linux干貨 2016-09-26
  • 由摩根定律引發的思考

    在Linux中,我們常常需要對一些條件進行判斷,而對于多個條件的組合判斷是基于摩根定律而進行的。所以理解摩根定律對于我們學習條件判斷是很有必要的,下面我們就先介紹摩根定律進而引出其在一些具體場景上的應用。   一、摩根定律 在Linux中的條件判斷中,摩根定律可以以下式來表示: !( A || B )=!A && !B !( A &…

    Linux干貨 2016-08-16
  • N22-第二周作業

    Linux上的文件管理類命令有哪些,其常用使用方法及其相關示例演示。 文件管理類命令有:cp,mv,rm cp:復制文件或者目錄   單源復制:cp [OPTION]… [-T] SOURCE DEST        多源復制:cp [OPTION]… SOURCE… DI…

    Linux干貨 2016-09-19
  • chmod 沒有執行權限的解決辦法 [轉載http://www.fblinux.com/?p=30]

    chmod沒有權限,貌似就算是root用戶也無法授權,這可咋辦?chmod是設置權限的命令,但是自身沒有了執行權限,那么就表示沒有辦法更改其他命令的權限,也沒有辦法改變自己的權限。 1 2 3 4 [root@localhost ~]# ll /bin/chmod ———-. 1 root root 48712 Oct 15 2014 …

    Linux干貨 2017-01-01
  • 網絡班N22期第五周博客作業

    1、顯示當前系統上root、fedora或user1用戶的默認shell; [root@bogon ~]# cat /etc/passwd | grep -E "^(root|fedora|user1)\>" | cut -d:&nb…

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