SCRIPTS EXECUTION
sentinel notification-script and sentinel reconfig-script are used in order to configure scripts that are called to notify the system administrator or to reconfigure clients after a failover. The scripts are executed with the following rules for error handling:
If script exits with "1" the execution is retried later (up to a maximum number of times currently set to 10).
If script exits with "2" (or an higher value) the script execution is not retried.
If script terminates because it receives a signal the behavior is the same as exit code 1.
A script has a maximum running time of 60 seconds. After this limit is reached the script is terminated with a SIGKILL
and the execution retried.
NOTIFICATION SCRIPT
sentinel notification-script [master-name] [script-path]
Call the specified notification script for any sentinel event that is generated in the WARNING level (for instance -sdown
, -odown
, and so forth). This script should notify the system administrator via email, SMS, or any other messaging system, that there is something wrong with the monitored Redis systems.
The script is called with just two arguments: the first is the event type and the second the event description.
The script must exist and be executable in order for sentinel to start if this option is provided.
Example:
sentinel notification-script mymaster /var/redis/notify.sh
CLIENTS RECONFIGURATION SCRIPT
sentinel client-reconfig-script [master-name] [script-path]
When the master changed because of a failover a script can be called in order to perform application-specific tasks to notify the clients that the configuration has changed and the master is at a different address.
The following arguments are passed to the script:
[master-name] [role] [state] [from-ip] [from-port] [to-ip] [to-port]
[state]
is currently always "failover" [role]
is either "leader" or "observer"The arguments
from-ip
, from-port
, to-ip
, to-port
are used to communicate the old address of the master and the new address of the elected slave (now a master).This script should be resistant to multiple invocations.
Example:
sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
This script is needed to organize High Availability according to the following scheme:
redis-sentinel -> consul -> consul-template -> haproxy
Install:
systemctl stop redis-sentinel.service
nano /etc/redis/sentinel.conf
sentinel client-reconfig-script mymaster /var/lib/redis/submit-masters-to-kv-stores.sh
cp submit-masters-to-kv-stores.sh /var/lib/redis/ chown redis:redis /var/lib/redis/submit-masters-to-kv-stores.sh chmod 0700 /var/lib/redis/submit-masters-to-kv-stores.sh
systemctl start redis-sentinel.service
Test run:
/var/lib/redis/submit-masters-to-kv-stores.sh mymaster leader start 10.0.0.51 6379 10.0.0.52 6379
Check:
consul kv get --recurse redis/master/mymaster