今天继续给大家介绍Redis相关知识,本文主要内容是Redis的主从同步高可用架构。
阅读本文,您需要有一定的Redis主从同步基础,如果您对此还存在困惑,欢迎您查阅我博客内的其他文章,相信您一定会有所收获!
文章链接:
Redis详解(六)——Redis主从同步原理与配置
一、Redis sentinel实现高可用原理
在Redis详解(六)——Redis主从同步原理与配置文中,我们介绍了Redis的主从同步的配置实现,Redis主从同步很好的解决了高并发量场景下单台Redis服务器无法应对的问题,通过将Redis的读写压力进行分流,实现多台Redis服务器共同承担读写压力的问题。
尽管Redis主从同步的架构非常有用,但是却存在这Redis主库失效时整个架构无法写入内容的问题,针对这种场景,我们引入了Redis的哨兵机制。Redis哨兵,即sentinel,是Redis自带的一种实现高可用集群的Redis主库单点故障的解决方案。sentinel既可以监控架构,又可以提供配置功能,当sentinel发现Redis主服务器失效时,可以将从服务器中的一个自动提升为Redis主库,并且配置其他的Redis从库指向新的Redis主库。但是,为了避免sentinel的单点故障,我们应当把多台运行sentinel的设备配置为sentinel集群,当多个sentinel节点发现redis主服务器离线时,才会进行Redis主库的切换,以此来避免误判和sentinel的单点故障。
Redis哨兵会自动监控Redis主库,并且从Redis主库中获取整体的架构信息,多个sentinel之间使用“留言协议”来接收其他sentinel的信息,并使用投票机制来决定是否进行Redis架构的故障切换和选择新的Redis主服务器。
在安装Redis时也会自动安装sentinel,Redis哨兵自身也含有配置文件,如果Redis是采用YUM的方式进行安装,则sentinel的配置文件是/etc/redis-sentinel.conf。
二、Redis sentinel实现高可用配置实战
下面,我就进行Redis哨兵sentinel实现高可用配置。
(一)实战环境
实战环境如下:
Redis主服务器:192.168.136.11
Redis从服务器兼sentinel:192.168.136.12
Redis从服务器:192.168.136.13
(二)Redis主从同步配置
有关Redis主从同步的配置方式比较简单,可以参考文章:Redis详解(六)——Redis主从同步原理与配置。在这里就不过多赘述了,当按照要求配置好Redis主从同步后,在主库上查看信息,发现如下所示:

(三)sentinel配置
首先,我们先修改sentinel的配置文件,打开/etc/redis-sentinel.conf文件后,找到bind位置,将原来在注释中的bind内容改为:
bind 0.0.0.0
另外,搜索找到sentinel monitor处,将其修改为:
sentinel monitor mymaster 192.168.136.11 6379 1
其中sentinel monitor为固定命令,mymaster为给sentinel监控的架构起的一个名字,该名字可以任意,后面的IP地址为该架构下Redis主库的IP地址,后面的端口为该Redis主库的端口,最后的1表示当有1个sentinel投票决定进行故障转移时有效。配置完成后,启动sentinel,命令为:
systemctl start redis-sentinel
如果启动成功,会自动监听本地的26379端口,如下所示:

我们可以以登录redis的方式登录sentinel,并查看当前sentinel的监控架构,结果如下所示:

执行命令:
sentinel masters
可以查看Redis主库的相关信息,如下所示:

执行命令:
sentinel slaves 【架构名】
可以查看该架构下的Redis从库相关信息,如下所示:

下面,我们停止掉Redis主库(192.168.136.11),等待一段时间后,查看其余两台Redis从库上的同步信息,如下所示:


显然,在Redis哨兵的作用下,Redis集群重新选择了192.168.136.13作为新的Redis主库,并且192.168.136.12指向了新的Redis主库,实验配置成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
760

被折叠的 条评论
为什么被折叠?



