redis sentinel模式命令集

ping

订阅模式:

ping    服务器回复:*2\r\n$4\r\npong\r\n$0\r\n\r\n

ping xxx 服务器回复:*2\r\n$4\r\npong\\r\n$3\r\nxxx\r\n

其他模式

ping    服务器回复:+PONG

ping xxx 服务器回复:$3\r\nxxx\r\n

sentinel

sentinel masters

获取sentinel监视所有的master信息

sentinel master <name>

获取sentinel 监视的某个 master信息

sentinel slaves <master-name>

获取sentinel监视的某个masterslaves信息

sentinel sentinels <master-name>

获取sentinel监视的某个mastersentinel 信息

sentinel is-master-down-by-addr <ip> <port> <current-epoch> <runid>

1、  询问该sentinel,该 ipportmaster是否为down状态,如果该sentineltilt模式,会不理会这个询问,不去判断该master是否为主观下线状态,直接回复正常状态。

2、  当为指定runid,即不为*,将进行leader选举。

sentinel reset <pattern>

         根据pattern 重置匹配的master的状态

sentinel get-master-addr-by-name <master-name>

         根据master名字获取到masteripport

sentinel failover

 

sentinel pending-scripts

 

sentinel moniotr <name> <ip> <port> <quorum>

         添加监视的master

 

setinel flushconfig

         sentinel 状态信息写入到配置文件当中

 

setinel remove <name>

         将监视的为namemaster移除监视

setinel ckquorum <name>

         检查可投票同意master on failuresentinel+1的个数以及相关状态(可用的投票个数是否大于master quorum,需要quorum个同意master on failure

 

setinel set <mastername> [<option> <value> …]

         修改监视的master的一些属性

                   down-after-milliseconds   过了这个时间考虑master go down

                   failover-timeout                   刷新故障转移状态的最大时间

                   parallel-syncs            slave同时reconfigure的个数

                   notification-script        设置通知脚本

                   client-reconfig-script      设置通知脚本

                   auth-pass               执行auth的密码

                   quorum                 修改masterquorum

 

                  

        

 

subscribe

    subscribe <channel> <channel> ….

         订阅指定的频道,并使得发送该命令的client进入REDIS_PUBSUB状态

 

unsubscribe

   unsubscribe <channel><channel>

 取消某个频道的订阅或者取消所有频道的订阅,当client所有频道都取消了订阅,那么退出REDIS_PUBSUB状态

 

psubscribe

    订阅指定的模式频道,并使得发送该命令的client进入REDIS_PUBSUB状态

 

punsubscribe

取消某个符合该模式频道的订阅或者取消所有模式频道的订阅,当client所有频道都取消了订阅,那么退出REDIS_PUBSUB状态

 

publish

   publish <channel> <message>

  给订阅了该频道的发送消息

info

         info server

                   获取服务器的状态信息

         info sentinel

                   获取sentinel的状态信息,其侦听的master,以及该masterslavesentinel个数信息

role

         返回sentinel监视的所有的master name

client

         client list

                   列出服务器所有的client的相关信息

        client kill

                   client kill <ip:port>

                   client kill …. [id <id>] [type <normal|slave|pubsub>] [addr <addr>] [skipme <yes|no>]

杀死client,某个或者某些

                  

shutdown

         shutdown [nosave|save]

关闭服务器


转载于:https://my.oschina.net/465759695/blog/644770

### Redis Sentinel 模式的配置与工作原理 #### 1. Redis Sentinel 的基本概念 Redis Sentinel 是一种高可用性解决方案,主要用于监控 Redis 主从实例的状态,并在主节点发生故障时执行自动故障转移。这种机制可以显著提高系统的可靠性,确保即使在单点故障的情况下,服务仍能正常运行[^3]。 #### 2. 工作原理详解 Redis Sentinel 的核心功能包括以下几个方面: - **监控 (Monitoring)** Sentinel 节点会持续不断地检查主服务器和从服务器是否按预期工作。如果发现主服务器不可用,则触发后续操作[^1]。 - **通知 (Notification)** 当被监控的某个 Redis 实例出现问题时,Sentinel 可以向管理员或其他应用程序发送警报,以便及时采取措施[^2]。 - **自动故障转移 (Automatic Failover)** 如果主服务器无法继续工作,Sentinel 将启动选举流程,选择一个合适的从服务器升级为主服务器,并更新客户端连接信息。 - **配置提供者 (Configuration Provider)** 客户端可以通过 Sentinel 获取当前最新的主服务器地址,从而动态调整自己的连接目标。 #### 3. 配置方法 以下是 Redis Sentinel 的典型配置过程及其关键参数说明: ##### (1)安装与初始化 假设已经部署好 RedisSentinel 所需环境,创建 `sentinel.conf` 文件来定义哨兵的行为规则。以下是一个简单的配置文件示例: ```bash port 26379 # 设置 Sentinel 运行的端口号 daemonize yes # 后台运行 logfile "/var/log/redis/sentinel.log" # 日志路径 dir /tmp # 数据存储目录 # 监控名为 mymaster 的主从集群,其中 master 地址为 127.0.0.1:6379, # 至少需要 2 个 Sentinel 协议确认才能判定主节点下线 sentinel monitor mymaster 127.0.0.1 6379 2 # 故障切换超时时间设置为 180 秒 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 180000 ``` 上述配置中: - `sentinel monitor`: 表明要监视哪个主库(名称、IP、端口),以及至少多少个 Sentinel 认可该判断才生效。 - `down-after-milliseconds`: 设定多长时间未收到回复视为断开链接。 - `failover-timeout`: 控制整个故障转移的最大允许耗时时长。 ##### (2)启动多个 Sentinel 实例 为了增强健壮性,通常建议在同一网络环境下部署三个或更多 Sentinel 实例形成多数派决策机制。每个 Sentinel 使用相同的配置文件即可独立运行。 命令如下所示: ```bash redis-sentinel /path/to/sentinel.conf ``` #### 4. 自动故障转移的具体流程 当主服务器宕机后,Sentinel 群体会按照既定逻辑完成以下步骤: 1. 多数 Sentinel 达成一致意见认为原 Master 不再可达; 2. 在存活 Slave 中挑选最适合作为新 Master 的候选对象; 3. 更新所有 Client 对应的新 Master IP 和 Port; 4. 修改其他 Slaves 关联关系使其同步到新的 Master 上。 --- ### 示例代码:验证 Sentinel 功能的小型 Python 应用程序 下面展示如何利用 redis-py 库编写一段脚本测试 Sentinel 是否成功接管失败的服务。 ```python import redis from redis.sentinel import Sentinel def connect_to_redis_sentinel(): sentinel = Sentinel([('localhost', 26379)], socket_timeout=0.1) master = sentinel.master_for('mymaster', db=0, password=None, socket_timeout=0.1) try: result = master.set('test_key', 'value') value = master.get('test_key').decode() print(f"Successfully set key with value {value}") except Exception as e: print("Error occurred:", str(e)) if __name__ == "__main__": connect_to_redis_sentinel() ``` 此段代码展示了通过 Sentinel API 来获取当前有效的 Master 并尝试写入数据的过程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值