1. 项目场景

host os:Kylin-Server-10-SP1
docker: docker-ce-18.09.7
cloud: openstack queens


2. 问题描述及原因分析

云平台web输入正确的用户名和密码后,出现提示“您为登录或者认证已过期,请重新登录”,一直循环往复,登录不了,如下如:
在这里插入图片描述
通过F12进入调试模式,然后重新输入再次登录,获取到Internal Server Error及You can’t write a against a read only slave,如下信息:
在这里插入图片描述
针对Internal Server Error进一步点击,查看reponse,也是报You can’t write a against a read only slave,从WEB架构了解到采用了redis作为token的缓存,怀疑redis缓存只读不可写有关,进入redis容器,通过redis-cli连接,例如:redis-cli -h x.x.x.x -a $redis_password,进入redis交互模式,执行FLUSHDB,出现了页面的报错,如下:
在这里插入图片描述验证了猜想,故是redis的问题,简单粗暴的方式就把redis停掉,然后删除数据,重新初始化生成,如下:

docker stop redis_sentinel redis
rm -rf /var/lib/docker/volumes/redis/_data/*
docker start redis_sentinel redis

若是三控,则三个节点均要执行。

还有可能是时间终端与服务器时间不一致等等情况。


3. 解决方案

redis的问题,简单粗暴的方式就把redis停掉,然后删除数据,重新初始化生成,如下:

docker stop redis_sentinel redis
rm -rf /var/lib/docker/volumes/redis/_data/*
docker start redis_sentinel redis

若是三控,则三个节点均要执行。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐