Redis集群做法的难点,百万并发客户端「实战」( 四 )


启动容器
docker-compose up -d redis-sentinel-slave2执行以上命令后 , 就启动了三个哨兵模式的容器
Redis集群做法的难点,百万并发客户端「实战」文章插图
这是我们进入容器 , 查看是否redis-sentinel是否在工作 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
我们可看到 , 已经与master建立连接 , 通过status=ok可以知道 , master正在正常工作 , 并且有2个从节点和3个哨兵节点 。 现在你再打开sentinel的配置文件 , 会发现发生了改变 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
conf文件被重写了 , 并且哨兵模式会自动检测到master的两个slave和另外两个sentinel 。
故障演示
1、使master宕机 , 只需要关闭master的容器即可 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
如果此时再去三个哨兵节点里用info sentinel查看信息 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
会发现这时候master节点的address信息变了 , 这就说明哨兵模式起作用了 。 但他这里还是显示新的master有两个slave 。 是因为原master节点宕机了 , 一旦它重启 , sentinel就会把它变成新的master节点的slave节点 。 我们可以去172.18.0.6这个容器中看下 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
可以用以上docker命令查看容器的IP地址 。 进入容器后 , 还是在redis-cli下用info replication查看信息 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
我们可以看到这个slave变成了新的master , 另外一个slave也变成了新master节点的slave 。 如果你查看redis节点的配置文件 , 会发现也被重写了 。这是我们再重启原master节点试试(注意:当他重启成功后 , 就变成了slave节点 , 所以要打开持久化配置) 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
当容器重启成功后 , 我们再去新的master节点中使用info replication查看下 。
Redis集群做法的难点,百万并发客户端「实战」文章插图
正如我们所料 , 它成为了新的master的slave节点 。 如果你查看原master的配置文件 , 会发现多了
Redis集群做法的难点,百万并发客户端「实战」文章插图
最后 , 因为新的master节点是slave节点升级的 , 所以他的持久化配置还是存在的 , 如果你想要关掉它 , 只需要进入redis-cli , 然后执行
Redis集群做法的难点,百万并发客户端「实战」文章插图
至此 , 一次redis的master节点故障转移就演示完成了 。 这次演示实现了redis的监控和自动故障转移特性 。
提醒特性是使用的订阅功能 , 需要后端代码开发配合的 。
Cluster模式
部署