AI机器人 统计
  • 文章总数:248 篇
  • 评论总数:34 条
  • 分类总数:11 个
  • 最后更新:4小时前

一篇文章让你了解Redis哨兵模式

本文阅读 9 分钟

什么是redis哨兵模式

Redis哨兵模式是一个为了提升Redis系统高可用性而设计的自动化管理方案。它具备以下几个核心功能:

监控:

哨兵模式能够实时监控所有的Redis主从服务器,确保它们处于健康状态。

通知:

一旦发现服务器异常,哨兵能够及时发出警告,通知管理员或者自动处理。

自动故障转移:

最关键的功能是,在主服务器发生故障时,哨兵能够自动将一个从服务器提升为新的主服务器,无需人工干预。

为什么需要Redis哨兵模式

解决Redis主从复制模式中需要手动切换的痛点,当主服务器宕机后,需要手动选择并切换一台从服务器作为新的主服务器,这个过程不仅麻烦而且耗时。哨兵模式通过自动化这一过程,极大地提高了Redis系统的可用性。

哪些部分组成

Redis 哨兵模式是由两部分组成:哨兵集群和Redis服务器集群

哨兵集群(Sentinel Cluster):

哨兵集群由多个哨兵节点组成(最少三个),这些哨兵节点负责监控Redis服务器集群的运行状态,包括主服务器和所有从服务器的健康状况。

哨兵节点之间会相互通信,以确保对Redis集群状态的共识。在主节点故障时,它们会协商选择一个从节点晋升为新的主节点。

哨兵集群提高了整个系统的可靠性和稳定性,因为即使某个哨兵节点发生故障,其他哨兵节点仍然可以继续执行监控和故障转移任务。

Redis服务器集群:

Redis服务器集群通常由一个主服务器(master)和多个从服务器(slave)组成。主服务器处理写操作,同时将数据变更同步到所有从服务器。
从服务器主要用于读操作,以及在主服务器故障时提供故障转移的候选。

Redis服务器集群通过复制和故障转移机制,确保数据的高可用性和一致性。

Redis哨兵集群部署策略

部署在 Redis 集群中:

哨兵可以和 Redis 服务器部署在相同的机器上,但为了高可用性,建议将哨兵部署在不同的机器上。

单独部署:

哨兵完全可以独立于 Redis 服务器运行在单独的机器上,只要它们能够通过网络连接到 Redis 服务器。

如何配置哨兵集群

1540879-20210201234526307-66347777.png

  • 下载和安装 Redis
    首先,需要在 Redis 的官方网站下载最新版本的 Redis。Redis 可以在多种操作系统上运行,但以在 Linux 环境下运行为佳。
    wget http://download.redis.io/releases/redis-6.0.9.tar.gz tar xzf redis-6.0.9.tar.gz cd redis-6.0.9 make
    编译完成后,Redis 服务器和哨兵程序(redis-server 和 redis-sentinel)就会在 src 目录下。
  • 配置 Redis集群实例
    在运行哨兵之前,需要设置至少一个 Redis 主服务器和一个或多个从服务器。配置文件通常位于 Redis 源码的 redis.conf 文件中,你可以根据需要修改配置。
  • 配置 Redis 哨兵

哨兵配置文件可以从 Redis 源码的 sentinel.conf 文件开始。你需要为哨兵设置至少以下参数:

# 哨兵监听的端口,默认情况下哨兵和Redis服务器使用相同的配置文件格式
port 26379

# 哨兵监控的Redis主服务器配置,<master-name> 是主服务器的名字,
# <ip> 是主服务器的IP地址,<port> 是端口,<quorum> 是进行故障转移所需的最小哨兵数目
sentinel monitor mymaster 127.0.0.1 6379 2

# 指定多少毫秒之内主服务器没有响应,哨兵会认为主服务器下线,默认是30秒
sentinel down-after-milliseconds mymaster 30000

# 指定在故障转移操作中,最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1

# 故障转移的超时时间,超过这个时间故障转移还没完成,哨兵会取消当前的故障转移操作
sentinel failover-timeout mymaster 180000

# 指定哨兵的工作目录
dir "/tmp"

# 日志文件的路径,可以指定哨兵的日志记录到哪个文件中
logfile "/var/log/redis-sentinel.log"

# 是否以守护进程的方式运行
daemonize yes
  1. 启动 Redis 哨兵
    使用以下命令启动哨兵:
    redis-sentinel /path/to/your/sentinel.conf
    这条命令会启动一个哨兵实例,并加载你之前配置的 sentinel.conf 文件。

哨兵模式工作原理

启动哨兵集群

初始化:当你启动 Redis 哨兵时,它首先加载配置文件(如sentinel.conf),该文件指定了哨兵需要监控的 Redis 主服务器信息以及相关的参数配置。
自我发现:哨兵启动后,会通过发送 INFO 命令给其它 Redis 服务器(包括主服务器和从服务器),来发现所有相关的 Redis 实例和其它哨兵实例。这个过程使得哨兵能自动发现整个 Redis 环境的拓扑结构。
监控:每个哨兵对配置中指定的主服务器进行持续的健康检查,包括但不限于检查网络连接、延迟、数据同步状态等。

故障检测

主服务器故障识别:如果一个主服务器在配置的时间(如down-after-milliseconds)内未响应,哨兵会认为该主服务器可能已经下线。此时,哨兵会与其它哨兵进行通信,以确认是否真的发生了故障。
达成一致:只有当超过配置的quorum数量的哨兵同意主服务器不可达时,才会宣布主服务器正式下线。这个过程防止了因网络分区或哨兵自身问题错误地发起故障转移。

故障转移

选举领导哨兵:确定主服务器不可用后,哨兵之间会进行一次选举,选出一个领导哨兵来负责这次的故障转移过程。
选择新的主服务器:领导哨兵会从现有的从服务器中选择一个作为新的主服务器。选择标准通常基于从服务器的健康状况、数据的新旧程度以及网络延迟等因素。
配置更新:一旦新的主服务器被选定,领导哨兵会指导其它从服务器改变复制的目标,即指向新的主服务器。同时,它也会更新哨兵内部的配置信息,以反映主服务器的变更。
通知客户端:哨兵可以配置为通知客户端新的主服务器地址,或者客户端可以在下次与主服务器连接失败时询问哨兵最新的主服务器地址。

系统恢复

重新加入:一旦原主服务器恢复,它将以从服务器的身份重新加入到Redis集群中,开始从新的主服务器复制数据。
监控持续:哨兵会继续监控所有 Redis 实例(包括新的主服务器和从服务器),以确保系统的稳定运行。

原创文章,作者:忆秋先生,如若转载,请注明出处:https://www.ycyaw.com/Linux/1202.html
Linux生产环境安全性之端口改变
« 上一篇 02-24
Caddy如何安装
下一篇 » 04-20

发表评论

发表评论

作者信息

动态快讯

    请配置好页面缩略名选项

热门文章

标签TAG

热评文章