【Redis三】基于Redis sentinel的自动failover主从复制
Redis  /  管理员 发布于 3年前   302
在第二篇中使用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>
博主 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..xiaoB 在
2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..BUG4 在
你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..博主 在
go语言+beego框架中获取get,post请求的所有参数中评论 @ t1 直接在router.go文件中配就ok..Jade 在
如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号