Redis 哨兵机制以及灾难演练

运维救火
• 阅读 1826

哨兵都采用这个配置即可

1、修改sentinel.conf配置文件

Redis 哨兵机制以及灾难演练

2、禁止保护模式 protected-mode no

  protected-mode参数是为了禁止外网访问redis,如果启用了,则只能够通过lookback ip(127.0.0.1)访问Redis,如果外网访问redis,会报出异常

  注意:
如果redis实例配置文件中禁用了bind参数,并将protected-mode设置为no后,外网访问redis依然报上述错误,因为 sentinel 实例的配置文件中需要增加参数 protected-mode no

Redis 哨兵机制以及灾难演练

3、配置监控的服务器配置

Redis 哨兵机制以及灾难演练

  解释:配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,172.16.178.2代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作

quorum的解释如下:

 (1)至少多少个哨兵要一致同意,master进程挂掉了,或者slave进程挂掉了,或者要启动一个故障转移操作

 (2)quorum是用来识别故障的,真正执行故障转移的时候,还是要在哨兵集群执行选举,选举一个哨兵进程出来执行故障转移操作

 (3)假设有5个哨兵,quorum设置了2,那么如果5个哨兵中的2个都认为master挂掉了; 2个哨兵中的一个就会做一个选举,选举一个哨兵出来,执行故障转移; 如果5个哨兵中有3个哨兵都是运行的,那么故障转移就会被允许执行

# 语法:sentinel monitor <master-name> <ip> <redis-port> <quorum>
# Tells Sentinel to monitor this master, and to consider it in O_DOWN
# (Objectively Down) state only if at least <quorum> sentinels agree.
# 告诉Sentinel监视这个master,并且考虑它O_DOWN 
# (仅在客观上O_DOWN) 状态 只有在至少 quorum 这个数量的哨兵同意才可以。
# Note that whatever is the O_DOWN quorum, a Sentinel will require to
# be elected by the majority of the known Sentinels in order to
# start a failover, so no failover can be performed in minority.
# 请注意,无论quorum数是多少,哨兵都需要这样做由大多数已知的哨兵
# 选出来启动故障转移,因此不能在少数情况下执行故障转移。
# Replicas are auto-discovered, so you don't need to specify replicas in
# any way. Sentinel itself will rewrite this configuration file adding
# the replicas using additional configuration options.
# 从机是自动发现的,因此不需要在任何方式指定。哨兵自己将重写配置文件添加
# 到从机使用的配置文件的配置选项上。
# Also note that the configuration file is rewritten when a
# replica is promoted to master.
# 注意当从机被指定主机的时候将重写配置文件
# Note: master name should not include special characters or spaces.
# The valid charset is A-z 0-9 and the three characters ".-_".
#  注意:主机名称不应该包含特殊字符或空格。有效的字符集是A-z 0-9和三个字符“.-_”。
4、其他的配置

  (1)、down-after-milliseconds,超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了

  (2)、parallel-syncs,新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步,数字越低,花费的时间越多
假设你的redis是1个master,4个slave,然后master宕机了,4个slave中有1个切换成了master,剩下3个slave就要挂到新的master上面去这个时候,如果parallel-syncs是1,那么3个slave,一个一个地挂接到新的master上面去,1个挂接完,而且从新的master sync完数据之后,再挂接下一个,如果parallel-syncs是3,那么一次性就会把所有slave挂接到新的master上去

  (3)、failover-timeout,执行故障转移的timeout超时时长

5、设置密码权限
# Set the password to use to authenticate with the master and replicas.
# Useful if there is a password set in the Redis instances to monitor.
# 设置用于主服务器和从机进行身份验证的密码。
# 如果要监视的Redis实例中设置了密码,则非常有用
# Note that the master password is also used for replicas, so it is not
# possible to set a different password in masters and replicas instances
# if you want to be able to monitor these instances with Sentinel.
# 注意,主密码也用于从机,因此它不可能在主机和从机实例中设置不同的密码
# 如果你想用哨兵来监控这些实例。
# However you can have Redis instances without the authentication enabled
# mixed with Redis instances requiring the authentication (as long as the
# password set is the same for all the instances requiring the password) as
# the AUTH command will have no effect in Redis instances with authentication
# switched off.
# 而且您可以在不启用身份验证的情况下使用Redis实例与需要身份验证的Redis实例混合(只要
# 对于需要密码的所有实例,密码集都是相同的在使用身份验证的Redis实例中),AUTH命令将不起作用。
# 语法:sentinel auth-pass mymaster MySUPER--secret-0123passw0rd

Redis 哨兵机制以及灾难演练

  设置成redis.conf中配置的密码:

Redis 哨兵机制以及灾难演练

  上一篇文章已经介绍了主从的搭建这里就不介绍了,有需求查看上一篇文章

6、直接启动三个服务器的redis服务

Redis 哨兵机制以及灾难演练

7、查看一下redis服务启动的日志

Redis 哨兵机制以及灾难演练

  启动成功并且连接到了主机

8、接下来分别启动三个哨兵从主机开始启动

  通过下图可知:主机是172.16.178.2 从机是 172.16.178.3 、172.16.178.4

Redis 哨兵机制以及灾难演练

9、启动三个哨兵:成功启动

Redis 哨兵机制以及灾难演练

10、查看主机的sentinel.conf 配置可知,该哨兵在监控两个从机和配置的主机,以及另外两个哨兵

Redis 哨兵机制以及灾难演练

11、同理另外两个哨兵也是监控着两个从机和配置的主机,以及另外两个哨兵

Redis 哨兵机制以及灾难演练

12、连接配置好的哨兵

Redis 哨兵机制以及灾难演练

13、输入 info 命令

Redis 哨兵机制以及灾难演练

  看到哨兵正在监控着一个主机两个从机以及三个哨兵

14、故障演练:

 1)、先查询主机的进程ID

Redis 哨兵机制以及灾难演练

 2)、kill -9 70817

Redis 哨兵机制以及灾难演练

  此时当前节点只有哨兵了

 3)、连接当前哨兵,输入info

Redis 哨兵机制以及灾难演练

  这是最小的哨兵配置,如果发生了master-slave故障转移,或者新的哨兵进程加入哨兵集群,那么哨兵会自动更新自己的配置文件

  此时主机节点变成了 172.16.178.4 了

 4)、连接172.16.178.4 上的redis

Redis 哨兵机制以及灾难演练

  当前节点为主机节点,172.16.178.3 为从节点

 5)、重新启动172.16.178.2主机上的redis

Redis 哨兵机制以及灾难演练

 6)、此时再一次连接主机

Redis 哨兵机制以及灾难演练

 7)、主机set 一个值

Redis 哨兵机制以及灾难演练

 8)、1号从机get 主机中设置的key

Redis 哨兵机制以及灾难演练

 9)、2号从机get 主机中设置的key

Redis 哨兵机制以及灾难演练

点赞
收藏
评论区
推荐文章
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
亚瑟 亚瑟
4年前
php操作redis哨兵模式,主从切换后自动获取master
本文将介绍如何使用PHP来连接redis哨兵模式。哨兵模式:大概的原理就是监听redis主库心跳包,如果心跳断开,则枚举一个从库推举成为新的主库,防止redis宕机不能使用。为了增强redis的性能,防止其挂掉,引用redis哨兵监控redis集群是个不错的选择。下面三步简单记录php连接redis哨兵。第一步、获取哨兵模式连接redis句柄对象/
Stella981 Stella981
3年前
Redis高可用哨兵机制及SpringBoot整合哨兵
前言:在前面讲到了Redis分片机制可实现内存数据的扩容来提高执行速率Redis分片机制(https://my.oschina.net/u/4115134/blog/3207715),可是Redis分片依旧有一些问题,如果redis分片的节点如果有一个服务器宕机,则直接影响用户的使用.Redis分片机制没有实现高可用功能(HA)。我所使
Stella981 Stella981
3年前
Redis哨兵
RedisSentinel是redis官方推荐的高可用性解决方案,当用redis作masterslave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能。而redissentinel就是一个独立运行的进程,用于监控多个masterslave集群,自动发现master
Stella981 Stella981
3年前
Redis 哨兵机制
虽然现在使用哨兵主从的方式比较少了,但通过理解Redis哨兵,我们能获得更深入的分布式的知识。https://redis.io/topics/sentinel(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fredis.io%2Ftopics%2Fsentinel)
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Redis Sentinel 哨兵模式
RedisSentinel哨兵模式Sentinel介绍Redis的主从模式下,主节点一旦发生故障不能提供服务,需要人工干预,将从节点晋升为主节点,同时还需要修改客户端配置。对于很多应用场景这种方式无法接受。Sentinel(哨兵)架构解决了redis主从人工干预的问题。Redis
Stella981 Stella981
3年前
Redis哨兵集群中哨兵挂了,主从库还能切换吗?
实际上,一旦多个实例组成了哨兵集群,即使有哨兵实例出现故障挂掉了,其他哨兵还能继续协作完成主从库切换的工作,包括判定主库是不是处于下线状态,选择新主库,以及通知从库和客户端。_1_,基于pub/sub机制的哨兵集群组成哨兵之间的相互发现哨兵实例之间可以相互发现,要归功于Redis提供的pub/sub机制,也就是
Easter79 Easter79
3年前
Spring该如何整合Redis集群
前言:在上一文中,我讲到了如何搭建redis集群让集群拥有分片的数据内存的扩容和哨兵的高可用(https://my.oschina.net/u/4115134/blog/3210013)。今天给大家讲解一下Spring如何整合Redis集群在这里首先给大家说一说分片和哨兵的特点:1.分片的主要的作
Stella981 Stella981
3年前
Redis高可用技术解决方案总结
一、常见使用方式Redis的几种常见使用方式包括:Redis单副本;Redis多副本(主从);RedisSentinel(哨兵);RedisCluster;Redis自研。二、各种使用方式的优缺点1、Redis单副本Redis单副本,采用
Stella981 Stella981
3年前
Redis 哨兵节点之间相互自动发现机制(自动重写哨兵节点的配置文件)
Redis的哨兵机制中,如果是多哨兵模式,哨兵节点之间也是可以相互感知的,各种搜索之后出来的是千篇一律的一个基础配置文件,在配置当前哨兵节点的配置文件中,并没有配置其他哨兵节点的任何信息。如下是一个哨兵节点的配置信息,可以看到,哨兵与哨兵之间没有任何配置,死活想不明白,哨兵之间是如何自动识别的。sentinel端口port