Redis Sentinel实现Failover

Redis Sentinel实现Failover

redis版本:2.8.17
 
服务器规划:
10.50.13.34(6379 master)
10.50.13.35(6379 slave)
10.50.13.36(6379 slave)
10.50.13.37(6379 slave)
 
一、安装redis
tar zxf redis-2.8.17.tar.gz
cd redis-2.8.17
make
make install
mv redis-2.8.17 /app/sinova/redis
cd /app/sinova/redis
mkdir bin conf rdb log
mv redis.conf sentinel.conf conf
find -maxdepth 1 -type f -delete
cd src
mv mkreleasehdr.sh redis-benchmark redis-sentinel redis-server redis-cli redis-check-aof redis-check-dump ../bin/
 
二、配置redis
redis.conf配置文件修改如下内容:
master配置:
daemonize yes
pidfile /app/sinova/redis/redis.pid 
logfile  /app/sinova/redis/log/redis.log
dir /app/sinova/redis/rdb

slave配置:

daemonize yes
pidfile /app/sinova/redis/redis.pid 
logfile  /app/sinova/redis/log/redis.log
dir /app/sinova/redis/rdb
slaveof 10.50.13.34 6379

 
三、配置sentinel

daemonize yes
logfile “/app/sinova/redis/log/sentinel.log”
 
sentinel monitor mymaster 10.50.13.34 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1
 
四、启动redis
先启动master,然后再启动slave,命令相同,如下:
/app/sinova/redis/bin/redis-server /app/sinova/redis/conf/redis.conf
 
启动后查看主从状态:
 redis-cli info Replication

# Replication

role:master

connected_slaves:3


slave0:ip=10.50.13.35,port=6379,state=online,offset=29,lag=0
slave1:ip=10.50.13.36,port=6379,state=online,offset=29,lag=0
slave2:ip=10.50.13.37,port=6379,state=online,offset=29,lag=0


master_repl_offset:29

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:2

repl_backlog_histlen:28
 
五、启动sentinel
先启动master,然后再启动slave,命令相同,如下:
/app/sinova/redis/bin/redis-sentinel /app/sinova/redis/conf/sentinel.conf
 
在master上查看/app/sinova/redis/log/sentinel.log   #slave下也有此日志,可以看到内容有变化
$ cat sentinel.log

                _._                                                  

           _.-“__ ”-._                                             

      _.-“    `.  `_.  ”-._           Redis 2.8.17 (00000000/0) 64 bit

  .-“ .-“`.  “`\/    _.,_ ”-._                                   

 (    ‘      ,       .-`  | `,    )     Running in sentinel mode

 |`-._`-…-` __…-.“-._|’` _.-‘|     Port: 26379

 |    `-._   `._    /     _.-‘    |     PID: 16995

  `-._    `-._  `-./  _.-‘    _.-‘                                   

 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  

 |    `-._`-._        _.-‘_.-‘    |           
http://redis.io        

  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   

 |`-._`-._    `-.__.-‘    _.-‘_.-‘|                                  

 |    `-._`-._        _.-‘_.-‘    |                                  

  `-._    `-._`-.__.-‘_.-‘    _.-‘                                   

      `-._    `-.__.-‘    _.-‘                                       

          `-._        _.-‘                                           

              `-.__.-‘                                               

[16995] 15 Sep 15:30:11.226 # Sentinel runid is cac946f212073a0e7c353e058dc7c83c9c62a161

[16995] 15 Sep 15:30:11.226 # +monitor master mymaster 10.50.13.34 6379 quorum 2

[16995] 15 Sep 15:30:11.228 * +slave slave 10.50.13.35:6379 10.50.13.35 6379 @ mymaster 10.50.13.34 6379

[16995] 15 Sep 15:30:11.228 * +slave slave 10.50.13.36:6379 10.50.13.36 6379 @ mymaster 10.50.13.34 6379

[16995] 15 Sep 15:30:11.228 * +slave slave 10.50.13.37:6379 10.50.13.37 6379 @ mymaster 10.50.13.34 6379

[16995] 15 Sep 15:30:13.264 * +sentinel sentinel 10.50.13.35:26379 10.50.13.35 26379 @ mymaster 10.50.13.34 6379

[16995] 15 Sep 15:30:13.306 * +sentinel sentinel 10.50.13.37:26379 10.50.13.37 26379 @ mymaster 10.50.13.34 6379

[16995] 15 Sep 15:30:13.312 * +sentinel sentinel 10.50.13.36:26379 10.50.13.36 26379 @ mymaster 10.50.13.34 6379

 
 
六、测试
停掉master上的redis
$ redis-cli shutdown
 
查看日志:
[16995] 15 Sep 15:33:54.131 # +sdown master mymaster 10.50.13.34 6379
[16995] 15 Sep 15:33:54.139 # +new-epoch 1
[16995] 15 Sep 15:33:54.145 # +vote-for-leader c6e609a1978e5cdb68ead8983ba88568aa85180d 1
[16995] 15 Sep 15:33:54.215 # +odown master mymaster 10.50.13.34 6379 #quorum 4/2
[16995] 15 Sep 15:33:54.215 # Next failover delay: I will not start a failover before Tue Sep 15 15:35:54 2015
[16995] 15 Sep 15:33:55.339 # +config-update-from sentinel 10.50.13.36:26379 10.50.13.36 26379 @ mymaster 10.50.13.34 6379
[16995] 15 Sep 15:33:55.339 # +switch-master mymaster 10.50.13.34 6379 10.50.13.36 6379
[16995] 15 Sep 15:33:55.339 * +slave slave 10.50.13.37:6379 10.50.13.37 6379 @ mymaster 10.50.13.36 6379
[16995] 15 Sep 15:33:55.344 * +slave slave 10.50.13.35:6379 10.50.13.35 6379 @ mymaster 10.50.13.36 6379
[16995] 15 Sep 15:33:55.350 * +slave slave 10.50.13.34:6379 10.50.13.34 6379 @ mymaster 10.50.13.36 6379
 
可以看到新的master为10.50.13.36

Redis Sentinel实现Failover
 
原来的master恢复后,会加入slave的行列:
查看sentinel.log:
[16995] 15 Sep 15:40:33.897 # -sdown slave 10.50.13.34:6379 10.50.13.34 6379 @ mymaster 10.50.13.36 6379
 
Redis Sentinel实现Failover
 
Sentinel在实现Failover过程中,会自动修改redis.conf和sentinel.conf的配置。

转载于:https://www.cnblogs.com/Eivll0m/p/4810507.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109330.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2020最新版MySQL数据库面试题(一)

    2020最新版MySQL数据库面试题(一)

    2022年2月14日
    41
  • mysql 驱动jar包下载_mysql驱动jar包

    mysql 驱动jar包下载_mysql驱动jar包mysql驱动就是赋值外界与数据的连接接口。请注意JDBC连接MySql,其驱动程序与MySQL的版本有关!!要使用相匹配的驱动程序,并将驱动程序加到CLASSPATH中。在系FTP服务器上,/数据库/MySql目录下的驱动程序如下:MySql5.0 驱动程序包为mysql-connector-java-5.0.4.zip(内有.jar文件即驱动程序)MySql4.0 驱动程序为mysqldriv…

    2022年5月22日
    95
  • SSM框架介绍「建议收藏」

    SSM框架介绍「建议收藏」1、SSM框架简介SSM框架是SpringMVC,Spring和Mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,Controller层,Service层,DAO层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理,Mybatis作为数据对象的持久化引擎。…

    2022年7月12日
    23
  • 超硬核!小白读了这篇文章,就能在算法圈混了[通俗易懂]

    作为一只超级硬核的兔子,从来不给你说废话,只有最有用的干货!这些神级算法送给你目录第一节1.1bogo排序1.2位运算1.3打擂台1.4morris遍历第二节2.1睡眠排序2.2会死的兔子2.3矩阵快速幂2.4摔手机/摔鸡蛋时空复杂度目录二分尝试较优的策略归纳表达式写出暴力递归改为动态规划压缩空间四边形不等式优化换一种思路最优解测试:第三节3.1斐波那契之美3.2桶排序3.3快速排序…

    2022年4月17日
    49
  • 概率的定义与性质_概率有哪些性质

    概率的定义与性质_概率有哪些性质概率的统计学定义:概率的公理化公式:

    2022年8月31日
    2
  • django菜鸟教程用pycharm_runoob菜鸟教程官网

    django菜鸟教程用pycharm_runoob菜鸟教程官网Django安装以及简单项目创建(被django支配的恐惧)django简介python中有许多web框架,django无疑是一位S级选手,django是一个开放源代码的web框架,是由python写成的一个web框架.安装在安装django的同时,怎么能没有python呢django和python不可分割的一对基友,路径如下:python下载路径:https://www.pytho…

    2025年10月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号