Redis—哨兵集群—基础

Redis哨兵系列文章目录

一、基础
二、常规命令
三、工作原理
四、主从切换


前言

  Sentinel是Redis官方为集群提供的高可用解决方案。 在实际项目中可以使用sentinel去做redis自动故障转移,减少人工介入的工作量。另外sentinel也给客户端提供了监控消息的通知,这样客户端就可根据消息类型去判断服务器的状态,去做对应的适配操作

Sentinel 哨兵的作用

• Monitoring:Sentinel持续检查集群中的master、slave状态,判断是否存活。
• Notification:在发现某个redis实例死的情况下,Sentinel能通过API通知系统管理员或其他程序脚本。
• Automatic failover:如果一个master挂掉后,sentinel会启动故障转移,把某个slave提升为master。其他的slave重新配置指向新master。
• Configuration provider:对于客户端来说sentinel通知是有效可信赖的。客户端会连接sentinel去请求当前master的地址,一旦发生故障sentinel会提供新地址给客户端。

一、配置

主要配置:

  • sentinel monitor mastername masterIP masterPort quorum
  • sentinel auth-pass def_master masterpass
  • sentinel down-after-milliseconds mastername millseconds
  • sentinel failover-timeout def_master millseconds
  • sentinel can-failover def_master yes|no
  • sentinel parallel-syncs def_master num

示例:

  1. port :当前Sentinel服务运行的端口
  2. dir : Sentinel服务运行时使用的临时文件夹
  3. sentinel monitor master 192.168.110.10 6379 2:Sentinel去监视一个名为master的主redis实例,这个主实例的IP地址为本机地址192.168.110.10,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
  4. sentinel down-after-milliseconds master 30000:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行
  5. sentinel parallel-syncs master 1:指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
  6. sentinel failover-timeout master 180000:如果在该时间(ms)内未能完成failover操作,则认为该failover失败
  7. sentinel notification-script :指定sentinel检测到该监控的redis实例指向的实例异常时,调用的报警脚本。该配置项可选,但是很常用

1. 监听多master

Sentinel支持监听多个master,即可以监控多组redis主从,只需要配置多组
sentinel monitor
每组mastername的可以拥有独立的配置,只需要在每个master name后面写入对应配置即可。

#master 1 
	sentinel monitor master1 192.168.2.3 6379 2
	sentinel down-after-milliseconds master1 60000
	sentinel failover-timeout master1 180000
	sentinel parallel-syncs  master1 1

#master 2
	sentinel monitor master2 192.168.1.3 6379 2
	sentinel down-after-milliseconds master2 10000
	sentinel failover-timeout master2 180000
	sentinel parallel-syncs master2  2

二、 启动

Sentinel两种启动方式

	1、redis-sentinel /path/to/sentinel.conf  #一般使用此种方式
	2、redis-server /path/to/sentinel.conf --sentinel

启动后Sentinel会:

  • 以10秒一次的频率,向被监视的master发送info命令,根据回复获取master当前信息。
  • 以1秒一次的频率,向所有redis服务器、包含sentinel在内发送PING命令,通过回复判断服务器是否在线。
  • 以2秒一次的频率,通过向所有被监视的master,slave服务器发送包含当前sentinel,master信息的消息。

三、添加或删除哨兵节点

添加哨兵节点
向部署中添加一个新的Sentinel是一个简单的过程,因为Sentinel实现了自动发现机制。启动配置为监视当前活动master服务器的新Sentinel。在10秒内,哨兵将获得其他哨兵的列表和附加到主服务器的副本。
如果需要一次添加多个哨兵,建议一个接一个地添加它,等待所有其他哨兵已经知道第一个,然后再添加下一个。这样可以保证大多数sentinel只能在分区的一侧获得,以防在添加新哨兵的过程中发生失败。
在进程的最后,可以使用命令来检查所有的Sentinels是否同意监视主服务器的Sentinels总数。SENTINEL MASTER mastername

删除哨兵节点
删除一个Sentinel稍微复杂一些;Sentinels永远不会忘记已经看到的Sentinels,即使它们很长时间都无法到达,因为无法动态更改授权故障转移所需的多数,并且创建新的配置号。因此,删除哨兵节点需要执行以下步骤:

  1. 停止要删除的哨兵进程。
  2. 向所有其他Sentinel实例发送一个命令(如果只想重置一个主实例,则可以使用确切的主实例名)。一个接一个,在实例之间至少等待30秒。SENTINEL RESET **
  3. 通过检查每个哨兵的输出,检查所有哨兵是否同意当前活跃的哨兵数量。SENTINEL MASTER mastername
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值