keepalived 配置文件解析

keepalived 配置文件解析html

什麼是keepalived?mysql

http://baike.baidu.com/link?url=BJL-qbgDBRqciYuZn_kmdoOaDRUSPq1EHBkuAEMhAzuOAr0gzMl9szgmi4BSxw8hQMJ-cWSiDLaT6_o1XnvkIK

keepalived原理算法

    keepalived是模塊化設計,不一樣模塊負責不一樣功能,其組件主要包括:sql

core    #core是keepalived的核心,負責主進程的啓動和維護全局配置文件的加載解析等;
check   #負責healthchecker(健康檢查),包括各類健康檢查方式以及對應的配置的解析(包括LVS的配置解析)
vrrp    #VRRPD子進程,實現vrrp協議
libipfwc #iptables(ipchains)庫配置LVS會用到
libipvs #配置LVS會用到

keepalived進程bash

父進程:內存管理、子進程管理等等
子進程:VRRP子進程
子進程:healthchecker子進程

Keepalived配置文件服務器

    主要包括三類區域:全局配置、VRRPD配置、LVS配置負載均衡

全局配置:包含全局定義和靜態路由配置dom

全局定義:
jsp

# Configuration File for keepalived
global_defs {        #全局配置標識
    notification_email {
        admin@domain.com    #定義郵件發送地址
        0633225522@domain.com
    }
    notification_email_from keepalived@domain.com #發送郵件用戶
    smtp_server 192.168.200.20    #SMTP server 地址
    smtp_connect_timeout 30    #SMTP server重連時間
    lvs_id LVS_MAIN    #LVS 服務器名
}

靜態路由配置:ide

static_ipaddress
{
192.168.1.1/24 brd + dev eth0 scope global    #設置eth0的ip地址
192.168.1.2/24 brd + dev eth1 scope global    #設置eth1的ip地址
}
static_routes
{
src $SRC_IP to $DST_IP dev $SRC_DEVICE
src $SRC_IP to $DST_IP via $GW dev $SRC_DEVICE
}

這裏實際上就是給服務器配置真實的IP地址和路由的,通常這個區域不須要配置

VRRPD包括:VRRP同步組、VRRP實例、VRRP腳本

VRRP同步組(synchroization group)配置範例

vrrp_sync_group VG_1 {
group {        
http        #http和mysql是實例名和下面的實例名一致
mysql
}
notify_master /path/to/to_master.sh #notify_master /path/to/to_master.sh:表示當切換到master狀態時,要執行的腳本
notify_backup /path_to/to_backup.sh    #notify_backup /path_to/to_backup.sh:表示當切換到backup狀態時,要執行的腳本
notify_fault "/path/fault.sh VG_1"
notify /path/to/notify.sh
smtp_alert    #切換時給global defs中定義的郵件地址發送郵件通知
}

VRRP實例(instance)配置範例:

vrrp_instance http {
    state MASTER    #角色,結合優先級設定
    interface eth0    #VIP工做接口
    dont_track_primary    #忽略VRRP的interface錯誤
    track_interface {    #設置跟蹤接口,也就是對網卡接口進行健康檢查
        eth0
        eth1
    }
    mcast_src_ip <IPADDR>  #發送多播數據包時的源IP地址,至關於heartbeat的心跳端口,若是沒有設置那麼就用默認的綁定的網卡的IP,也就是interface指定的IP地址  
    garp_master_delay 10    #在切換到master狀態後,延遲進行ARP(gratuitous ARP)請求
    virtual_router_id 51    #這裏設置VRID,這裏很是重要,相同的VRID爲一個組,將決定多播的MAC地址
    priority 100    # 優先級,優先級高的爲master
    advert_int 1    # 檢查間隔,默認爲1秒
    authentication {    #認證設置
    auth_type PASS    #認證類型:包括pass和AH兩種
    autp_pass 1234    #認證密碼
}
    virtual_ipaddress {    #VIP地址設置
        #<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL>
        192.168.200.17/24 dev eth1
        192.168.200.18/24 dev eth2 label eth2:1
    }
    virtual_routes {    #虛擬路由,與VIP一塊兒工做,
        # src <IPADDR> [to] <IPADDR>/<MASK> via|gw <IPADDR> dev <STRING> scope <SCOPE> tab
        src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
        192.168.110.0/24 via 192.168.200.254 dev eth1
        192.168.111.0/24 dev eth2
        192.168.112.0/24 via 192.168.100.254
    }
    nopreempt    #不搶佔模式,只能設置在state和backup上,並且這個節點優先級必須比別的高
    preemtp_delay 300    #搶佔延遲
    debug    #debug級別
    notify master    #和sync group裏面設置同樣,能夠設置不一樣實例通知不一樣管理人員
}

VRRP腳本

vrrp_script check_running {   #腳本運行設置 
   script "/usr/local/bin/check_running"    #設置腳本路徑
   interval 10    #腳本執行間隔
   weight 10    #腳本結果致使優先級變動:10表示優先級+10;-10表示優先級-10
}

vrrp_instance http {    #定義實例
   state BACKUP
   smtp_alert
   interface eth0
   virtual_router_id 101
   priority 90
   advert_int 3
   authentication {
   auth_type PASS
   auth_pass whatever
   }
   virtual_ipaddress {
   1.1.1.1
   }
   track_script {
   check_running weight 20    #調用腳本
   }
}

LVS配置:

#負載均衡服務
virtual_server 192.168.200.15 80 {    #指定192.168.200.15的http服務
    delay_loop 30            #每一個30秒檢查一次real_server狀態
    lb_algo wrr        #LVS算法  
    lb_kind NAT        #LVS模式  
    persistence_timeout 50    #每一個TCP會話鏈接保持時間爲50s
    protocol TCP        #使用TCP協議
    
    sorry_server 192.168.100.100 80 #當real_server出現問題時切換到sorry_server
    
    real_server 192.168.100.2 80 {    #負載均衡real_server 1
        weight 2        #權重,算法採用的是加權輪詢算法,所以須要配置權重
        HTTP_GET {        #http請求
            url {
                path /testurl/test.jsp
                digest ec90a42b99ea9a2f5ecbe213ac9eba03
                }
            url {
                path /testurl2/test.jsp
                digest 640205b7b0fc66c1ea91c463fac6334c
                }
            connect_timeout 3    #鏈接超時時間
            nb_get_retry 3    #重連次數
            delay_before_retry 2    #重連間隔時間
        }
    }

部分參考博客「王者之心」:http://www.cnblogs.com/pricks/p/3822232.html

持續更新中……

相關文章
相關標籤/搜索