Cron的特殊性,在雙機熱備集群中,只有一臺是提供服務的。當CronJobA故障時,停掉cron服務,CronJobB啟動cron并接替CronJobA繼續服務。CronJobA在恢復后,Keepalived不應該切回去。
所以我們要在配置文件加入 nopreempt 非搶占,但是這個參數只能用于state 為backup,故我們在用Keepalived的時候最好master 和backup的state都設置成backup 讓其通過priority來競爭。
節點高可用解決
keepalived在線安裝:
yum -y install keepalived ipvsadm
在Master(CronJobA)配置:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id cronha
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 101
advert_int 1
#防止搶占資源
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
#指定當切換到master時,執行的腳本
notify_master /etc/keepalived/scripts/cronstart
#指定當切換到backup時,執行的腳本
notify_backup /etc/keepalived/scripts/cronstop
virtual_ipaddress {
172.88.0.254
}
}
在Backup(CronJobB)配置:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id cronha
}
vrrp_instance VI_1 {
state BACKUP
interface eth1
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
notify_master /etc/keepalived/scripts/cronstart
notify_backup /etc/keepalived/scripts/cronstop
virtual_ipaddress {
172.88.0.254
}
}
- 做為Master和Backup時需要的腳本
#創建目錄
mkdir /etc/keepalived/scripts
#啟動cron腳本
vim /etc/keepalived/scripts/cronstart
#!/bin/bash
/etc/init.d/crond start
#微信告知切換
/etc/keepalived/scripts/weixin
#添加執行權限
chmod +x /etc/keepalived/scripts/cronstart
#關閉cron腳本
vim /etc/keepalived/scripts/cronstop
#!/bin/bash
/etc/init.d/crond stop
#添加執行權限
chmod +x /etc/keepalived/scripts/cronstop
在兩臺CronJob上配置
- 關閉cron自啟動服務
chkconfig crond off
- 啟動Keepalived并加入開機啟動:
/etc/init.d/keepalived restart
chkconfig keepalived on