redis 故障演练

640?wx_fmt=jpeg

Redis是Remote Dictionary Server的缩写。本质上一个Key/Value数据库,与Memcached类似的NoSQL型数据库,但是数据可以持久化的保存在磁盘上,解决了服务重启后数据丢失的问题,值可以是string(字符串)、list(列表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力特意设计为从核心支持硬件,几乎没有对硬件的要求或限制。核心在小端格式的硬件上运行,主要是x86/x86_64处理器。客户端库(例如驱动)可以在大端或小端格式的系统中运行。


redis 官网:https://redis.io/


redis 在生产当中一般有四种场景:单机,主从,哨兵,集群。单机模式比较简单,没什么可说的。使用最多的为哨兵和集群。本次基于主从模式和哨兵模式的故障演练。


redis 安装比较简单,安装前需要安装依赖,gcc make tcl


可以直接 用 yum -y install gcc make tcl 也可以用源码编译或 rpm 包安装,根据自身情况自选。接下来我们先进行 redis 的一主两从环境搭建以及手动故障演练。


 
 

主配:
daemonize yes
port 6379
logfile ./redis6379.log
dir ./
bind 192.168.10.1

1配:
daemonize yes
port 6380
logfile ./redis6380.log
dir ./
bind 192.168.10.1
slaveof 192.168.10.1 6379
slave-read-only yes--设置从库只读

2配:
daemonize yes
port 6381
logfile ./redis6381.log
dir ./
bind 192.168.10.1
slaveof 192.168.10.1 6379
slave-read-only yes--设置从库只读


启动主从:

640?wx_fmt=png

640?wx_fmt=png

之后进行登录主节点和两个从节点,进行查看主从信息:可以看到 master的状态为 up。

640?wx_fmt=png

可以在主库赋值一个key,然后去从库上查看进行验证。主库端口:6379,从库端口:6380,6381


640?wx_fmt=png

手动切换主从模式故障演练:先关闭主库,进行shutdown。然后在两个从库上进行查看信息,可以看到主库已经down了。

640?wx_fmt=png

640?wx_fmt=png

在从库的6380节点上执行 slaveof no one。

640?wx_fmt=png

然后在6380的从节点上,运行 info 再查看效果:可以看到这个时候从库的角色已经成为主库了,反从为主。

640?wx_fmt=png

这个时候重新启动刚开始的主库6379端口,可以看到6379已经变成从库了。

640?wx_fmt=png

最终主库由6379变成了6380。

这个是手动切换一主两从故障演练。接下来进行哨兵模式的搭建,模拟故障自动切换。




再进行哨兵模拟前,将6379恢复为主库,6380恢复为从库。哨兵模式可以自动切换,当主库 down 掉后,从库会自动接管。基于主从开始搭建redis哨兵。由于本次是一主两从,3个节点。所以指定了3个哨兵配置文件:可以单独创建目录将redis的配置文件和redis哨兵得配置文件区分开,避免混淆。如下:

640?wx_fmt=png

 
 

主节点哨兵配置:
port 26379
daemonize yes
logfile "26379.log"
dir "./"
#sentinel监控的IP 端口号 sentinel通过投票后认为mater宕机的数量,此处为至少2个
sentinel monitor mymaster 主库ip 6379 2
#60秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 60000
#故障转移后重新主从复制,1表示串行,>1并行
sentinel parallel-syncs mymaster 1
#故障转移开始,60秒内没有完成,则认为转移失败
sentinel failover-timeout mymaster 600000
bind 服务器ip

从节点哨兵文件配置(两个从节点的哨兵配置文件是一样的,复制一份就可以了):

640?wx_fmt=png

查看redis和哨兵进程(全部在一台机器上搞得),看到进程都已经启动了。

640?wx_fmt=png

接下来登录哨兵节点,查看哨兵节点和redis节点信息:

./redis-cli -h 服务器ip -p 23679

登录后通过 info 命令查看:

640?wx_fmt=png

重点在最后关于哨兵sentinel得这一段,可以看到节点信息有一个master主节点,两个slave从节点,三个sentinel哨兵节点。这样就把redis的一主两从结合起来了。

640?wx_fmt=png

下来模拟故障切换演练,当master挂掉后,让新的slave自动接管,并升级为新的master。登录哨兵节点:执行 info sentinel,可以看到6379为主库,有2个从库,3个哨兵节点。

640?wx_fmt=png

查看哨兵日志,日志中提示+switch-master mymaster ip 6379 ip 6380,可以看到主库由6379自动切换到了 6380.

640?wx_fmt=png

此时登录6380查看信息,看看是否成为了新的主库:

640?wx_fmt=png

登录从库 6381 进行查看,还是从库,没有发生改变。

640?wx_fmt=png

此时在启动down掉的6379库,看看是变成了主库呢还是成为了新的从库。

640?wx_fmt=png

故障演练成功。


总结:当主库down掉后,会进行投票选举,由哨兵检测并自动去进行切换。在failover之后,原master修复好后会变为新master的从库,并不会变成独立的一台master。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis集群故障处理是指在Redis分布式集群中,当出现故障或异常情况时,需要采取相应的措施来恢复正常运行。以下是一些常见的Redis集群故障处理方法: 1. 主节点故障:当Redis主节点发生故障时,需要进行主从切换。首先,从节点会自动被选举为新的主节点。然后,需要将其他从节点重新配置为新的主节点的从节点。最后,将原来的主节点修复后重新加入集群。 2. 从节点故障:当Redis从节点发生故障时,可以通过以下步骤进行处理。首先,检查从节点是否可以修复,如果可以修复,则进行修复操作。如果无法修复,则将该从节点从集群中移除。然后,重新配置其他从节点以连接到其他可用的主节点。 3. 集群分区:当Redis集群发生分区时,即集群中的节点无法相互通信时,需要进行分区处理。首先,需要确定哪些节点处于不同的分区中。然后,可以选择手动合并分区或者等待网络问题解决后自动合并分区。 4. 数据丢失:当Redis集群中的数据丢失时,可以通过备份和恢复操作来解决。首先,需要确保有可用的数据备份。然后,可以使用备份数据来恢复丢失的数据。 5. 网络故障:当Redis集群中发生网络故障时,需要检查网络连接是否正常。如果网络连接正常,则可能是由于其他原因导致的故障,需要进行相应的排查和修复。 以上是一些常见的Redis集群故障处理方法,具体的处理方法可能会因实际情况而有所不同。在处理故障时,建议参考Redis官方文档和相关资源,以获取更详细和准确的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值