Redis哨兵模式(Sentinel)详解

目录

一、Sentinel

1. 何为Sentinel

  • Sentinel是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求;
  • Sentinel实例本质上是一个运行在特殊模式下的Redis服务器;
  • 和普通服务器不同,Sentinel在启动时会将一部分普通Redis服务器使用的代码替换成Sentinel专用代码,所以Sentinel不支持一些普通服务器使用的功能:
功能 使用情况
数据库和键值对方面的命令,比如SET、DEL、FLUSHDB 不使用
事务命令,比如MULTI 和 WATCH 不使用
脚本命令,比如 EVAL 不使用
RDB持久化命令,比如SAVE和BGSAVE 不使用
AOF持久化命令,比如BGREWRITEAOF 不使用
复制命令,比如 SLAVEOF Sentinel内部可以使用,但是客户端不可以使用
  • Sentinel使用的服务器命令表和普通服务器也不同,命令表里没有SETDBSIZEEVAL等这些命令,所以Sentinel不能执行这些命令;
  • 客户端可以对Sentinal执行的命令有7个:PINGSENTINELINFOSUBSCRIBEUNSUBSCRIBEPSUBSCRIBEPUNSUBSCRIBE;
  • 客户端可以对Sentinel执行的命令:是指通过客户端连接Sentinal服务器后,可以对Sentinel执行的命令;
  • Sentinel内部执行的命令:是指Sentinel向其他服务器(主服务器、从服务器、Sentinel)发送的命令。例如,Sentinel需要监听主从服务器和连接其他的Sentinel服务器,在主服务器下线后,需要执行Slaveof no one命令将其中一个从服务器设置为新的主服务器,并且执行Slaveof命令让其他的从服务器复制这个新的主服务器,这些命令都是在Sentinel内部执行的命令;

2. Sentinel启动流程

启动一个Sentinel可以使用以下两个命令中的任一个:

[shell]$ redis-sentinel sentinel.conf
[shell]$ redis-server sentinel.conf --sentinel

两种模式都是加载sentinel.conf配置文件启动Sentinel,sentinel.conf配置文件配置了如下信息:

# 监听的端口号
port 26379

# 是否以后台模式运行
daemonize no

#####################
# master1 configure #
#####################

# 监视的主服务器名称、地址、端口号、客观下线所需要的票数
# SENTINEL monitor <master-name> <ip> <port> <quorum>
# <master-name>:主服务器命令
# <quorum>:判断这个实例客观下线需要的投票数
sentinel monitor master1 192.168.1.2 6379 2

# 实例无响应多少毫秒之后才会被判断为主观下线
# SENTINEL down-after-millisecondes <master-name> <ms>
sentinel down-after-millisecondes master1 30000

# 在执行故障转移操作时,可以同时对新的主服务器进行同步的从服务器数量
# SENTINEL parallel-syncs <master-name> <number>
sentinel parallel-syncs master1 1

# 刷新故障迁移状态的最大时限
# SENTINEL failover-timeout <master-name> <ms>
sentinel failover-timeout master1 900000

#####################
# master2 configure #
#####################
sentinel monitor master2 192.168.1.3 6379 2
sentinel down-after-millisecondes master2 30000
sentinel parallel-syncs master2 1
sentinel failover-timeout master2 900000
  • Sentinel启动的服务器默认端口号是26379;
  • 一个Sentinel可以同时监视多个Master;
当一个Sentinel启动时,它需要执行以下步骤:
  1. 初始化服务器;
  2. 将普通Redis服务器使用的代码替换成Sentinel专用代码;
  3. 初始化Sentinel状态;
  4. 根据给定的配置文件,初始化Sentinel的监视主服务器列表;
  5. 创建连向主服务器的网络连接;

2.1 初始化服务器

  • Sentinel本质上只是一个运行在特殊模式下的Redis服务器,所以启动Sentinel的第一步,就是初始化一个普通的Redis服务器
  • 因为Sentinel并不使用数据库,所以初始化Sentinel时就不会载入RDB文件或者AOF文件;

2.2 使用Sentinel专用代码

启动Sentinel的第二步就是将一部分普通Redis服务器使用的代码替换成Sentinel专用代码:

  • 使用REDIS_SENTINEL_PORT常量的值作为服务器端口,普通服务器使用的是REDIS_SEVERPORT的值,即普通服务器默认端口是6379,Sentinel服务器默认端口是26379;
  • 使用sentinelcmds的值作为服务器的命令表,并且其中的INFO命令会使用Sentinel模式下的专用实现;sentinelcmds命令表只有7个命令,所以客户端只能对Sentinel服务器执行这7个命令
struct redis
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上部署Redis哨兵模式,可以按照以下步骤进行操作: 1. 首先搭建Redis主从模式。可以参考中的文章,按照说明进行配置和搭建。 2. 创建sentinel.conf文件,可以使用以下命令在当前目录下创建: ``` touch sentinel.conf ``` 3. 在sentinel.conf文件中进行哨兵的配置。具体的配置项可以参考中的说明。 4. 启动Redis哨兵服务。可以使用以下命令启动哨兵: ``` redis-sentinel /path/to/sentinel.conf ``` 5. 验证Redis哨兵模式是否正常工作。可以使用以下命令连接到Redis主服务器,并通过发送INFO命令来查看哨兵的状态: ``` redis-cli -h <主服务器IP> -p <主服务器端口> INFO Sentinel ``` 请注意,以上步骤仅为大致说明,具体的操作和配置可能会因环境和需求而有所不同。建议参考中提供的详细文档,并根据自己的实际情况进行配置和部署。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux下Redis哨兵集群模式搭建详解(1主2从+3哨兵)](https://blog.csdn.net/weixin_42925623/article/details/129192097)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [linux 运维工程师 在一台centos7服务器上面部署 redis 哨兵集群](https://download.csdn.net/download/feiwenlsy/86523438)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [11. linux环境redis哨兵模式的搭建](https://blog.csdn.net/hznb_369/article/details/123765814)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值