2017-10-16 54 views
0

我已经建立了一个redis主 - 从集群监控Linux上的debian(使用拉伸backports:redis v4.0.2)HA。redis sentinel客户端重新配置脚本没有触发

Sentinel工作正常,当我关闭三个节点中的一个时,另一个节点被选为新的主节点。

现在我尝试设置一个reconfig脚本来通知新主设备的客户端。

我创建在/var/redis/test.sh可读和运行(chmod一个+ RX)脚本然后我在/etc/redis/sentinel.conf加入这样的线在我3个前哨淋巴结:

sentinel client-reconfig-script mymaster /var/redis/test.sh 

看着一个sentinel master mymaster命令哨兵配置,我可以证实,客户端重新配置脚本很好配置:

10.2.0.6:26379> sentinel master mymaster 
... 
43) "client-reconfig-script" 
44) "/var/redis/test.sh" 

然而,当发生故障转移时,我重新配置脚本不会被触发。我想知道为什么。这里是哨兵日志:

29765:X 16 Oct 23:03:11.724 # Executing user requested FAILOVER of 'mymaster' 
29765:X 16 Oct 23:03:11.724 # +new-epoch 480 
29765:X 16 Oct 23:03:11.724 # +try-failover master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.777 # +vote-for-leader 5a0661a5982701465a387b4872cfa4c576edbd38 480 
29765:X 16 Oct 23:03:11.777 # +elected-leader master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.777 # +failover-state-select-slave master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.854 # +selected-slave slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.854 * +failover-state-send-slaveof-noone slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:11.910 * +failover-state-wait-promotion slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:12.838 # +promoted-slave slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:12.838 # +failover-state-reconf-slaves master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:12.893 * +slave-reconf-sent slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.865 * +slave-reconf-inprog slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.865 * +slave-reconf-done slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.937 # +failover-end master mymaster 10.2.0.7 6379 
29765:X 16 Oct 23:03:13.937 # +switch-master mymaster 10.2.0.7 6379 10.2.0.8 6379 
29765:X 16 Oct 23:03:13.937 * +slave slave 10.2.0.6:6379 10.2.0.6 6379 @ mymaster 10.2.0.8 6379 
29765:X 16 Oct 23:03:13.937 * +slave slave 10.2.0.7:6379 10.2.0.7 6379 @ mymaster 10.2.0.8 6379 

我可以有一个丢失的配置选项?

附加信息:我在几个星期前(Redis的4.0.1)安装了一个类似的架构,它的工作(我的意思是这是我的射击脚本重新配置),但我没有保存配置,所以我可以有错过了什么。或者...可能是v4.0.2中引入的错误?

回答

0

我终于解决了我的问题。

的“reconfig.sh”剧本由故障转移解雇,但我并没有意识到这是因为:

  1. 定点记录(即使是在调试模式)是不是该重新配置脚本执行很清楚
  2. reconfig脚本似乎运行在chroot-like环境,这使我的测试不相关!

下面是当一个客户端重新配置脚本触发哨兵日志(“脚本小孩”行):

32711:X 18 Oct 16:06:42.615 # +failover-state-reconf-slaves master mymaster 10.2.0.6 6379 
32711:X 18 Oct 16:06:42.671 * +slave-reconf-sent slave 10.2.0.8:6379 10.2.0.8 6379 @ mymaster 10.2.0.6 6379 
32711:X 18 Oct 16:06:42.671 . +script-child 397 
32711:X 18 Oct 16:06:42.813 . -script-child 397 0 0 

然后我reconfig.sh是这样的:

#!/bin/bash 
touch /tmp/reconfig 
exit 0 

=>当Sentinel调用此脚本时,不要期望找到/ tmp/reconfig文件!

但是,我仍然不知道它在内部是如何工作的......

相关问题