-
Notifications
You must be signed in to change notification settings - Fork 93
主备实现原理
house edited this page Dec 30, 2021
·
17 revisions
- Pod分布在不同的物理机,每个Pod包含redis-docker(2POD)或sentinel-docker(3POD)
- 应用只需要配置redis VIP(ClusterIP)访问Redis集群
- redis/sentinel在容器起来时执行deploy程序初始化加入集群
- 采用kubernetes有状态副本集,启动顺序遵顺,Pod有序启动,Sentinel启动后Redis容器启动
- 调度尽量打散,可支持SSD可选,IO可控制
几点注意:
- 前段请求路由不引入代理而只由service根据readniess判断master info是否为master自主进行切换
- 客户端连接只配置vip地址,没有使用传统的sentinel连接方式是因为在实际线上运维过程中sentinel全挂而主备节点IP也发生变化的情况下客户端watch机制会丢失真正的master节点地址信息而无法自愈,只能通过重新应用主动去拉取配置
- redis容器需要等待sentinel容器副本集全部起来启动,对空的sentinel进行注册
- 对于非空注册信息的sentinel,如果注册信息异常,redis容器启动的时候redis deploy那么会清空sentinel的信息进行新注册,如果是ok的注册信息那么deploy会找到master节点作为slave加入
- 当遇到灾难性主备节点同时挂的情况,第一个启动的master节点会拉取远端的备份数据加载启动
- sentinel单点故障的时候会从其他sentinel获取master节点信息注册,而所有sentinel故障时会判断master节点是否存在而注册