Redis集群做法的难点,百万并发客户端「实战」( 三 )
启动容器
docker-compose up -d redis-sentinel-slave2
执行以上命令后 , 就启动了三个哨兵模式的容器
文章插图
这是我们进入容器 , 查看是否redis-sentinel是否在工作 。
文章插图
我们可看到 , 已经与master建立连接 , 通过status=ok可以知道 , master正在正常工作 , 并且有2个从节点和3个哨兵节点 。 现在你再打开sentinel的配置文件 , 会发现发生了改变 。
文章插图
conf文件被重写了 , 并且哨兵模式会自动检测到master的两个slave和另外两个sentinel 。
故障演示
1、使master宕机 , 只需要关闭master的容器即可 。
文章插图
如果此时再去三个哨兵节点里用info sentinel查看信息 。
文章插图
会发现这时候master节点的address信息变了 , 这就说明哨兵模式起作用了 。 但他这里还是显示新的master有两个slave 。 是因为原master节点宕机了 , 一旦它重启 , sentinel就会把它变成新的master节点的slave节点 。 我们可以去172.18.0.6这个容器中看下 。
文章插图
可以用以上docker命令查看容器的IP地址 。 进入容器后 , 还是在redis-cli下用info replication查看信息 。
文章插图
我们可以看到这个slave变成了新的master , 另外一个slave也变成了新master节点的slave 。 如果你查看redis节点的配置文件 , 会发现也被重写了 。这是我们再重启原master节点试试(注意:当他重启成功后 , 就变成了slave节点 , 所以要打开持久化配置) 。
文章插图
当容器重启成功后 , 我们再去新的master节点中使用info replication查看下 。
文章插图
正如我们所料 , 它成为了新的master的slave节点 。 如果你查看原master的配置文件 , 会发现多了
文章插图
最后 , 因为新的master节点是slave节点升级的 , 所以他的持久化配置还是存在的 , 如果你想要关掉它 , 只需要进入redis-cli , 然后执行
文章插图
至此 , 一次redis的master节点故障转移就演示完成了 。 这次演示实现了redis的监控和自动故障转移特性 。
提醒特性是使用的订阅功能 , 需要后端代码开发配合的 。
Cluster模式
部署
- 这里使用ruby部署redis cluster , 首先下载安装 , 只需要在一台服务器上安装即可yum install rubyyum install rubygems
- 下载ruby运行需要的包 , 这里是redis-3.3.5.gem , 安装gem install redis-3.3.5.gem
- 拷贝redis/src/redis-trib.rb 到redis安装目的 , 我这里是/data/service/bin/
- 这里需要6台服务器 , 为了方便 , 每一台服务器上起2个服务 , 端口分别是6379 , 6380
- 修改每一个redis.conf(6台都需要) , 注释掉cluster-enabled yes
- 请启动每一个redis服务
创建启动集群的启动脚本 , 内容如下:/redis-trib.rb create --replicas 1 192.168.25.128:7001 192.168.25.128:7002 192.168.25.128:7003 192.168.25.128:7004 192.168.25.128:7005 192.168.25.128:7006
执行此脚本Creating clusterConnecting to node 192.168.25.128:7001: OKConnecting to node 192.168.25.128:7002: OKConnecting to node 192.168.25.128:7003: OKConnecting to node 192.168.25.128:7004: OKConnecting to node 192.168.25.128:7005: OKConnecting to node 192.168.25.128:7006: OKPerforming hash slots allocation on 6 nodes…Using 3 masters:192.168.25.128:7001192.168.25.128:7002192.168.25.128:7003Adding replica 192.168.25.128:7004 to 192.168.25.128:7001Adding replica 192.168.25.128:7005 to 192.168.25.128:7002Adding replica 192.168.25.128:7006 to 192.168.25.128:7003M: 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3 192.168.25.128:7001slots:0-5460 (5461 slots) masterM: 8cd93a9a943b4ef851af6a03edd699a6061ace01 192.168.25.128:7002slots:5461-10922 (5462 slots) masterM: 2935007902d83f20b1253d7f43dae32aab9744e6 192.168.25.128:7003slots:10923-16383 (5461 slots) masterS: 74f9d9706f848471583929fc8bbde3c8e99e211b 192.168.25.128:7004replicates 2e48ae301e9c32b04a7d4d92e15e98e78de8c1f3S: 42cc9e25ebb19dda92591364c1df4b3a518b795b 192.168.25.128:7005replicates 8cd93a9a943b4ef851af6a03edd699a6061ace01S: 8b1b11d509d29659c2831e7a9f6469c060dfcd39 192.168.25.128:7006replicates 2935007902d83f20b1253d7f43dae32aab9744e6Can I set the above configuration? (type ‘yes’ to accept): yesNodes configuration updated 。。。。。。。。。。 省略 。。。。。。
- 济南|"十四五"济南工业强市主攻这个方向!两大产业集群规模皆达7000亿级
- 3天时间,我是如何解决redis bigkey 删除问题的?
- Django实战016:django中使用redis详解
- 快速安装一个OpenShift 4 准生产集群
- 你不知道的Redis:入门?数据结构?常用指令?
- Python操作Redis大全
- 为什么 Redis 单线程能支撑高并发?
- Martian框架发布 3.0.3 版本,Redis分布式锁
- redis 数据类型详解 以及 redis适用场景场合
- 第23问:3节点MGR集群,能不能将一个节点放在地球另一端?