一、概述
Redis哨兵(以下称哨兵)是为Redis提供一个高可靠解决方案,对一定程序上的错误,可以不需要人工干预自行解决。
哨兵功能还有监视、事件通知、配置功能。以下是哨兵的功能列表:
监控:不间断的检查主从服务是否如预期一样正常工作
事件通知:对被监视的redis实例的异常,能通知系统管理员,或者以API接口通知其他应用程序。
智能援救:当被监视的主服务异常时,哨兵会智能的把某个从服务提升为主服务,同时其他从服务与新的主服务之间的关系将得到重新的配置。应用程序将通过redis服务端重新得到新的主服务的地址并重新建立连接。
配置服务:客户端可连接哨兵的接口,获得主从服务的相关信息,如果发生改变,哨兵新通知客户端。
哨兵的分布式
哨兵是个分布式系统,通过配置文件可以多个哨兵合作,以实现它的健壮性:
1.某个主服务是否正常,需要通过多个哨兵确认,这样可保证误判的低概率。
2.当哨兵工作的时候,总会有个别哨兵不能正常运行,如个别系统出现故障,所以多个哨兵合作运行,保证了系统的健壮性。
所有的哨兵、redis实例(包括主与从)和客户端相互之间会有交互,这是一个大的分布式系统,在此文档中将由浅入深地介绍哨兵的基础概念,以便更好的理解其基本属性,然后是更复杂的特性,让你理解它是如果精确的工作。
二、开始
1.获得哨兵
哨兵当前为Sentinel 2,它是在原来版本的基础上用了更健壮更简单的预演算法(后文有详解)。
哨兵的稳定版本与redis2.8与redis3.0一起发布,新特性的研发在不稳定版本分支时,当它被确认稳定后,将会被追加到redis2.8与redis3.0版本中。
与redis2.6一起发行的Sentinel 2版本,已淘汰不可用。
2.运行哨兵
如果有哨兵的可执行文件(或者与redis server执行文件有个符号连接(自己查阅Linux连接文件知识)),可通过如下的命令行启动哨兵:
redis-sentinel /path/to/sentinel.conf
不然,就得通过redis server执行文件的哨兵模式直接用以下命令启动:
redis-server/path/to/sentinel.conf --sentinel
以上两个方式的效果是一样的。
但是当哨兵正运行时,必须使用配置文件,它可以记载哨兵运行状态,当哨兵重启时可重用(重新载入配置文件)。如果没指定配置文件,或者路径不可写(因为需要往配置文件更新运行时状态)那哨兵将不能正常启动的。
哨兵的默认开启的TCP服务端口是26379,所以需要把此端口的防火墙、