1. 程式人生 > >haproxy+keepalived配置

haproxy+keepalived配置

#==============================================haproxy.cfg============================================

#此配置為haproxy透傳前端IP地址到後端的配置

#==================================================================================================

global #全域性屬性
    log 127.0.0.1 local0 info
    #以daemon方式在後臺執行
    daemon  
    #HAProxy啟動時作為守護執行可建立的程序數,
    #配合daemon引數使用,預設只啟動一個程序,該值應小於cpu核數。
    nbproc 1 
    #最大同時*連線
    maxconn 102400
    #指定儲存HAProxy程序號的檔案
    pidfile /var/lib/haproxy/haproxy.pid
    #定義統計資訊儲存位置
    stats socket /var/lib/haproxy/stats
 
defaults #預設引數
    #tcp/http模式
    mode tcp  
    retries 3
    #連線server端超時5s
    timeout connect 5s
    #客戶端響應超時50s
    timeout client  300s
    #server端響應超時50s 
    timeout server  300s
    #設定對後端伺服器檢測超時時間,即心跳50s
    timeout check   300s
    #source 0.0.0.0 usesrc clientip

#前端服務tcp-in
frontend my-tcp-in
    mode tcp
    #監聽埠
    bind 0.0.0.0:8443
    log global
    #請求轉發至名為"my-servers"的後端服務
    default_backend my-servers

#後端服務servers
backend my-servers 
    #使用RR負載均衡演算法
    balance roundrobin
    server server1 10.92.4.148:8443 maxconn 10000 check inter 3000 rise 2 fall 3

#統計web頁面配置, frontend和backend的組合體, 監控組的名稱可按需自定義
listen admin_status
    #配置監控執行模式
    mode http
    #配置統計頁面訪問埠
    bind 0.0.0.0:1080
    #統計頁面預設最大連線數
    maxconn 10 
    log 127.0.0.1 local0 err
    #開啟統計
    stats enable
    #監控頁面自動重新整理時間
    stats refresh 30s
    #統計頁面訪問url
    stats uri /stats
    #統計頁面密碼框提示文字
    stats realm welcome login\ Haproxy
    #監控頁面的使用者和密碼:admin, 可設定多個使用者名稱
    stats auth admin:admin
    #手工啟動/禁用後端伺服器, 可通過web管理節點
    stats admin if TRUE 

#===========================================keepalived_master.conf=====================================

! Configuration File for keepalived

global_defs {
   notification_email {
        [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.133.4
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

#HAProxy健康檢查配置
vrrp_script chk_haproxy {
    #使用killall -0檢查haproxy例項是否存在,效能高於ps命令
    script "killall -0 haproxy"  
    interval 2   #指令碼執行週期
    weight 2   #每次檢查的加權權重值
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 160
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.92.52.200
    }
    track_interface {  
       eth0    
    }
    track_script {
        chk_haproxy
    }
}

#==============================================keepalived_slave.conf================================

! Configuration File for keepalived

global_defs {
   notification_email {
        [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.133.4
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

#HAProxy健康檢查配置
vrrp_script chk_haproxy {
    #使用killall -0檢查haproxy例項是否存在,效能高於ps命令
    script "killall -0 haproxy"  
    interval 2   #指令碼執行週期
    weight 2   #每次檢查的加權權重值
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        10.92.52.200
    }
    track_interface {  
       eth0    
    }
    track_script {
        chk_haproxy
    }
}

#================================================iptable設定=======================================

#!/bin/bash
/sbin/iptables -F
/sbin/iptables -t mangle -N DIVERT
/sbin/iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
/sbin/iptables -t mangle -A DIVERT -j MARK --set-mark 1
/sbin/iptables -t mangle -A DIVERT -j ACCEPT
/sbin/ip rule add fwmark 1 lookup 100
/sbin/ip route add local 0.0.0.0/0 dev lo table 100

#============================================check_haproxy.sh=========================================

#!/bin/bash
ret=`ps -C haproxy --no-header | wc -l`
#if [ $ret -eq 0 ];then
#    /etc/init.d/haproxy start
#    sleep 3
    if [ `ps -C haproxy --no-header | wc -l ` -eq 0 ];then
        /etc/init.d/keepalived stop
    fi
#fi