redis 哨兵 Sentinel
在上一篇一主多从的基础上,再启动一个哨兵服务,和一主多从的区别是:当主机挂了能自动把从一个从机切换成主机
假设此时主从关系是:主机(6379),从机1(6380),从机2(6381),和上面的主从一致,配置文件也都是在 /myredis 中
环境搭建
在 /myredis 中再创建一个配置文件 sentinel.conf(名字不能错,必须是这个),这个配置文件中写入如下内容
# redissentinel 是给这个哨兵取个名称
# 127.0.0.1 6379 主机的ip和端口
# 最后面的 1 表示多少个哨兵同意(当配置多个哨兵的时候才有意义)
sentinel monitor redissentinel 127.0.0.1 6379 1
然后启动哨兵,在 redis bin 目录下执行 ./redis-sentinel /myredis/sentinel.conf 就好了
主机挂了
自动从从机中选举一个作为主机,比如 6380 作为新的主机,6381 还是作为从机,不过这时 6381 不再是 6379 的从机了而是 6380 的从机
主机恢复
主机挂了之后重新启动,会发生什么呢?主机会作为从机了,不再恢复主机身份。此时关系就是:主机(6380),从机1(6380),从机2(6379)
选举规则
优先级靠前:每个配置文件都有 replica-priority 配置项,默认是100,也就是 replica-priority 越小越优先,我们这里都是使用的同一个公共配置文件,都是默认是100
偏移量最大:比如 6379 里面10个数据,6380 里面也是10个数据,6381 里面只有 9 个数据,那么 6380 的偏移量最大,优先选 6380 作为主机
runid 最小:每个 redis 都会随机生成一个 40 位的 runid,这个不会都一样,所以走到这一步的时候肯定能选出一个从机作为主机
