故障现象:
Harbor 登录时显示:核心服务不可用.
2. 排查思路
- 可以通过浏览器打开登录页面,所以判断服务应该是起来了.
- 在输入密码后报错,所以判断可能是登录验证时的错误,需要排除密码错误.
- 尝试重启Harbor来解除故障,毕竟重启大法可以解决大多数的问题.
- 查看/var/log/harbor下的日志检查具体原因.
3. 查找故障原因
3.1 确定用户名密码
vi harbor.yml
这里我们确认了并不是密码错误造成的.
3.2 重启Harbor服务
docker-compose down
docker-compose up -d
故障依旧
3.3 查看Harbor日志
3.3.1 core日志
tail /var/log/harbor/core.log
这里我们发现有很多关于redis的报错.redis是由容器启动的,我们再检查一下redis的日志.
3.3.2 redis日志
tail /var/log/harbor/redis.log
太棒了,我们得到了关键信息: Fatal error loading the DB: Invalid argument. Exiting. 那么事情就变得简单了.
4. 解决故障
4.1 故障原因分析
redis提供两种方式进行持久化. 1.是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化) 2.是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。 在redis服务重启的过程中,redis会自动加载dump.rdb文件以恢复上一次的状态,由于rdb文件版本高于redis服务器版本,导致rdb文件读取失败,服务无法启动,删除该文件就能解决这个故障。
4.2 故障排除
删除dump文件并重启Harbor
find / -name dump.rdb
rm -rf /data/harbor/redis/dump.rdb
docker-compose down
docker-compose up -d
5. 恢复正常
|