Redis 通过哨兵实现主从自动切换

  • 场景
    假如我们采用1主1从的方式搭建redis的backup,显然这样没有什么作用。因为无论是主还是从服务器下线,我们都得手动恢复,才能使用网站正常使用。是否可以让redis做到自动的failover呢?是可以的,我们可以使用redis sentinel来做到这一点,当master下线,sentinel可以将slave节点升级为master。用户访问之前master节点时,将自己切换访问为slave节点,从而实现故障自动转移。
    当故障的master节点恢复健康,上线后sentinel将把故障的master节点降级,成为新的master节点的一个slave节点。
    下面我们看看需要做的一些操作

1 服务器角色规划

role ip
sentinel 10.10.10.1
master 10.10.10.2
slave 10.10.10.3

2 master配置
注意,master的password需要与slave的password保持一致,这里我们演示master设置了密码的配置。编缉master的配置文件,加入以下配制项目

bind 10.10.10.2
protected-mode yes
port 6379
daemonize yes
requirepass abcd
slaveof 10.10.10.3 6379

3 slave配置

bind 10.10.10.3
port 6379
daemonize yes
requirepass abcd
masterauth "abcd"

4 sentinel配置

bind 10.10.10.1
protected-mode yes
port 6379
daemonize yes
sentinel monitor master_server 10.10.10.2 6379 1
sentinel down-after-milliseconds master_server 5000
sentinel failover-timeout master_server 15000
sentinel auth-pass master_server abcd

5 启动master、slave、sentinel
master与slave启动

[root@local bin]#./redis-server 配置文件路径

sentinel的启动与master、slave略有不同
[root@local bin]#./redis-server 配置文件路径 --sentinel

至此,1主1从1哨兵的主从自动切换灾备部署完成。


  • 验证
    登录master服务器
[root@local bin]#./redis-cli -h 10.10.10.2 -p 6379 -a abcd
10.10.10.2:6379> INFO
... ...
# Replication
role:master
connected_slaves:1
slave0:ip=10.10.10.3,port=6379,state=online,offset=426034,lag=1
... ...

如果使用命令SHUTDOWN将master下线,则登录slave使用INFO命令查看,可以看到slave的role将从slave转变成master。
当故障的master恢复后,将成为新的master的一个slave节点

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 故障转移 接着上章构建的sentinel网络构建后分析sentinel的故障转移。sentinel本身做为redi...
    ben1988阅读 3,465评论 1 0
  • 基本概念 第一,作为主节点的一个备份,一旦主节点出了故障不可达的情况,从节点可以作为后备“顶”上来,并且保证数据尽...
    何何与呵呵呵阅读 584评论 0 1
  • Redis-哨兵机制 一、主从复制的问题我们讲了 Redis 复制的主要内容,但 Redis 复制有一个缺点,当主...
    心似南风阅读 2,904评论 1 1
  • 1. Redis Sentinel 简介 redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将...
    CoderJed阅读 2,839评论 0 11
  • 清晨,一抹晨曦撒射在高高的山岗上,温柔的把一股股寒气驱散。 山丘没有鸟鸣。只有榕树在我身边散发出淡淡的幽香。我奇怪...
    王静_5a1d阅读 190评论 0 0