keeplived配置

keeplived簡介   

keeplived是一個基於VRRP協議來實現的WEB服務高可用方案,可以利用其來避免單點故障。一個WEB服務至少會有2臺服務器運行Keepalived,一臺爲主服務器(MASTER),一臺爲備份服務器(BACKUP),但是對外表現爲一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

#全局定義塊

global_defs {
 
     notification_email {           #指定keepalived在發生切換時需要發送email到的對象,一行一個
 
        123456@gmail.com

      }
 
    notification_email_from      #指定發件人
 
    smtp_server 127.0.0.1           #指定smtp服務器地址
 
    smtp_connect_timeout 3          #指定smtp連接超時時間
 
    router_id LVS_DEVEL             #運行keepalived機器的一個標識
}

#監控haproxy 進程
vrrp_script chk_haproxy { 
           # Requires keepalived-1.1.13
 
    script "killall -0 haproxy"       # widely used idiom
 
    interval 2                            # check every 2 seconds
 
    weight 2                       
 
   } 

#VRRP實例定義塊
vrrp_sync_group VG_1{ 
              #監控多個網段的實例
 
       group {
 
 inside_network                    #實例名
 
 outside_network
 
}
 
notify_master /path/xx.sh          #指定當切換到master時,執行的腳本
 
netify_backup /path/xx.sh          #指定當切換到backup時,執行的腳本
 
notify_fault "path/xx.sh VG_1"     #故障時執行的腳本
 
notify /path/xx.sh
 
smtp_alert                         #使用global_defs中提供的郵件地址和smtp服務器發送郵件通知
}
vrrp_instance inside_network {
 
   state BACKUP                    #指定那個爲master,那個爲backup,如果設置了nopreempt這個值不起作用,主備考priority決定


  # nopreempt                       #設置爲不搶佔 注:這個配置只能設置在backup主機上,而且這個主機優先級要比另外一臺高
 
   interface eth0                  #設置實例綁定的網卡
 
   dont_track_primary              #忽略vrrp的interface錯誤(默認不設置)
 
   track_interface{                #設置額外的監控,裏面那個網卡出現問題都會切換
 
    eth0
 
    eth1
 
   }

    mcast_src_ip                    #發送多播包的地址,如果不設置默認使用綁定網卡的primary ip
 
   garp_master_delay               #在切換到master狀態後,延遲進行gratuitous ARP請求
 
   virtual_router_id 50            #VPID標記 ,路由ID,可通過#tcpdump vrrp查看
 
   priority 99                     #優先級,高優先級競選爲master
 
   advert_int 1                    #檢查間隔,默認1秒

    preempt_delay                   #搶佔延時,默認5分鐘
 
   debug                           #debug級別
 
   authentication {                #設置認證
 
       auth_type PASS              #認證方式
 
       auth_pass 111111            #認證密碼
 
   }
 
   virtual_ipaddress {             #設置vip
 
       172.16.31.30
 
   }
}

#虛擬服務器定義塊
virtual_server 172.16.31.3123 {
 
   delay_loop 6                    #健康檢查時間間隔
 
   lb_algo rr                      #lvs調度算法rr|wrr|lc|wlc|lblc|sh|dh
 
   lb_kind DR                      #負載均衡轉發規則NAT|DR|RUN
 
   persistence_timeout 5           #會話保持時間
 
   protocol TCP                    #使用的協議
 
   persistence_granularity  #lvs會話保持粒度
 
   virtualhost            #檢查的web服務器的虛擬主機(host:頭)   
    sorry_server     #備用機,所有realserver失效後啓用
 
   real_server 192.168.200.5 23 {
 
              weight 1             #默認爲1,0爲失效
 
              inhibit_on_failure   #在服務器健康檢查失效時,將其設爲0,而不是直接從ipvs中刪除
 
              notify_up|   #在檢測到server up後執行腳本
 
              notify_down|#在檢測到server down後執行腳本
 
  
               TCP_CHECK {
 
              connect_timeout 3    #連接超時時間
 
              nb_get_retry 3       #重連次數
 
              delay_before_retry 3 #重連間隔時間
 
              connect_port 23      #健康檢查的端口的端口
 
              bindto  
                         }
 
             HTTP_GET | SSL_GET{
 
             url{                  #檢查url,可以指定多個
 
             path /
 
             digest      #檢查後的摘要信息
 
             status_code 200       #檢查的返回狀態碼
 
                }
 
             connect_port
 
             bindto
 
             connect_timeout 5
 
             nb_get_retry 3
 
             delay_before_retry 2
 
                             }

              SMTP_CHECK{
 
             host{
 
             connect_ip
 
             connect_port  #默認檢查25端口
 
             bindto
 
                 }
 
             connect_timeout 5
 
             retry 3
 
             delay_before_retry 2
 
             helo_name|   #smtp helo請求命令參數,可選
 
                      }
 
            MISC_CHECK{
 
            misc_path|#外部腳本路徑
 
            misc_timeout        #腳本執行超時時間
 
            misc_dynamic        #如設置該項,則退出狀態碼會用來動態調整服務器的權重,返回0 正常,不修改;返回1,檢查失敗,權重改爲0;返回2-255,正常,權重設置爲:返回狀態碼-2
 
                      }
 
     }

}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章