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
持續更新中……