一,哨兵模式的简介
1,哨兵模式的作用
sentinel是redis实现高可用性的解决方案;有一个或者多个sentinel组成的sentinel系统,会监控主服务器及其下属的从服务器,当监视的主服务器进入下线状态,那么sentinel就会使得从服务器代替主服务器,继续处理客户端发来的写命令;
2,故障转移操作
情况:A为主服务器,B,C,D为从服务器;
a,当A服务器挂了之后,那么sentinel会从B,C,D中挑选一个服务器来作为主服务器,代替A;
b,使得其他从服务器重新新的主服务器,此时故障转移操作完毕;
c,sentinel还会继续监视A服务器,当服务器再次上线之后,就会将A服务器设置为从服务器然后关联现在主服务器;
一,启动并初始化sentinel
1,启动sentinel命令
a,redis-sentinel /path/to/your/sentinel.conf
b,redis-server /path/to/you/sentinel.conf --sentinel
2,启动一个sentinel需要执行的操作
a,初始化服务器;
b,将普通redis服务器使用的代码替换成sentinel专用的代码
c,初始化sentinel状态
d,根据给定的配置文件,初始化sentinel的监视主服务器列表;
e,创建连向主服务器的网络连接
3,初始化服务器
a,解释:因为sentinel本质上是一个运行在特殊模式下的的redis服务器,因此第一步就是初始化服务器;
b,区别:因为sentinel执行的工作和普通redis是不一样的,因此初始化的时候,有些地方有区别;比如:sentinel不会加载rdb文件或者aof文件
4,使用sentinel专用代码
a,解释:因为sentinel做的工作和普通redis做的工作是不一样的,因此会使用专用的代码
b,举例:使用的端口号不同;加载的命令列表也不同;
5,初始化sentinel状态
a,解释:会初始化一个sentinelState类,这个类中保存了所有和sentinel功能相关的状态;
b,sentinelsState的结构