【Redis三】基于Redis sentinel的自动failover主从复制
Redis  /  管理员 发布于 4年前   521
在第二篇中使用2.8.17搭建了主从复制,但是它存在Master单点问题,为了解决这个问题,Redis从2.6开始引入sentinel,用于监控和管理Redis的主从复制环境,进行自动failover,即Master挂了后,sentinel自动从从服务器选出一个Master使主从复制集群仍然可以工作,如果Master醒来再次加入集群,只能以从服务器的形式工作。
Redis搭建主从复制的步骤十分简单,以下在Windows上操作。
1. 解压Redis压缩包至E:\devsoftware\redis-2.8.17
2.在Redis目录中复制两份redis.windows.conf,分别命名为redis.windows.conf.slave1,redis.windows.conf.slave2
3.修改redis.conf.slave1文件,
4. 修改redis.conf.slave2文件
5. 启动三个Redis服务器,形成一主两从的主从复制副本集
通过上面的启动过程,可见只需要redis-server一个启动脚本即可,它读取不同的配置文件,来完成初始化
[21684] 25 Nov 20:54:16 * Slave ask for synchronization[21684] 25 Nov 20:54:16 * Starting BGSAVE for SYNC[21684] 25 Nov 20:54:16 * Foregroud saving started by pid 21684[21684] 25 Nov 20:54:17 * DB saved on disk[21684] 25 Nov 20:54:17 * Background saving terminated with suc[21684] 25 Nov 20:54:17 * Synchronization with slave succeeded
[21068] 25 Nov 20:54:15 * Server started, Redis version 2.4.5[21068] 25 Nov 20:54:15 * DB loaded from disk: 0 seconds[21068] 25 Nov 20:54:15 * The server is now ready to accept connections on port[21068] 25 Nov 20:54:16 - DB 0: 1 keys (0 volatile) in 4 slots HT.[21068] 25 Nov 20:54:16 - 0 clients connected (0 slaves), 1180024 bytes in use[21068] 25 Nov 20:54:16 * Connecting to MASTER...[21068] 25 Nov 20:54:16 * MASTER <-> SLAVE sync started[21068] 25 Nov 20:54:16 * Non blocking connect for SYNC fired the event.[21068] 25 Nov 20:54:17 * MASTER <-> SLAVE sync: receiving 19 bytes from master[21068] 25 Nov 20:54:17 * MASTER <-> SLAVE sync: Loading DB in memory[21068] 25 Nov 20:54:17 * MASTER <-> SLAVE sync: Finished with success
port 26389sentinel monitor mymaster 127.0.0.1 6379 1sentinel down-after-milliseconds mymaster 10000sentinel failover-timeout mymaster 180000sentinel parallel-syncs mymaster 1特别注意,在2.6版本还需要额外设置一个属性sentinel can-failover mymaster yes,在2.8版本无需设置这个属性,设置了反而不能启动sentinel服务器
1. down-after-milliseconds
master被当前sentinel实例认定为“失效”(SDOWN)的间隔时间
2. failover-timeout
failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel 将会认为此次failoer失败
3. parallel-syncs
当新master产生时,同时进行slaveof到新master并进行同步复制的slave个数,也就是同时几个slave进行同步。因为在salve执行salveof与新master同步时,将会终止客户端请求,因此这个值需要权衡。此值较大,意味着“集群”终止客户端请求的时间总和和较大,此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据
使用如下命令启动sentinel服务器
redis-server.exe sentinel.conf --sentinel
redis-cli.exe -h 127.0.0.1 -p 26389 info sentinel
得到如下结果,结果表明,当前的master监听端口是6381
E:\devsoftware\redis-2.8.17>redis-cli.exe -h 127.0.0.1 -p 26389 info sentinel# Sentinelsentinel_masters:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0master0:name=mymaster,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=1
E:\devsoftware\redis-2.4.5-win32-win64\64bit>redis-cli.exe -h 127.0.0.1 -p 6379redis 127.0.0.1:6379> set abc 1OKredis 127.0.0.1:6379> get abc"1"redis 127.0.0.1:6379>Ctrl + C
E:\devsoftware\redis-2.4.5-win32-win64\64bit>redis-cli.exe -h 127.0.0.1 -p 6380redis 127.0.0.1:6380> get abc"1"redis 127.0.0.1:6380> ^CE:\devsoftware\redis-2.4.5-win32-win64\64bit>redis-cli.exe -h 127.0.0.1 -p 6381redis 127.0.0.1:6381> get abc"1"redis 127.0.0.1:6381>
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号