阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

一篇文章带你读懂Redis的哨兵模式

29次阅读
没有评论

共计 1369 个字符,预计需要花费 4 分钟才能阅读完成。

导读redis 的哨兵模式,就是用于在一主多从的集群环境下,如果主服务器宕机了,它会自动的将从服务器中的一台设为新的 master,并且将其余的 slave 的配置文件自动修改,这样就切换出一套新的主从服务,不需要人工干预,且不会影响服务的使用。

一篇文章带你读懂 Redis 的哨兵模式

背景

在生产环境中,为了保证 redis 服务的高可用,通常都会搭建主从。我们知道主从的原理是从服务器获取 rdb 文件的全量复制 + 写操作的增量复制来共同保证数据的一致性,所以在配置从服务器的时候,一个很重要的配置项就是标明主服务器的 ip 和端口号,总得知道哪一台服务器是我的主子不是,像下图中的 replicaof 配置。
一篇文章带你读懂 Redis 的哨兵模式
通俗易懂讲解 redis 的哨兵模式

对于图中的部署方案,如果主服务器宕机了,我们只能进行手动干预,选择一台从服务器重新作为主服务器,然后将另外的两台从服务器的配置文件修改一下,将 replicaof 的配置重新改成新的主服务器地址。人工干预费时费力不说,更重要的是,这样会造成一段时间内服务是不可用的。在这种场景下,哨兵模式应运而生了。

什么是哨兵模式 Sentinel

redis 的哨兵模式,就是用于在一主多从的集群环境下,如果主服务器宕机了,它会自动的将从服务器中的一台设为新的 master,并且将其余的 slave 的配置文件自动修改,这样就切换出一套新的主从服务,不需要人工干预,且不会影响服务的使用。

那么它具体是怎么工作的呢?首先看下面这张图:
一篇文章带你读懂 Redis 的哨兵模式
通俗易懂讲解 redis 的哨兵模式
一篇文章带你读懂 Redis 的哨兵模式
哨兵模式结构图

首先哨兵是一个独立于主从服务之外的服务,它也是一个集群服务。哨兵实例会不断给主服务器发送 Ping 命令,主服务器在收到命令后,返回一个有效回复,这样哨兵实例认为服务器是正常的。

主观下线

假设主服务器宕机,哨兵 1 在指定时间内 (可配置) 没有收到主服务器的有效回复,那么这个哨兵会把服务器标记为下线,叫做主观下线 SDOWN。

注意此时只有一个哨兵标记为下线,实际上哨兵没有收到回复原因可能有很多,可能是服务器确实挂了,也有可能是服务器并没有挂,由于网络原因没有收到回复,总之,一个哨兵没有收到回复并不能证明主服务器宕机。

客观下线

哨兵 2 也发送了 Ping 命令,同样也没有收到回复,哨兵 2 也会将主服务器标记为 SDOWN。这个时候,3 个哨兵中有 2 个哨兵上报了 SDOWN,哨兵们在彼此交流之后,认为已经有足够数量的实例证明该服务已经不可用,因此,哨兵实例会将该服务器标记为客观下线 ODOWN。

这里的足够数量是可配置的,一般是哨兵个数的一半加 1,比如 3 个哨兵则就设置为 2。

投票选举,故障转移

当哨兵实例将服务标记为客观下线时,会进行一次选举。在剩下的从服务器实例中,选出一个作为主节点,并同时修改其余从服务器的配置文件,将新的主节点作为数据同步的来源,然后重新启动服务,完成切换。

至此,一个完整的哨兵自动进行故障转移的过程就完成了。

springboot 配置一主多从 + 哨兵

如果我们的环境由主从换成了主从 + 哨兵,修改配置也比较简单,先注释掉原来的 host 和 port 的配置,替换成哨兵的配置,如下图:

通俗易懂讲解 redis 的哨兵模式
一篇文章带你读懂 Redis 的哨兵模式
需要注意的是,这里 nodes 里配置的是哨兵集群的 IP+ 端口,而不是主从节点,一定不要配错了。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1369字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中