0

I have setup a redis master-slave(s) cluster with sentinel monitoring for HA on linux CentOS7.0 (redis v4.0.2).

Sentinel is working well as, when I shutdown one of the three nodes, another node is elected as the new master.

Now I try to setup a reconfig script to notify clients of the new master.

I created a readable and executable (chmod a+rx) script in /usr/opt/notify_master.sh then I added such a line in my 3 sentinel nodes in /etc/sentinel.conf:

sentinel client-reconfig-script mymaster /usr/opt/notify_master.sh

Looking at sentinel config with a sentinel master mymaster command, I can confirm that client-reconfig-script is well configured:

10.0.0.41:26379> sentinel master mymaster
...

41) "client-reconfig-script"

42) "/usr/opt/notify_master.sh"

However, when a failover occurs, my reconfig script is not triggered. And I wonder why. Here is the sentinel log:

3314:X 02 Apr 10:14:07.069 # +sdown master mymaster 10.0.0.41 6379
3314:X 02 Apr 10:14:07.159 # +new-epoch 254
3314:X 02 Apr 10:14:07.161 # +vote-for-leader 8ed286e02e81d6946e0d007f569e164a9404c03f 254
3314:X 02 Apr 10:14:07.679 # +config-update-from sentinel 8ed286e02e81d6946e0d007f569e164a9404c03f 10.0.0.40 26379 @ mymaster 10.0.0.41 6379
3314:X 02 Apr 10:14:07.679 # +switch-master mymaster 10.0.0.41 6379 10.0.0.42 6379
3314:X 02 Apr 10:14:07.680 * +slave slave 10.0.0.40:6379 10.0.0.40 6379 @ mymaster 10.0.0.42 6379
3314:X 02 Apr 10:14:07.680 * +slave slave 10.0.0.41:6379 10.0.0.41 6379 @ mymaster 10.0.0.42 6379
3314:X 02 Apr 10:14:37.742 # +sdown slave 10.0.0.41:6379 10.0.0.41 6379 @ mymaster 10.0.0.42 6379
3314:X 02 Apr 10:48:36.099 # -sdown slave 10.0.0.41:6379 10.0.0.41 6379 @ mymaster 10.0.0.42 6379
3314:X 02 Apr 10:48:46.056 * +convert-to-slave slave 10.0.0.41:6379 10.0.0.41 6379 @ mymaster 10.0.0.42 6379

Here is the notify_master.sh script (which does a VIP drift)

#!/bin/bash

MASTER_IP=$6  

LOCAL_IP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"​` 

VIP='10.0.0.31'

NETMASK='24'

INTERFACE='eno16777736'  

if [ ${MASTER_IP} = ${LOCAL_IP} ];then  



 sudo /usr/sbin/ip  addr  add ${VIP}/${NETMASK}  dev ${INTERFACE} 



   sudo /usr/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}



  exit 0

else



 sudo /usr/sbin/ip  addr del  ${VIP}/${NETMASK}  dev ${INTERFACE}  



  exit 0

fi

exit 1

This script works mannauly.

dzhou
  • 61
  • 3

0 Answers0