标签:slave 客户 连接 测试 out 规则 两条命令 次数 mil
哨兵(sentinel)是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master 并将所有 slave 连接到新的 master。
疑问:投票规则是啥、
注意:哨兵也是一台 redis 服务器,只是不提供数据服务;通常哨兵配置数量为单数(一般很少配1个,都是3个起步,配单数是为了投票的时候不会出现票数相同的情况)
配置一拖二的主从结构
配置三个哨兵(配置相同,端口不同)
启动哨兵
redis-sentinel sentinel-端口号.conf
查看 master 服务配置,之前都配好了,确认一下
查看 slave 服务配置,之前也配置好了
配置三个哨兵
哨兵配置文件(三个哨兵的配置相同,端口不同),sentinel-26379.conf 配置如下:
# 端口号
port 26379
# 日志等信息存放目录,可以自行改动
dir /tmp
# mymaster 是自己起的名字,就是个称呼可以随便起
# 最后的数字 2 代表:如果有两个哨兵认为 mymaster 主服务器挂掉,则主服务器被判定为挂掉,这个值通常设定为哨兵数量的一半+1
sentinel monitor mymaster 127.0.0.1 6379 2
# 主服务器连接多长时间没响应会被判定为挂掉,默认为30s(下面的3000单位是毫秒)
sentinel down-after-milliseconds mymaster 3000
# 当主机挂掉后,新换上来的主机数据同步并行线程数
parallel-syncs mymaster 1
# 新主机换上来后,数据同步时间超过 180s 就算超时
sentinel failover-timeout mymaster 180000
执行下面两条命令,生成 sentinel-26380.conf 和 sentinel-26381.conf
sed ‘s/26379/26380/g‘ sentinel-26379.conf > sentinel-26380.conf
sed ‘s/26379/26381/g‘ sentinel-26379.conf > sentinel-26381.conf
启动 master 服务
redis-server /redis-4.0.0/conf/redis-6379.conf
启动 slave 服务
redis-server /redis-4.0.0/conf/redis-6380.conf
redis-server /redis-4.0.0/conf/redis-6380.conf
启动哨兵服务
redis-sentinel /redis-4.0.0/conf/sentinel-26379.conf
redis-sentinel /redis-4.0.0/conf/sentinel-26380.conf
redis-sentinel /redis-4.0.0/conf/sentinel-26381.conf
启动完成之后,就可以用哨兵客户端连接服务端进行信息查看了,连接命令和正常 reids 客户端连接命令一样,比如我们要连接端口为26379的哨兵服务:reids-cli -p 26379
,哨兵客户端不支持 get
、set
相关的操作指令,只支持哨兵相关操作指令
测试 master slave 服务有没有问题
在 master 服务器新的命令窗口中,执行redis-cli -p 6379
连接服务,紧接着执行set name zhangsan
;
在 slave 服务器新的命令行窗口中,执行redis-cli -p 6380
连接服务,紧接着执行get name
如果获取到 “zhangsan”,则测试通过。
测试哨兵服务是否有效
将原来的 master 服务停掉,等待30s(因为在哨兵配置文件中设定的时间是30s),后如果重新选出了新的 master 则测试通过。
哨兵在进行主从切换过程中主要经历三个阶段:监控、通知、故障转移
哨兵之间维护一个长期信息对等的阶段
先确认故障
通过投票的方式从多个哨兵中选出真正处理故障的一个哨兵。假如有 5 个哨兵,此时大家都会同时向其余哨兵进行广播,广播的时候会带上自己之前被选举出来的次数等信息,假如我是 2 号哨兵,我先收到 1 号哨兵的消息后,我会投票给 1 号,就这样进行选举,如果一轮没有选出来,还会继续下一轮,直到选出票数最高的为止
上一步中被选出来的哨兵会在多个 slave 中选出一个作为 master
排除掉的:
不在线
响应慢
与原 master 断开时间久的
优先原则:
哨兵向 master(被选出来的 slave) 发送指令
slaveof no one
断开与原 master 的连接slaveof 新master_IP 新master_端口
从哨兵服务的日志中,我们可以看到哨兵是怎么一步步完成这些操作的,每一条日志都写得很好理解。
标签:slave 客户 连接 测试 out 规则 两条命令 次数 mil
原文地址:https://www.cnblogs.com/wuyongqiang/p/12732264.html