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 个哨兵参与选举才可以。
上一篇下一篇

猜你喜欢

热点阅读