Redis哨兵模式
Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。接下来要介绍的哨兵模式,它基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题,进一步提高系统的高可用性。
Redis的Sentinel系统用于管理多个Redis服务器(instance),该系统执行以下三个任务:
- 监控(Monitoring):Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
- 提醒(Notification):当被监控的某个Redis服务器出现问题时,Sentinel可以通过API 向管理员或者其他应用程序发送通知。
- 自动故障迁移(Automatic failover):当一个主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
基本概念
Redis Sentinel是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress),这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
虽然 Redis Sentinel 释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器, 你可以在启动一个普通 Redis 服务器时通过给定 –sentinel 选项来启动 Redis Sentinel 。
哨兵节点的启动有两种方式,二者作用是完全相同的:
bash
redis-sentinel /path/to/sentinel.conf
redis-server /path/to/sentinel.conf –sentinel
启动 Sentinel 实例必须指定相应的配置文件, 系统会使用配置文件来保存 Sentinel 的当前状态, 并在 Sentinel 重启时通过载入配置文件来进行状态还原。如果启动 Sentinel 时没有指定相应的配置文件, 或者指定的配置文件不可写(not writable), 那么 Sentinel 会拒绝启动。
配置步骤
- 在/etc/redis下面创建一个文件sentinel.conf,并添加如下命令
bash
#哨兵 监视 主机名 主机ip 端口 票数
sentinel monitor master6379 127.0.0.1 6379 1
- 启动哨兵的配置文件
bash
sudo redis-sentinel /etc/redis/sentinel.conf
- 哨兵启动之后,会监视主机,当主机挂掉之后,会将自己的票数随机投递给6380或者6381,那么谁得到这一票,谁就会成为新的主机。