一、redis连接集群error
这种情况一般是因为启动redis-cli时没有设置集群模式所导致
./redis-cli -c -h <ip> -p <port> -a <password>
二、集群关闭后重启报错
[ERR] Node 192.168.12.232:7000 is not empty.
Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决方法:
1)、停止所有redis进程,将需要新增的节点下aof、rdb等本地备份文件删除;
2)、同时将新Node的集群配置文件删除,删除你redis.conf里面cluster-config-file所在的文件,一般为nodes.conf;
3)、再次添加新节点如果还是报错,则登录新Node,./redis-cli -c -h <ip> -p <port> -a <password> 对redis数据库进行清除:
192.168.12.232:7000> flushdb #清空当前数据库
启动redis进程重新执行集群新建
三、Redis (error) NOAUTH Authentication required
出现认证问题,应该是设置了认证密码,输入密码既可以啦
注意密码是字符串形式! auth “yourpassword”
四、Redis集群状态异常
进入redis客户端,查看集群状态,执行命令:cluster nodes,发现slave存在一节点存在fail
解决方法:
- 节点摘除:cluster forget <> fail状态的节点ID
- 重启该节点redis服务
- 针对该节点启动后重新加入集群:cluster replicate <> 原master节点ID
如果master节点挂了,备节点会主动升主,所以指定的节点永远是master节点
五、.Redis集群使用中突然挂掉
5.1、背景
通过三台机器搭建了Redis高可用集群,每台机器部署两个redis实例,形成三主三从节点。故障发生于一台机器磁盘爆掉,导致整个Redis集群异常,影响整个网络业务的创建。
5.2、问题分析
Redis集群异常原因: 故障机器运行了集群两个master节点,宕机后导致集群选举机制异常,不能自动进行主从切换。
机器宕机原因: redis运行主要依赖内存,RDB期间会消耗大量内存,内存不足导致机器异常。
5.3、问题处理
1)手动进行redis主从切换
/var/redis/cluster/7000/bin/redis-cli -c -h <slave-ip> -p <slave-port> -a <pwd> CLUSTER FAILOVER
2)异常机器重启恢复redis及相关组件服务
3)脚本巡检redis集群状态,检查主机存在一套redis集群两个master节点的,进行手动切换
5.4、反思总结
1)监控机制覆盖不够全面,没监控同一台机器存在双master场景;
2)机器资源分配评估不到位,应考虑极端RDB场景;
3)最后,从研发角度看待redis集群故障问题,发现团队对高可用底层原理、中间件熟悉度不够,除了加强原理学习之外,在部署相关组件时还要多做实操验证,另外监控覆盖不到位也会留下隐患。