前言:
redis 哨兵架构,其实是在 主从架构 基础上延伸的,sentinel 哨兵模式的 redis 实例,不提供读写操作的。实例相互之间,会感知到。
一、 复制redis.sentinel 文件
code:
cp sentinel.conf config/sentinel-26379.conf
cp sentinel.conf config/sentinel-26380.conf
cp sentinel.conf config/sentinel-26381.conf
二、修改 sentinel-26381.conf 文件
port 26379
daemonize yes # 改为后台启动
pidfile “/var/run/redis‐sentinel‐26379.pid”
logfile “26379.log”
dir “/usr/local/redis‐5.0.3/data”
#sentinel monitor <master‐redis‐name> <master‐redis‐ip> <master‐redis‐port> < quorum>
#mymaster这个名字随便取,客户端访问时会用到
#quorum是一个数字,指明当有多少个sentinel认为一个master失效时(值一般为:sentinel总数/2 +1),master才算真正失效
sentinel monitor mymaster 192.168.0.60 6379 2
三、修改 sentinel-26380.conf 文件和 sentinel-26379.conf 文件
与上面一样的更改。就是端口号不同。
四、启动sentinel哨兵实例
分别启动26379、26380、26381
code:
src/redis‐sentinel config/sentinel‐26379.conf
src/redis‐sentinel config/sentinel‐26380.conf
src/redis‐sentinel config/sentinel‐26381.conf
五、查看sentinel 的info信息
src/redis‐cli ‐p 26379
127.0.0.1:26379>info
可以看到Sentinel 的info里已经识别出了redis的 从节点信息。
六、查看 sentinel-26379.conf 文件
sentinel 集群都启动完毕后,会将哨兵集群的元数据信息写入所有sentinel的配置文件里去(追加在文件的最下面),我们查看下如下配置文件sentinel-26379.conf,如下所示:
#代表redis主节点的从节点信息
sentinel known‐replica mymaster 192.168.0.60 6380
#代表redis主节点的从节点信息
sentinel known‐replica mymaster 192.168.0.60 6381
#代表感知到的其它哨兵节点
sentinel known‐sentinel mymaster 192.168.0.60 26380 52d0a5d70c1f90475b4fc03b6ce7c3c56935760f
#代表感知到的其它哨兵节点
sentinel known‐sentinel mymaster 192.168.0.60 26381 e9f530d3882f8043f76ebb8e1686438ba8bd5ca6
七、假设 主节点 挂掉的情况。
当redis主节点如果挂了,哨兵集群会重新选举出新的redis主节点,同时会修改所有sentinel节点配置文件的集群元数据信息;比如6379的redis如果挂了,假设选举出的新主节点是6380,则sentinel文件里的集群元数据信息会变成如下所示:
sentinel known‐replica mymaster 192.168.0.60 6379 #代表主节点的从节点信息
sentinel known‐replica mymaster 192.168.0.60 6381 #代表主节点的从节点信息
sentinel known‐sentinel mymaster 192.168.0.60 26380 52d0a5d70c1f90475b4fc03b6ce7c3c56935760f #代表感知到的其它哨兵节点
sentinel known‐sentinel mymaster 192.168.0.60 26381 e9f530d3882f8043f76ebb8e1686438ba8bd5ca6 #代表感知到的其它哨兵节点
同时,还会修改哨兵集群 每个sentinel 配置文件里之前配置的mymaster对应的6379端口,改为6380 。
sentinel monitor mymaster 192.168.0.60 6380 2
当6379的redis实例再次启动时,哨兵集群根据集群元数据信息就可以将6379端口的redis节点作为 从节点 加入集群。