redis哨兵
1.什么叫做redis哨兵
第一次看见这个“哨兵”这个词语,感觉听起来非常牛逼,是看门的,放哨的,对的,就是这个意思。由于redis如果进行主从复制的情况下,redis一般为一主多从的机构条件下,由于一个主节点负责读写操作,其他从节点从他这里进行复制,从而导致主节点存在风险,比如主节点出现了宕机,导致,其整个redis集群无法正常工作,从而,redis高可用则出现问题,从而redis哨兵腾空出世,专门来收拾这个残局的。作为一个放哨的士兵,来监控主服务是否正常工作。
- 哨兵原理
其实redis哨兵,其实也是一个redis实例,只是他在启动方式上不一样。当redis哨兵启动之后呢会对数据节点和其余的sentinel节点进行监控,当发现先节点不可达的时候,会对节点做下线标识。其中分为两种情况
- 主节点不可达:会与其他的哨兵节点进行协商,当大多数的sentinel节点都认为这个主节点不可达的时候,它们会选举出一个Sentinel节点来完成自动故障转移的工作,同事会将这个变化实时通知给redis的应用方,整个过程完全是自动的。
- 从节点不可达:会将该节点进行标记下线操作。
- 故障步骤
- 主节点宕机
- Sentinel监控主节点出现异常
- 多个Sentinel监控发现主节点异常,从而开始选举主Sentinel作为领导
- 领导节点执行故障转移,其中包括通知redis客户端,各种从服务器。
- 重新构建服务器架构信息
- 启动服务
- 编辑Sentinel.conf文件
# 每一个哨兵都会有一个port
port 26379
# 设置为后台保护进行
daemonize yes
# 设置哨兵工作目录
dir /opt/soft/redis/data
# 设置监控主服务器
# sentinel monitor 名字 ip 端口 判断宕机需要几个哨兵同意
sentinel monitor mymaster 127.0.0.1 6379 2
# 用于哦按吨redis数据节点和其余的sentinel是否可达,如果超过了则说明不可达
sentinel down-after-millisends mymaster 30000
# 用来配置redis故障转移后从节点向主节点复制的最大节点个数
sentinel parallel-syncs mymaster 1
# 故障转移超时时间,用于故障转移的各个节点,
sentinel failover-timeout mymaster 1800000
启动
# 第一种方式
redis-sentinel Sentinel.conf
# 第二种方式
redis-server sentinel.conf --sentinel
- 部署须知
不应将所有的机器放在同一个物理机器上。