Keepalived : Set notification script2023/10/11 |
|
To set notification script, it's possible to execute any script when the state of Keepalived changes. This example is based on the environment like follows.
VIP:10.0.0.30
+----------------------+ | +----------------------+
| [node01.srv.world] |10.0.0.51 | 10.0.0.52| [node02.srv.world] |
| Keepalived#1 +----------+----------+ Keepalived#2 |
| | | |
+----------------------+ +----------------------+
|
| [1] | |
| [2] | For example, in addition to basic Keepalived settings, set notification script. |
# create new #!/bin/bash TYPE=$1 NAME=$2 ENDSTATE=$3 MASTER_STATE () { # write any action here when Keepalived enters MASTER state /usr/bin/echo "MASTER state for VRRP ${TYPE} ${NAME}" > /tmp/keepalive.stat } BACKUP_STATE () { # write any action here when Keepalived enters BACKUP state /usr/bin/echo "BACKUP state for VRRP ${TYPE} ${NAME}" > /tmp/keepalive.stat } FAULT_STATE () { # write any action here when Keepalived enters FAULT state /usr/bin/echo "FAULT state for VRRP ${TYPE} ${NAME}" > /tmp/keepalive.stat } case $ENDSTATE in "MASTER") MASTER_STATE exit 0 ;; "BACKUP") BACKUP_STATE exit 0 ;; "FAULT") FAULT_STATE exit 0 ;; *) echo "${ENDSTATE} is unknown state for VRRP ${TYPE} ${NAME}" exit 1 ;; esac
root@node01:~#
chmod 755 /etc/keepalived/notify.sh
root@node01:~#
vi /etc/keepalived/keepalived.conf
global_defs {
router_id node01
notification_email {
root@localhost
}
notification_email_from root@node01.srv.world
smtp_server localhost
smtp_connect_timeout 30
# add
enable_script_security
# specify a user who runs script
# for security reasons, it should not use root
script_user root
}
vrrp_instance VRRP1 {
state BACKUP
nopreempt
interface enp1s0
virtual_router_id 101
priority 200
advert_int 1
virtual_ipaddress {
10.0.0.30/24
}
smtp_alert
# add
# impossible to specify argument to scripts for [notify] section
# for [notify], some arguments are added automatically like follows
# notify script.sh (INSTANCE|GROUP) (instance name) (ENDSTATE) (priority)
notify /etc/keepalived/notify.sh
# also possible to specify like follows
# possible to specify arguments here
# notify_master "script.sh arg1 arg2 ..."
# notify_backup "script.sh arg1 arg2 ..."
# notify_fault "script.sh arg1 arg2 ..."
}
root@node01:~# systemctl restart keepalived
|
| [3] | That's OK. Verify actions for notification script when the state of Keepalived would be changed. |
|
root@node01:~#
root@node01:~# systemctl restart keepalived
cat /tmp/keepalive.stat BACKUP state for VRRP INSTANCE VRRP1 |
| Sponsored Link |
|
|