has been given permission to execute the script.
after shutting down a redis for master-slave switching, VIP drift is not executed (it is not clear whether the script has been executed). Running the script alone can drift.
configuration is as follows
Sentinel configuration (part of the code is automatically generated after master-slave switching)
-sharp Example sentinel.conf
-sharp *** IMPORTANT ***
-sharp
-sharp By default Sentinel will not be reachable from interfaces different than
-sharp localhost, either use the "bind" directive to bind to a list of network
-sharp interfaces, or disable protected mode with "protected-mode no" by
-sharp adding it to this configuration file.
-sharp
-sharp Before doing that MAKE SURE the instance is protected from the outside
-sharp world via firewalling or other means.
-sharp
-sharp For example you may use one of the following:
-sharp
-sharp bind 127.0.0.1 192.168.1.1
-sharp
-sharp protected-mode no
protected-mode no
-sharp port <sentinel-port>
-sharp The port that this sentinel instance will run on
daemonize yes
port 26379
logfile "/var/log/redis/sentinel.log"
pidfile "/var/run/sentinel.pid"
-sharp sentinel announce-ip <ip>
-sharp sentinel announce-port <port>
-sharp
-sharp The above two configuration directives are useful in environments where,
-sharp because of NAT, Sentinel is reachable from outside via a non-local address.
-sharp
-sharp When announce-ip is provided, the Sentinel will claim the specified IP address
-sharp in HELLO messages used to gossip its presence, instead of auto-detecting the
-sharp local address as it usually does.
-sharp
-sharp Similarly when announce-port is provided and is valid and non-zero, Sentinel
-sharp will announce the specified TCP port.
-sharp
-sharp The two options don"t need to be used together, if only announce-ip is
-sharp provided, the Sentinel will announce the specified IP and the server port
-sharp as specified by the "port" option. If only announce-port is provided, the
-sharp Sentinel will announce the auto-detected local IP and the specified port.
-sharp
-sharp Example:
-sharp
-sharp sentinel announce-ip 1.2.3.4
-sharp dir <working-directory>
-sharp Every long running process should have a well-defined working directory.
-sharp For Redis Sentinel to chdir to /tmp at startup is the simplest thing
-sharp for the process to don"t interfere with administrative tasks such as
-sharp unmounting filesystems.
dir "/tmp"
-sharp sentinel monitor <master-name> <ip> <redis-port> <quorum>
-sharp
-sharp Tells Sentinel to monitor this master, and to consider it in O_DOWN
-sharp (Objectively Down) state only if at least <quorum> sentinels agree.
-sharp
-sharp Note that whatever is the ODOWN quorum, a Sentinel will require to
-sharp be elected by the majority of the known Sentinels in order to
-sharp start a failover, so no failover can be performed in minority.
-sharp
-sharp Slaves are auto-discovered, so you don"t need to specify slaves in
-sharp any way. Sentinel itself will rewrite this configuration file adding
-sharp the slaves using additional configuration options.
-sharp Also note that the configuration file is rewritten when a
-sharp slave is promoted to master.
-sharp
-sharp Note: master name should not include special characters or spaces.
-sharp The valid charset is A-z 0-9 and the three characters ".-_".
sentinel myid 7267fb13d88570855d5b6e47915520d3e625afd5
-sharp sentinel auth-pass <master-name> <password>
-sharp
-sharp Set the password to use to authenticate with the master and slaves.
-sharp Useful if there is a password set in the Redis instances to monitor.
-sharp
-sharp Note that the master password is also used for slaves, so it is not
-sharp possible to set a different password in masters and slaves instances
-sharp if you want to be able to monitor these instances with Sentinel.
-sharp
-sharp However you can have Redis instances without the authentication enabled
-sharp mixed with Redis instances requiring the authentication (as long as the
-sharp password set is the same for all the instances requiring the password) as
-sharp the AUTH command will have no effect in Redis instances with authentication
-sharp switched off.
-sharp
-sharp Example:
-sharp
-sharp sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
sentinel monitor mymaster 10.0.0.42 6379 2
-sharp sentinel down-after-milliseconds <master-name> <milliseconds>
-sharp
-sharp Number of milliseconds the master (or any attached slave or sentinel) should
-sharp be unreachable (as in, not acceptable reply to PING, continuously, for the
-sharp specified period) in order to consider it in S_DOWN state (Subjectively
-sharp Down).
-sharp
-sharp Default is 30 seconds.
sentinel client-reconfig-script mymaster /usr/opt/notify_master.sh
-sharp sentinel parallel-syncs <master-name> <numslaves>
-sharp
-sharp How many slaves we can reconfigure to point to the new slave simultaneously
-sharp during the failover. Use a low number if you use the slaves to serve query
-sharp to avoid that all the slaves will be unreachable at about the same
-sharp time while performing the synchronization with the master.
sentinel auth-pass mymaster dell@123
-sharp sentinel failover-timeout <master-name> <milliseconds>
-sharp
-sharp Specifies the failover timeout in milliseconds. It is used in many ways:
-sharp
-sharp - The time needed to re-start a failover after a previous failover was
-sharp already tried against the same master by a given Sentinel, is two
-sharp times the failover timeout.
-sharp
-sharp - The time needed for a slave replicating to a wrong master according
-sharp to a Sentinel current configuration, to be forced to replicate
-sharp with the right master, is exactly the failover timeout (counting since
-sharp the moment a Sentinel detected the misconfiguration).
-sharp
-sharp - The time needed to cancel a failover that is already in progress but
-sharp did not produced any configuration change (SLAVEOF NO ONE yet not
-sharp acknowledged by the promoted slave).
-sharp
-sharp - The maximum time a failover in progress waits for all the slaves to be
-sharp reconfigured as slaves of the new master. However even after this time
-sharp the slaves will be reconfigured by the Sentinels anyway, but not with
-sharp the exact parallel-syncs progression as specified.
-sharp
-sharp Default is 3 minutes.
sentinel config-epoch mymaster 254
-sharp SCRIPTS EXECUTION
-sharp
-sharp sentinel notification-script and sentinel reconfig-script are used in order
-sharp to configure scripts that are called to notify the system administrator
-sharp or to reconfigure clients after a failover. The scripts are executed
-sharp with the following rules for error handling:
-sharp
-sharp If script exits with "1" the execution is retried later (up to a maximum
-sharp number of times currently set to 10).
-sharp
-sharp If script exits with "2" (or an higher value) the script execution is
-sharp not retried.
-sharp
-sharp If script terminates because it receives a signal the behavior is the same
-sharp as exit code 1.
-sharp
-sharp A script has a maximum running time of 60 seconds. After this limit is
-sharp reached the script is terminated with a SIGKILL and the execution retried.
-sharp NOTIFICATION SCRIPT
-sharp
-sharp sentinel notification-script <master-name> <script-path>
-sharp
-sharp Call the specified notification script for any sentinel event that is
-sharp generated in the WARNING level (for instance -sdown, -odown, and so forth).
-sharp This script should notify the system administrator via email, SMS, or any
-sharp other messaging system, that there is something wrong with the monitored
-sharp Redis systems.
-sharp
-sharp The script is called with just two arguments: the first is the event type
-sharp and the second the event description.
-sharp
-sharp The script must exist and be executable in order for sentinel to start if
-sharp this option is provided.
-sharp
-sharp Example:
-sharp
-sharp sentinel notification-script mymaster /var/redis/notify.sh
-sharp CLIENTS RECONFIGURATION SCRIPT
-sharp
-sharp sentinel client-reconfig-script <master-name> <script-path>
-sharp
-sharp When the master changed because of a failover a script can be called in
-sharp order to perform application-specific tasks to notify the clients that the
-sharp configuration has changed and the master is at a different address.
-sharp
-sharp The following arguments are passed to the script:
-sharp
-sharp <master-name> <role> <state> <from-ip> <from-port> <to-ip> <to-port>
-sharp
-sharp <state> is currently always "failover"
-sharp <role> is either "leader" or "observer"
-sharp
-sharp The arguments from-ip, from-port, to-ip, to-port are used to communicate
-sharp the old address of the master and the new address of the elected slave
-sharp (now a master).
-sharp
-sharp This script should be resistant to multiple invocations.
-sharp
-sharp Example:
-sharp
-sharp sentinel client-reconfig-script mymaster /var/redis/reconfig.sh
sentinel leader-epoch mymaster 254
-sharp Generated by CONFIG REWRITE
sentinel known-slave mymaster 10.0.0.40 6379
sentinel known-slave mymaster 10.0.0.41 6379
sentinel known-sentinel mymaster 10.0.0.40 26379 8ed286e02e81d6946e0d007f569e164a9404c03f
sentinel known-sentinel mymaster 10.0.0.41 26379 8e1529d6b3ce060ea4282d99b671330546d723ab
sentinel current-epoch 254
the difference is that the sentence "sentinel client-reconfig-script mymaster / usr/opt/notify_master.sh" was moved to it after the master-slave switch, and I wrote it on the last line when I wrote it
.Sentinel log (including master-slave switch and original master restart)
3314:X 02 Apr 10:14:07.069 -sharp +sdown master mymaster 10.0.0.41 6379
3314:X 02 Apr 10:14:07.159 -sharp +new-epoch 254
3314:X 02 Apr 10:14:07.161 -sharp +vote-for-leader 8ed286e02e81d6946e0d007f569e164a9404c03f 254
3314:X 02 Apr 10:14:07.679 -sharp +config-update-from sentinel 8ed286e02e81d6946e0d007f569e164a9404c03f 10.0.0.40 26379 @ mymaster 10.0.0.41 6379
3314:X 02 Apr 10:14:07.679 -sharp +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 -sharp +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 -sharp -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
VIP drift script
-sharp!/bin/bash
MASTER_IP=$6 -sharpredisip
LOCAL_IP=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk "{print $2}"|tr -d "addr:"` -sharpip
VIP="10.0.0.31"
NETMASK="24"
INTERFACE="eno16777736" -sharp
if [ ${MASTER_IP} = ${LOCAL_IP} ];then
sudo /usr/sbin/ip addr add ${VIP}/${NETMASK} dev ${INTERFACE} -sharpVIP
sudo /usr/sbin/arping -q -c 3 -A ${VIP} -I ${INTERFACE}
exit 0
else
sudo /usr/sbin/ip addr del ${VIP}/${NETMASK} dev ${INTERFACE} -sharpVIP
exit 0
fi
exit 1