標籤:設定檔
Keepalived的全域配置詳解
Keepalived的設定檔都是以塊(block)的形式組織的,每個塊的內容都包含在{}中,以“#”和“!”開頭的行都是注釋。全域配置就是對整個Keepalived都生效的配置
! Configuration File for keepalived
global_defs {
notification_email {
[email protected]
[email protected]
}
notification_email_from [email protected]
smtp_server 192.168.1.100
smtp_connect_timeout 30
router_id LVS_DEVEL
}
notification_email用於設定警示郵件地址,可以設定多個,每行一個。注意,如果要開啟郵件警示,需要開啟原生Sendmail服務。
notification_email_from用於設定郵件的發送地址。
smtp_server用於設定郵件的smtp server地址。
smtp_connect_timeout用於設定串連smtp server的逾時時間。
router_id表示運行Keepalived伺服器的一個標識,是發郵件時顯示在郵件主題中的資訊。
Keepalived的VRRPD配置詳解
VRRPD配置又可分為VRRP同步群組配置和VRRP執行個體配置。
下面是兩個同步群組的配置範例:
vrrp_sync_group G1 {
group {
VI_1
VI_2
VI_5
}
notify_backup "/usr/local/bin/vrrp.back arg1 arg2"
notify_master "/usr/local/bin/vrrp.mast arg1 arg2"
notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"
}
vrrp_sync_group G2 {
group {
VI_3
VI_4
}
}
notify_master:指定當Keepalived進入Master狀態時要執行的指令碼,這個指令碼可以是一個狀態警示指令碼,也可以是一個服務管理指令碼。Keepalived允許指令碼傳入參數,因此靈活性很強。
notify_backup:指定當Keepalived進入Backup狀態時要執行的指令碼,同理,這個指令碼可以是一個狀態警示指令碼,也可以是一個服務管理指令碼。
notify_fault:指定當Keepalived進入Fault狀態時要執行的指令碼,指令碼功能與前兩個類似。
notify_stop:指定當Keepalived程式終止時需要執行的指令碼。
VRRP執行個體的配置
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
mcast_src_ip <IPADDR>
garp_master_delay 10
track_interface {
eth0
eth1
}
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
#<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL>
192.168.200.16
192.168.200.17 dev eth1
192.168.200.18 dev eth2
}
virtual_routes {
#src <IPADDR> [to] <IPADDR>/<MASK> via|gw <IPADDR> dev <STRING> scope <SCOPE>
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
192.168.113.0/24 via 192.168.100.252 or 192.168.100.253
}
nopreempt
preemtp_delay 300
}
vrrp_instance是VRRP執行個體開始的標識,後跟VRRP執行個體名稱。
state用於指定Keepalived的角色,MASTER表示此主機是主伺服器,BACKUP表示此主機是待命伺服器。
interface用於指定HA監測網路的介面。
virtual_router_id是虛擬路由辨別碼,這個標識是一個數字,同一個vrrp執行個體使用唯一的標識,即在同一個vrrp_instance下,MASTER和BACKUP必須是一致的。
priority用於定義節點優先順序,數字越大表示節點的優先順序就越高。在一個vrrp_instance下,MASTER的優先順序必須大於BACKUP的優先順序。
advert_int用於設定MASTER與BACKUP主機之間同步檢查的時間間隔,單位是秒。
mcast_src_ip用於設定發送多播包的地址,如果不設定,將使用綁定的網卡所對應的IP地址。
garp_master_delay用於設定在切換到Master狀態後延時進行Gratuitous arp請求的時間。
track_interface用於設定一些額外的網路監控介面,其中任何一個網路介面出現故障,Keepalived都會進入FAULT狀態。
authentication用於設定節點間通訊驗證類型和密碼,驗證類型主要有PASS和AH兩種,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通訊。
virtual_ipaddress用於設定虛擬IP地址(VIP),又叫做漂移IP地址。可以設定多個虛擬IP地址,每行一個。可以寫成 “192.168.16.189/24 dev eth1” 這樣的形式
virtual_routes和virtual_ipaddress段一樣,用來設定在切換時添加或刪除相關路由資訊。通過“ip route”命令可以查看路由資訊是否添加成功,也可以通過notify_master選項來代替virtual_routes實現相同的功能。
nopreempt設定的是高可用叢集中的不搶佔功能。在使用不搶佔時,只能在“state”狀態為“BACKUP”的節點上設定,而且這個節點的優先順序必須高於其他節點。
preemtp_delay用於設定搶佔的延時時間,單位是秒。
vrrp_script check_mysqld
{
script "killall -0 mysqld"
interval 2
}
track_script
{
check_mysqld
}
script "killall -0 mysqld"用於檢測mysqld服務是否正常啟動,0代表正常、1代表異常
interval 2用於設定檢查的時間間隔
check_mysqld返回檢查的值
Keepalived的LVS配置詳解
LVS段的配置以“virtual_server”作為開始標識,此段內容有兩部分組成,分別是real_server段和健康檢測段。下面是virtual_server段常用選項的一個配置樣本:
virtual_server 192.168.12.200 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
persistence_granularity <NETMASK>
protocol TCP
ha_suspend
virtualhost <string>
sorry_server <IPADDR> <PORT>
virtual_server:設定虛擬伺服器的開始,後面跟虛擬IP地址和服務連接埠,IP與連接埠之間用空格隔開。
delay_loop:設定健全狀態檢查的時間間隔,單位是秒。
lb_algo:設定負載調度演算法,可用的調度演算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的演算法有rr和wlc。
lb_kind:設定LVS實現負載平衡的機制,有NAT、TUN和DR三個模式可選。
persistence_timeout:會話保持時間,單位是秒。
persistence_granularity:此選項是配合persistence_timeout的,後面跟的值是子網路遮罩,表示持久串連的粒度。預設是255.255.255.255,也就是一個單獨的用戶端IP。如果將掩碼修改為255.255.255.0,那麼用戶端IP所在的整個網段的請求都會分配到同一個real server上。
protocol:指定轉寄協議類型,有TCP和UDP兩種可選。
ha_suspend:節點狀態從Master到Backup切換時,暫不啟用real server節點的健全狀態檢查。
virtualhost:在通過HTTP_GET/ SSL_GET做健康檢測時,指定的Web伺服器的虛擬機器主機地址。
sorry_server:相當於一個備用節點,在所有real server失效後,這個備用節點會啟用。
real_server段的一個配置樣本:
real_server 192.168.12.132 80 {
weight 3
inhibit_on_failure
notify_up <STRING> | <QUOTED-STRING>
notify_down <STRING> | <QUOTED-STRING>
}
real_server:是real_server段開始的標識,用來指定real server節點,後面跟的是real server的真實IP地址和連接埠,IP與連接埠之間用空格隔開。
weight:用來配置real server節點的權值。權值大小用數字表示,數字越大,權值越高。設定權值的大小可以為不同效能的伺服器分配不同的負載,為效能高的伺服器設定較高的權值,而為效能較低的伺服器設定相對較低的權值
inhibit_on_failure:表示在檢測到real server節點失效後,把它的“weight”值設定為0,而不是從IPVS中刪除。
notify_up:此選項與上面介紹過的notify_maser有相同的功能,後跟一個指令碼,表示在檢測到real server節點服務處於UP狀態後執行的指令碼。
notify_down:表示在檢測到real server節點服務處於DOWN狀態後執行的指令碼。
健康檢測段允許多種檢查方式,常見的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。
TCP_CHECK檢測方式樣本:
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
connect_port:健全狀態檢查的連接埠,如果無指定,預設是real_server指定的連接埠。
connect_timeout:表示無響應逾時時間,單位是秒,這裡是3秒逾時。
nb_get_retry:表示重試次數,這裡是3次。
delay_before_retry:表示稍候再試,這裡是間隔3秒。
HTTP_GET和SSL_GET檢測方式的樣本:
HTTP_GET |SSL_GET
{
url {
path /index.html
digest e6c271eb5f017f280cf97ec2f51b02d3
status_code 200
}
connect_port 80
bindto 192.168.12.80
connect_timeout 3
nb_get_retry 3
delay_before_retry 2
}
url:用來指定HTTP/SSL檢查的URL資訊,可以指定多個URL。
path:後跟詳細的URL路徑。
digest:SSL檢查後的摘要資訊,這些摘要資訊可以通過genhash命令工具擷取。例如:genhash -s 192.168.12.80 -p 80 -u /index.html。
status_code:指定HTTP檢查返回正常狀態代碼的類型,一般是200。
bindto:表示通過此地址來發送請求對伺服器進行健全狀態檢查。
MISC_CHECK檢測方式的樣本:
MISC_CHECK
{
misc_path /usr/local/bin/script.sh
misc_timeout 5
! misc_dynamic
}
misc_path:用來指定一個外部程式或者一個指令碼路徑。
misc_timeout:設定執行指令碼的逾時時間。
misc_dynamic:表示是否啟用動態調整real server節點權重,“!misc_dynamic”表示不啟用,相反則表示啟用。
Keepalived設定檔詳解