Redis之哨兵模式

Redis哨兵系统用于监控Redis主从集群的运行状态,当主库出现故障时,哨兵能自动将从库提升为主库,实现高可用。配置主要包括设置哨兵端口、监控主库信息、定义故障判断时间、同步策略以及启动哨兵服务。

有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2.6以后提供了一个“哨兵”的机制,在2.6版本中的哨兵为1.0版本,并不稳定,会出现各种各样的问题。在2.8以后的哨兵功能才稳定下来。

顾名思义,哨兵的含义就是监控Redis系统的运行状况。其主要功能有两点:

1.监控主数据库和从数据库是否正常运行

2.主数据出现故障时,可以自动将从数据库转换为主数据库,实现自动切换

实现步骤:在其中一台的从服务器配置sentinel.conf

(1)copy文件sentinel.conf到/usr/local/redis/etc/中

(2)修改sentinel.conf文件:

这是默认的

    # sentinel通讯端口  
    port 26379  
    # sentinel需要监控的master/slaver信息,格式为sentinel monitor <mastername> <masterIP> <masterPort> <quorum>  
    # 其中<quorum>应该小于集群中slave的个数,当失效的节点数超过了<quorum>,则认为整个体系结构失效  
    sentinel monitor redisMaster 192.168.154.101 6379 2  
    # master被当前sentinel实例认定为失效的间隔时间,格式为sentinel down-after-milliseconds <mastername> <milliseconds>  
    sentinel down-after-milliseconds redisMaster 10000  #默认就是1s检测一次,这里配置超时1s为宕机
    # 当新master产时,同时进行“slaveof”到新master并进行同步复制的slave个数  
    # 在salve执行salveof同步时,将会终止客户端请求。  
    # 此值较大,意味着“集群”终止客户端请求的时间总和和较大。  
    # 此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。  
    sentinel parallel-syncs redisMaster 1  
    # failover过期时间。当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。  
    sentinel failover-timeout redisMaster 60000 

下面是我们自己修改的:

sentinel monitor mymaster 6379 1 #名称、ip、端口,投票选举次数

sentinel down-after-milliseconds mymaster 5000 #默认是1s检测一次,这里配置超时5000毫秒为宕机。

sentinel failover-timeout mymaster 900000

sentinel can-failover mymaster yes

sentinel parrallel-syncs mymaster 2

(3)启动sentinel 哨兵

方式一:/usr/local/redis/bin/redis-server /usr/local/redis/etc/sentinel.conf  --sentinel

方式二:/usr/local/redis/bin/redis-sentinel /usr/local/redis/etc/sentinel.conf

(4)查看哨兵相关信息命令

/usr/local/redis/bin/redis-cli -h 192.168.154.102 -p 26379 info Sentinel

(5)关闭主服务器查看集群信息:

/usr/local/redis/bin/redis-cli -h 192.168.154.101 -p 6379 shutdown

 

 

 

### Redis单机哨兵模式介绍 Redis单机哨兵模式是一种无人值守运维机制,用于解决Redis在非集群模式下的高可用性问题。在该模式中,哨兵负责监控Redis的运行状态,包括主库(master)和从库(slave)。若主库出现故障,哨兵会根据投票数自动将某个从库转换为新的主库,以继续对外提供服务[^1]。 ### Redis单机哨兵模式配置 以在Redis 6380目录下配置哨兵为例,需要添加`sentinel.conf`文件,配置内容如下: ```plaintext # 配置地址及端口 port 26380 # 配置地址 # 不配置会报错:Creating Server TCP listening socket *:26380: listen: UnKnown error bind 127.0.0.1 # 所有哨兵监听的都是主服务器,当前主服务器是 6380,所以就监控 6380 # 将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行) sentinel monitor mymaster 127.0.0.1 6380 2 # 3s内mymaster无响应,则认为mymaster宕机了 sentinel down-after-milliseconds mymaster 3000 # 如果10秒后,mysater仍没启动过来,则启动failover sentinel failover-timeout mymaster 10000 # 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步 sentinel parallel-syncs mymaster 1 ``` ### Redis单机哨兵模式使用 配置完成后,启动哨兵进程,它会自动按照配置开始监控Redis主从节点。当主节点出现故障时,哨兵会自动进行故障转移,将某个从节点提升为主节点。在应用程序端,需要配置连接到哨兵而不是直接连接到Redis节点,由哨兵提供当前主节点的地址。 ### Redis单机哨兵模式原理 哨兵本身是独立的进程,在一个一主多从的Redis系统中,可以使用多个哨兵进行监控,它们不仅会监控主数据库和从数据库,哨兵之间也会相互监控。每一个哨兵独立运行,当它发现主节点出现故障时,会先判断主节点是否真的下线(由`sentinel down-after-milliseconds`参数控制判断时间)。当多个哨兵都认为主节点下线后,会进行投票选举,超过指定数量(由`sentinel monitor`中的最后一个参数决定)的哨兵同意后,就会启动故障转移流程。故障转移过程中,会从从节点中选择一个合适的节点提升为主节点,并通知其他从节点新的主节点地址,使其进行数据同步(由`sentinel parallel-syncs`参数控制同步的从节点数量),同时也会通知应用程序新的主节点地址[^1][^2][^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值