自动从变主,上面【主从复制】都是为了演示,真正的生产不使用,只有哨兵才是真正要使用的。
因为主从复制,是主写从读模式,主挂了,从就不能进行写入,此时整个集群无主状态。哨兵模式则可以排哨兵节点进行监控,主挂了,就会选出一个从机当做主机,此时整个集群仍可以主写从读,正常使用。
提取说明:碰到一个坑,不知道是不是,整了一天,发现 redis.conf 和 sentinel.conf 不能配置daemonize yes,设置为yes,就启动错误。
官网说明
1 | # 运行 |
配置文件解释
Redis学习笔记–Redis配置文件Sentinel.conf参数配置详解
1 | # Example sentinel.conf |
看懂了配置文件,如果不想修改,可以直接在配置文件只加入一行代码即可
1 | sentinel monitor mymaster 172.22.0.79 6379 2 |
》》》如果想配置多个主机,可写
1 | # 主机1 |
部分命令
1)、循环启动79 80 81
1 | for n in $(seq 79 81); \ |
2)、循环启动5001,5002,5003
1 | for n in $(seq 1 3); \ |
3)、删除代码
1 | docker rm -f redis79 redis80 redis81 redis-sentinel1 redis-sentinel2 redis-sentinel3 |
Docker搭建一主二从三哨
配置一主二从
1)、配置一主二从
1 | # 1. 创建自定义网络,进行测试 |
查看一主二从
2)、查看79, 80, 81状态
1 | # 79 |
启动三个哨兵
3)、启动三个哨兵
1 | # 1. 进入目录 |
查看哨兵状态
4)、查看哨兵状态
1 | # 5001 |
主机79挂了
5)、挂掉主机79,查看哨兵状态
1 | [root@localhost ~]# docker stop redis79 |
哨兵选举主机
6)、稍等一会,等待哨兵检测主机挂了,然后,哨兵进行投票,从80, 81中选取一个当做新的主机
查看哨兵日志,这里只列出了新增的日志信息
1 | # 5001 |
查看80,81状态
7)、再次查看80, 81状态
1 | # 80 |
再启动79
8)、再启动79,看看还会不会成为主机?答:不会,它会以从机方式启动,认80当主机
我愿把这种方式称之为:谋朝篡位
在上面哨兵选举主机的注释中已经解释了,79,81都认80当master
1 | # 79 |
查看哨兵日志
9)、查看哨兵日志,这里只列出了新增的日志信息
1 | # 5001 |
再停止80
10)、如果再进行停止80,道理同上,三个哨兵会继续在当前的从机 79, 81中进行投票选举一个作为主机
1 | [root@localhost ~]# docker stop redis80 |