redis:sentinel配置及测试

参考原理:

http://www.redis.cn/topics/sentinel.html
https://segmentfault.com/a/1190000002680804


结构:

[plain]  view plain  copy
  1. 192.168.56.159 6379 master  
  2. 192.168.56.159 6380 slave  
  3. 192.168.56.159 26379 sentinel  
  4. 192.168.56.159 26380 sentinel  
[plain]  view plain  copy
  1. 简单测试  


sentinel配置文件

[plain]  view plain  copy
  1. port 26379  
  2. daemonize yes  
  3. logfile "/data/redis/redis_sentinel/26379/sentinel.log"  
  4. dir "/data/redis/redis_sentinel/26379"  
  5.   
  6. sentinel monitor mymaster 192.168.56.159 6379 1  
  7. sentinel down-after-milliseconds mymaster 15000  
  8. sentinel parallel-syncs mymaster 1  
  9. sentinel failover-timeout mymaster 180000  
  10. sentinel auth-pass mymaster xxx  
  11. sentinel client-reconfig-script mymaster /data/scripts/redis.sh  

[plain]  view plain  copy
  1. 启动sentinel  
  2. redis-sentinel sentinel.conf  
  3. 查看日志  
  4. 6622:X 25 Jul 15:14:20.113 # Sentinel runid is 6b52acf5d95573a1f0b629d5aa2e203ca5be8fa9  
  5. 6622:X 25 Jul 15:14:20.113 # +monitor master mymaster 192.168.56.159 6379 quorum 1  
  6. 6622:X 25 Jul 15:14:20.114 * +slave slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  7.   
  8. 再启动26380端口的sentinel,查看26379的日志  
  9. 6622:X 25 Jul 15:18:33.936 * +sentinel sentinel 192.168.56.159:26380 192.168.56.159 26380 @ mymaster 192.168.56.159 6379  
  10.   
  11. 登录任意端口的sentinel查看信息  
  12. [[email protected] scripts]redis-cli -p 26380 info Sentinel  
  13. # Sentinel  
  14. sentinel_masters:1  
  15. sentinel_tilt:0  
  16. sentinel_running_scripts:0  
  17. sentinel_scripts_queue_length:0  
  18. master0:name=mymaster,status=ok,address=192.168.56.159:6379,slaves=1,sentinels=2  

测试:

[plain]  view plain  copy
  1. 停掉slave 6380  
  2. 6622:X 25 Jul 15:21:35.262 # +sdown slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  3.   
  4. 启动slave 6380  
  5. 6622:X 25 Jul 15:22:36.074 * +reboot slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  6. 6622:X 25 Jul 15:22:36.130 # -sdown slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  7.   
  8. 停掉sentinel 26379  
  9. 6666:X 25 Jul 15:24:03.631 # +sdown sentinel 192.168.56.159:26379 192.168.56.159 26379 @ mymaster 192.168.56.159 6379  
  10. 启动sentinel 26379  
  11. 6666:X 25 Jul 15:24:35.313 # -sdown sentinel 192.168.56.159:26379 192.168.56.159 26379 @ mymaster 192.168.56.159 6379  
  12. 6666:X 25 Jul 15:24:37.315 * -dup-sentinel master mymaster 192.168.56.159 6379 #duplicate of 192.168.56.159:26379 or e64490cfd0f4e1cb2c3a7be53657a00c68defe99  
  13. 6666:X 25 Jul 15:24:37.315 * +sentinel sentinel 192.168.56.159:26379 192.168.56.159 26379 @ mymaster 192.168.56.159 6379  
  14.   
  15. 停掉master 6379  
  16. sentinel-26379日志  
  17. 6732:X 25 Jul 15:28:21.904 # +sdown master mymaster 192.168.56.159 6379  
  18. 6732:X 25 Jul 15:28:21.904 # +odown master mymaster 192.168.56.159 6379 #quorum 1/1  
  19. 6732:X 25 Jul 15:28:21.904 # +new-epoch 1  
  20. 6732:X 25 Jul 15:28:21.905 # +try-failover master mymaster 192.168.56.159 6379  
  21. 6732:X 25 Jul 15:28:21.916 # +vote-for-leader e64490cfd0f4e1cb2c3a7be53657a00c68defe99 1  
  22. 6732:X 25 Jul 15:28:21.928 # 192.168.56.159:26380 voted for e64490cfd0f4e1cb2c3a7be53657a00c68defe99 1  
  23. 6732:X 25 Jul 15:28:21.993 # +elected-leader master mymaster 192.168.56.159 6379  
  24. 6732:X 25 Jul 15:28:21.993 # +failover-state-select-slave master mymaster 192.168.56.159 6379  
  25. 6732:X 25 Jul 15:28:22.085 # +selected-slave slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  26. 6732:X 25 Jul 15:28:22.085 * +failover-state-send-slaveof-noone slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  27. 6732:X 25 Jul 15:28:22.161 * +failover-state-wait-promotion slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  28. 6732:X 25 Jul 15:28:22.982 # +promoted-slave slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  29. 6732:X 25 Jul 15:28:22.982 # +failover-state-reconf-slaves master mymaster 192.168.56.159 6379  
  30. 6732:X 25 Jul 15:28:23.008 # +failover-end master mymaster 192.168.56.159 6379  
  31. 6732:X 25 Jul 15:28:23.008 # +switch-master mymaster 192.168.56.159 6379 192.168.56.159 6380  
  32. 6732:X 25 Jul 15:28:23.008 * +slave slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  33. 6732:X 25 Jul 15:28:38.039 # +sdown slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  34. sentinel-26380日志  
  35. 6666:X 25 Jul 15:28:21.924 # +new-epoch 1  
  36. 6666:X 25 Jul 15:28:21.927 # +vote-for-leader e64490cfd0f4e1cb2c3a7be53657a00c68defe99 1  
  37. 6666:X 25 Jul 15:28:21.933 # +sdown master mymaster 192.168.56.159 6379  
  38. 6666:X 25 Jul 15:28:21.933 # +odown master mymaster 192.168.56.159 6379 #quorum 1/1  
  39. 6666:X 25 Jul 15:28:21.934 # Next failover delay: I will not start a failover before Mon Jul 25 15:34:22 2016  
  40. 6666:X 25 Jul 15:28:23.019 # +config-update-from sentinel 192.168.56.159:26379 192.168.56.159 26379 @ mymaster 192.168.56.159 6379  
  41. 6666:X 25 Jul 15:28:23.019 # +switch-master mymaster 192.168.56.159 6379 192.168.56.159 6380  
  42. 6666:X 25 Jul 15:28:23.019 * +slave slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  43. 6666:X 25 Jul 15:28:38.099 # +sdown slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  44.   
  45. slave 6380状态改变  
  46. 原状态  
  47. # Replication  
  48. role:slave  
  49. master_host:192.168.56.159  
  50. master_port:6379  
  51. master_link_status:up  
  52. 现状态  
  53. [[email protected] redis6380]redis-cli -p 6380 -a fangyali info Replication  
  54. # Replication  
  55. role:master  
  56. connected_slaves:0  
  57. master_repl_offset:0  
  58.   
  59.   
  60. 在启动原master 6379  
  61. 6732:X 25 Jul 15:34:23.247 # -sdown slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  62. 6732:X 25 Jul 15:34:33.185 * +convert-to-slave slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  63. 查看信息(原master配置文件masterauth 没有打开,第一次切换master_link_status:down)  
  64. redis-cli -p 6379 -a fangyali info Replication    
  65. # Replication  
  66. role:slave  
  67. master_host:192.168.56.159  
  68. master_port:6380  
  69. master_link_status:up  


故障转移

[plain]  view plain  copy
  1. 一次故障转移操作由以下步骤组成:  
  2. 发现主服务器已经进入客观下线状态。  
  3. 对我们的当前纪元进行自增(详情请参考 Raft leader election ), 并尝试在这个纪元中当选。  
  4. 如果当选失败, 那么在设定的故障迁移超时时间的两倍之后, 重新尝试当选。 如果当选成功, 那么执行以下步骤。  
  5. 选出一个从服务器,并将它升级为主服务器。  
  6. 向被选中的从服务器发送 SLAVEOF NO ONE 命令,让它转变为主服务器。  
  7. 通过发布与订阅功能, 将更新后的配置传播给所有其他 Sentinel , 其他 Sentinel 对它们自己的配置进行更新。  
  8. 向已下线主服务器的从服务器发送 SLAVEOF 命令, 让它们去复制新的主服务器。  
  9. 当所有从服务器都已经开始复制新的主服务器时, 领头 Sentinel 终止这次故障迁移操作。  
  10.   
  11. 故障转移(failover)的第一步,就是选出新的master,大致的筛选流程为:  
  12. 1. 删除列表中所有处于下线或者断线状态的slave  
  13. 2. 删除列表中所有最近五秒内没有回复过领头sentinel的INFO命令的slave  
  14. 3. 删除所有与已下线主服务器连接断开超过down-after-milliseconds * 10毫秒的slave(确保slave没有过早与master断开,副本比较新)  
  15. 4. 根据slave优先级选择  
  16. 5. 如果优先级相同,选择复制偏移量最大的slave  
  17. 6. 如果都相同,按照run_id排序,选出run_id最小的slave  


有一次failover会失败,然后等待2*failover-timeout 后failover成功,原因?

[plain]  view plain  copy
  1. sentinel-26379日志  
  2. 6732:X 25 Jul 18:40:37.402 # +sdown master mymaster 192.168.56.159 6380  
  3. 6732:X 25 Jul 18:40:37.402 # +odown master mymaster 192.168.56.159 6380 #quorum 1/1  
  4. 6732:X 25 Jul 18:40:37.403 # +new-epoch 2  
  5. 6732:X 25 Jul 18:40:37.403 # +try-failover master mymaster 192.168.56.159 6380  
  6. 6732:X 25 Jul 18:40:37.455 # +vote-for-leader e64490cfd0f4e1cb2c3a7be53657a00c68defe99 2  
  7. 6732:X 25 Jul 18:40:37.456 # 192.168.56.159:26380 voted for de9a51fdc0ae15c8bc09cbde6036209d63c44988 2  
  8. 6732:X 25 Jul 18:40:48.162 # -failover-abort-not-elected master mymaster 192.168.56.159 6380  
  9. 6732:X 25 Jul 18:40:48.239 # Next failover delay: I will not start a failover before Mon Jul 25 18:46:38 2016  
  10. 6732:X 25 Jul 18:46:38.184 # +new-epoch 3  
  11. 6732:X 25 Jul 18:46:38.184 # +try-failover master mymaster 192.168.56.159 6380  
  12. 6732:X 25 Jul 18:46:38.188 # +vote-for-leader e64490cfd0f4e1cb2c3a7be53657a00c68defe99 3  
  13. 6732:X 25 Jul 18:46:38.223 # 192.168.56.159:26380 voted for e64490cfd0f4e1cb2c3a7be53657a00c68defe99 3  
  14. 6732:X 25 Jul 18:46:38.252 # +elected-leader master mymaster 192.168.56.159 6380  
  15. 6732:X 25 Jul 18:46:38.252 # +failover-state-select-slave master mymaster 192.168.56.159 6380  
  16. 6732:X 25 Jul 18:46:38.324 # +selected-slave slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  17. 6732:X 25 Jul 18:46:38.324 * +failover-state-send-slaveof-noone slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  18. 6732:X 25 Jul 18:46:38.400 * +failover-state-wait-promotion slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  19. 6732:X 25 Jul 18:46:38.559 # +promoted-slave slave 192.168.56.159:6379 192.168.56.159 6379 @ mymaster 192.168.56.159 6380  
  20. 6732:X 25 Jul 18:46:38.560 # +failover-state-reconf-slaves master mymaster 192.168.56.159 6380  
  21. 6732:X 25 Jul 18:46:38.647 # +failover-end master mymaster 192.168.56.159 6380  
  22. 6732:X 25 Jul 18:46:38.647 # +switch-master mymaster 192.168.56.159 6380 192.168.56.159 6379  
  23. 6732:X 25 Jul 18:46:38.647 * +slave slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  24. 6732:X 25 Jul 18:46:53.670 # +sdown slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  25. sentinel-26380日志  
  26. 6666:X 25 Jul 18:40:37.413 # +sdown master mymaster 192.168.56.159 6380  
  27. 6666:X 25 Jul 18:40:37.413 # +odown master mymaster 192.168.56.159 6380 #quorum 1/1  
  28. 6666:X 25 Jul 18:40:37.413 # +new-epoch 2  
  29. 6666:X 25 Jul 18:40:37.413 # +try-failover master mymaster 192.168.56.159 6380  
  30. 6666:X 25 Jul 18:40:37.454 # +vote-for-leader de9a51fdc0ae15c8bc09cbde6036209d63c44988 2  
  31. 6666:X 25 Jul 18:40:37.456 # 192.168.56.159:26379 voted for e64490cfd0f4e1cb2c3a7be53657a00c68defe99 2  
  32. 6666:X 25 Jul 18:40:48.312 # -failover-abort-not-elected master mymaster 192.168.56.159 6380  
  33. 6666:X 25 Jul 18:40:48.403 # Next failover delay: I will not start a failover before Mon Jul 25 18:46:38 2016  
  34. 6666:X 25 Jul 18:46:38.195 # +new-epoch 3  
  35. 6666:X 25 Jul 18:46:38.221 # +vote-for-leader e64490cfd0f4e1cb2c3a7be53657a00c68defe99 3  
  36. 6666:X 25 Jul 18:46:38.222 # Next failover delay: I will not start a failover before Mon Jul 25 18:52:38 2016  
  37. 6666:X 25 Jul 18:46:38.654 # +config-update-from sentinel 192.168.56.159:26379 192.168.56.159 26379 @ mymaster 192.168.56.159 6380  
  38. 6666:X 25 Jul 18:46:38.654 # +switch-master mymaster 192.168.56.159 6380 192.168.56.159 6379  
  39. 6666:X 25 Jul 18:46:38.658 * +slave slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  
  40. 6666:X 25 Jul 18:46:53.674 # +sdown slave 192.168.56.159:6380 192.168.56.159 6380 @ mymaster 192.168.56.159 6379  

你可能感兴趣的:(redis)