redis哨兵模式
2019-11-26 本文已影响0人
夜醉梦紅尘
理解哨兵模式
哨兵结构图故障转移
多集群
为什么要设置三个哨兵?
类似于nginx的高可用,一个宕机也可继续执行,如果master宕机,三个哨兵可以通过投票来判定master是否真的宕机
按照架构图,配置六台机器
一台主,两台从,三个哨兵
配置主服务器
1.docker run -itd --name redis-server centos
2.docker exec -it redis-server bash
3.yum install redis
4.vi /etc/redis.conf
修改
bind 0.0.0.0 #允许任何主机
daemonize yes #允许后台启动redis
保存退出后可以启动
5./usr.bin/redis-server /etc/redis.conf
6.redis-cli
配置从服务器
方式一(按部就班):
1.docker run -itd --name redis-slave centos
2.docker exec -it redis-slave bash
3.yum install redis
4.vi /etc/redis.conf
修改
bind 0.0.0.0 #允许任何主机
daemonize yes #允许后台启动redis
slaveof redis-server 6379
5./usr.bin/redis-server /etc/redis.conf
6.redis-cli
7.slaveof redis-server 6379
方式二(打包镜像起容器就完事):
1.docker commit redis-server centos-redis
#2.docker image save centos-redis > centos-redis.tar.gz(导出)
#3.docker image load -i centos-redis.tar.gz(导入)
4.docker run -itd --name redis-slave centos-redis
5.docker run -itd --name redis-slave2 centos-redis
6.docker run -itd --name redis-sentinel1 centos-redis
7.docker run -itd --name redis-sentinel2 centos-redis
8.docker run -itd --name redis-sentinel3 centos-redis
补充说明 两个从服务器配置要写入
slaveof redis-server 6379
配置哨兵服务器
vi /etc/redis-sentinel.conf
protected-mode yes
bind 0.0.0.0
daemonize yes
sentinel monitor mymaster 172.17.0.3 6379 2
// 名称为 mymaster ,IP 为 127.0.0.1 端口为 6380
// 最后的 2 是指最少有 2 给 Sentinel 实例同意一台 redis 服务器宕机,才会认为 客观下线。
// sentinel monitor 自定义的主节点名称 主节点的 IP 主节点端口 票数
成功的集群信息
查看哨兵信息
我们配置好的机器以及ip
image.png
停止master机器后,选取了一个从成为了主
redis-cli -h 172.17.0.3 -p 6379 shutdown #停主
redis-cli info replication #查看某个从,它成为了主
image.png
再起这个redis-server机器就成了从服务器
后续补充知识点
哨兵选举master
票数和领导者选举有关系
领导者选举的事件发生,必须满足下面的条件
max(票数, (哨兵的个数 / 2) + 1 ) 个哨兵参加选举
才可以选举出领导者,从而完成故障转移。
例子:
比如有 5 个哨兵, 配置的票数是 4
max(4, (5 / 2) + 1)
max(4, 3.5)
4 最大
结果就是需要 4 个哨兵参与选举才可以。