Redis 哨兵模式

哨兵模式

当主数据库挂了之后,需要手动设置新的主数据库,其他从数据库都需要重新设置新的主数据。手动切换的成本比较大,还会导致一段时间的服务不可用。这就需要讲上面的手动设置改成自动设置,也就是使用哨兵来配置。

哨兵Redis的高可用解决方案,哨兵监控Redis主服务器和绑定的从服务器,如果主服务器宕机了,自动将某个从服务器升级为新的服务器,然后发送通知给其他从服务器。

Redis 哨兵模式

哨兵基本原理

哨兵是一个独立的进程,和Redis一样,它也运行一个实例。主要有三个任务:

  • 监控: 周期给所有的主从数据库发送PING命令,检查主从数据库运行是否正常,在设置down-after-milliseconds毫秒,没有服务响应,就会标记主观下线,当其他哨兵也判断主观下线,判断主观下线的数量达到设置的值后,哨兵之间会进行投票,投票同意后,进行数据库升级。
  • 自动切换主从数据库:当上面的投票同意后,会根据一定的规则选取一个从服务器升级成主服务器。更新redis.conf配置文件。
  • 通知:完成主服务器升级之后,哨兵通过发布订阅会把新主数据库的连接信息发送给其他从数据库,修改对应配置文件的replicaof命令,和新数据库建立连接,并进行数据复制。

哨兵服务搭建

在上面的主从模式的基础上添加哨兵,首先从解压文件夹复制sentinel.confusr/local/redis文件夹中:

cp sentinel.conf /usr/local/redis/

修改sentinel.conf文件,需要修改的部分:

  • daemonize no 改成 daemonize yes
  • logfile "" 改成 logfile "redis_26379.log"
  • 添加 sentinel monitor <master-name> <ip> <redis-port> <quorum>,设置成 sentinel monitor mymaster 127.0.0.1 6382 1
    • ip 主数据库IP
    • redis-port 主数据库端口
    • quorum 主从切换需要达到主动下线个数
  • 如果数据库有密码,添加 sentinel auth-pass mymaster 123456,表示验证密码
    • mymaster 哨兵的名称,需要唯一
    • 123456 数据库密码,所有主从数据库密码需要设置成一致。

启动服务器:

[root@instance-3 redis]# bin/redis-sentinel sentinel.conf 

查看logfile启动日志

Redis 哨兵模式

看最后标记的三行,表明哨兵分别监控了主数据库6380、两个从数据库63816382。有上面的日志输出表明哨兵已经成功启动。

模拟主从切换

使用SHUTDOWN命令关闭6380主数据库服务:

[root@instance-3 redis]# bin/redis-cli -p 6380
127.0.0.1:6380> shutdown
(error) NOAUTH Authentication required.
127.0.0.1:6380> a
[root@instance-3 redis]# bin/redis-cli -p 6380
127.0.0.1:6380> auth xxx
OK
127.0.0.1:6380> SHUTDOWN

通过ps -ef |grep redis查看6380已经关闭:

[root@instance-3 redis]# ps -ef |grep redis
root      8822     1  0 Nov21 ?        00:00:58 /usr/local/redis/bin/redis-server *:6379
root     24707     1  0 10:35 ?        00:00:02 bin/redis-server *:6381
root     27500     1  0 10:47 ?        00:00:01 bin/redis-server *:6382
root     29247     1  0 10:54 ?        00:00:03 bin/redis-sentinel *:26379 [sentinel]
root     34131 17210  0 11:16 pts/1    00:00:00 grep --color=auto redis

查看哨兵日志logfile

Redis 哨兵模式

表明主服务器从6380成功切换到了6382sentinel.conf配置文件也修改了主从数据库配置。如果没有切换成功,日志报错-failover-abort-no-good-slave,可能是没有设置验证密码sentinel auth-pass

哨兵模式的优缺点

  • 优点
    • 哨兵模式是基于主从模式,主从模式的优点,哨兵模式都有。
    • 哨兵模式使用独立进程监控服务,自动切换宕机数据库,保障服务的高可用。
  • 缺点
    • 受限于单个服务器,很难实现单节点在线扩容。
    • 每个服务器都保存相同的信息,比较浪费内存。

总结

  • 哨兵模式:
    • 根据主从模式无法自动切换问题,就有了哨兵模式。
    • 哨兵是一个独立的进程,它主要有三个功能:监控数据库,发现主数据库宕机了,首先标记主观下线,当主观下线数量达到设置的数量时,就会进行投票,通过之后就执行切换主数据库,将一个从数据库升级成主数据库。并通知给其他数据库修改主数据库配置。
    • 哨兵模式实现自动切换主数据库,实现了服务的高可用。
    • 哨兵模式和主从模式一样,所有数据库都存放相同的数据,比较浪费内存,而且受限于单机数据库,很难实现在线扩容。


原文始发于微信公众号(小码Code):Redis 哨兵模式

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72262.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!