先大概说下实践中该怎么配,再说下项目中比较好玩的事情。
配置说明
配置其实很简单。
- 开启redis主从结构。
- 打开多个sentinel监控master,sentinel组名要统一,注意sentinel投票数目的设置。
如果需要同步两个master-slave,可以考虑把一个结构的master变为另一个结构的slave。
同步完后注意斩断sentinel的监控关系,这里有两种方案。
- 重启sentinel并删除sentinel中自动追加的结构关系。
- 使用不同的sentinel group。
好玩的事情
在玩redis sentinel的时候发现了两个比较好玩的东西。
- 当master down了以后,sentinel会选出新的master,然后接着更新其他sentinel的配置和redis instance,如果在此期间原来的master又发生了重启,sentinel的选择机制就会发生混乱。
这时会会引起一个好玩的现象,就是所有的instance都会认为自己是master,一段时间后就会发现master在所有的instance中相互切换。
这是我在尝试redis的时候发现的问题,可能是由于做实验没在乎sentinel是否确实选择结束,急着重启redis看结果导致的。 - 如果在同一套master-slave结构配置多条sentinel-group会有意外的惊喜哦,多个sentinel组同时作用,会搞得redis一团糟。
最后再说一句
看sentinel的是时候注意sentinel配置中自动追加的条目,要搞清slave的instance和sentinel之间的相互识别。
下面用markdown做的图有点小问题,第三行右边的no分支无法显示,不知道是不是CSDN的bug。分支no的内容就是sentinel会每五分钟重启一次。