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节点

你可能感兴趣的:(Redis 通过哨兵实现主从自动切换)