redis的高可用(哨兵模式)

实验环境

此实验在redis主从复制的基础上做。

主机名 ip 身份
server1 172.25.55.1 redis主服务器
server2 172.25.55.2 redis从服务器1
server3 172.25.55.3 redis从服务器2

Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。

redis的高可用(哨兵模式)_第1张图片

三台虚拟机配置相同

[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# cp sentinel.conf  /etc/redis/
[root@server1 redis-5.0.3]# vim /etc/redis/sentinel.conf 
17 protected-mode no

84 sentinel monitor mymaster 172.25.55.1 6379 2

其余语句的含义:

sentinel down-after-milliseconds mymaster 60000  #Sentinel 认为服务器已经断线所需的毫秒数。
sentinel failover-timeout mymaster 180000
sentinel parallel-sync mymaster   1 # 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。

当master与slave中断,master被孤立。此时client还可以写入master,此时slave中会选出新的master.masyer恢复后变成slave,回丢失数据。所以限制master,至少有几个slave与之可通信时才可以写入数据。

# min-replicas-to-write 1(最少又要一个slave,才可写)
# min-replicas-max-lag 10(响应时间10s)

[root@server1 redis]# redis-server sentinel.conf --sentinel &
[root@server2 redis]# redis-server sentinel.conf --sentinel &

redis的高可用(哨兵模式)_第2张图片
在这里插入图片描述
在这里插入图片描述
redis的高可用(哨兵模式)_第3张图片

最后在server1的配置文件6379.conf中添加一句:slaveof 172.25.28.3 6379
[root@server1 redis]# /etc/init.d/redis_6379 start
redis的高可用(哨兵模式)_第4张图片

  • +reset-master :主服务器已被重置。
  • +slave :一个新的从服务器已经被 Sentinel 识别并关联。
  • +failover-state-reconf-slaves :故障转移状态切换到了 reconf-slaves 状态。
  • +failover-detected :另一个 Sentinel 开始了一次故障转移操作,或者一个从服务器转换成了主服务器。
  • +slave-reconf-sent :领头(leader)的 Sentinel 向实例发送了 SLAVEOF 命令,为实例设置新的主服务器。
  • +slave-reconf-inprog :实例正在将自己设置为指定主服务器的从服务器,但相应的同步过程仍未完成。
  • +slave-reconf-done :从服务器已经成功完成对新主服务器的同步。
  • -dup-sentinel :对给定主服务器进行监视的一个或多个 Sentinel 已经因为重复出现而被移除 —— 当 Sentinel 实例重启的时候,就会出现这种情况。
  • +sentinel :一个监视给定主服务器的新 Sentinel 已经被识别并添加。
  • +sdown :给定的实例现在处于主观下线状态。
  • -sdown :给定的实例已经不再处于主观下线状态。
  • +odown :给定的实例现在处于客观下线状态。
  • -odown :给定的实例已经不再处于客观下线状态。
  • +new-epoch :当前的纪元(epoch)已经被更新。
  • +try-failover :一个新的故障迁移操作正在执行中,等待被大多数 Sentinel 选中(waiting to be elected by the majority)。
  • +elected-leader :赢得指定纪元的选举,可以进行故障迁移操作了。
  • +failover-state-select-slave :故障转移操作现在处于 select-slave 状态 —— Sentinel 正在寻找可以升级为主服务器的从服务器。
  • no-good-slave :Sentinel 操作未能找到适合进行升级的从服务器。Sentinel 会在一段时间之后再次尝试寻找合适的从服务器来进行升级,又或者直接放弃执行故障转移操作。
  • selected-slave :Sentinel 顺利找到适合进行升级的从服务器。
  • failover-state-send-slaveof-noone :Sentinel 正在将指定的从服务器升级为主服务器,等待升级功能完成。
  • failover-end-for-timeout :故障转移因为超时而中止,不过最终所有从服务器都会开始复制新的主服务器(slaves will eventually be configured to replicate with the new master anyway)。
  • failover-end :故障转移操作顺利完成。所有从服务器都开始复制新的主服务器了。
  • +switch-master :配置变更,主服务器的 IP 和地址已经改变。

你可能感兴趣的:(运维,redis)