#云原生征文# 【Harbor故障排查篇】Harbor jobservice组件异常问 原创 精华

键客李大白
发布于 2022-5-18 17:14
浏览
3收藏

👨🏻‍🎓博主介绍:大家好!我是李大白,一名运维容器运维工程师,热爱分享知识🌟 
🌈擅长领域:云原生、数据库、自动化运维
🙏🏻如果本文章对小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏!
🤝如果在文章描述时如有错,恳请各位大佬指正,在此感谢!!!
🍂 落叶而知秋,博闻而强识!
📕  精品专栏:​ ​Harbor进阶实战


问题描述

在Harbor UI管理界面执行垃圾回收时出现报错:
#云原生征文# 【Harbor故障排查篇】Harbor jobservice组件异常问-鸿蒙开发者社区

处理过程

查看Harbor各个组件的服务状态

[root@docker-man-01 harbor]# docker-compose ps
      Name                     Command                  State                 Ports          
---------------------------------------------------------------------------------------------
chartmuseum         /docker-entrypoint.sh            Up (healthy)   9999/tcp                 
harbor-core         /harbor/start.sh                 Up (healthy)                            
harbor-db           /entrypoint.sh postgres          Up (healthy)   5432/tcp                 
harbor-jobservice   /harbor/start.sh                 Exit 1                                  
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       nginx -g daemon off;             Up (healthy)   80/tcp                   
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:8021->80/tcp     
redis               docker-entrypoint.sh redis ...   Up             6379/tcp                 
registry            /entrypoint.sh /etc/regist ...   Up (healthy)   5000/tcp                 
registryctl         /harbor/start.sh                 Up (healthy)  

#云原生征文# 【Harbor故障排查篇】Harbor jobservice组件异常问-鸿蒙开发者社区

可以看到harbor-jobservice异常退出状态,说明harbor-jobservice组件有问题。接下来查看这个组件的日志来进行进一步的分析。

获取harbor-jobservice组件的日志

从harbor-log日志组件中将harbor-jobservice的日志从容器提取到当前目录进行分析。也可以进容器harbor-log容器里面查看日志,但是容器里面无法使用vim打开日志文件,不好分析,可以将日志文件导出来。

$ docker cp harbor-log:/var/log/docker/jobservice.log   ./jobservice-1.log

Jobservice日志分析

[root@docker-man-01 harbor]# vim ./jobservice-1.log
ERROR: observer.write - MISCONF Redis is configured to save RDB snapshots, 
but it is currently not able to persist on disk. 
Commands that may modify the data set are disabled, 
because this instance is configured to report errors during writes if RDB snapshotting fails 
(stop-writes-on-bgsave-error option). 
Please check the Redis logs for details about the RDB error.
[FATAL] [/jobservice/main.go:81]: redis sub/pub chan error:
MISCONF Redis is configured to save RDB snapshots,
but it is currently not able to persist on disk.
Commands that may modify the data set are disabled,
because this instance is configured to report errors during writes if RDB snapshotting fails 
(stop-writes-on-bgsave-error option). Please check the Redis logs for details about the RDB error.

#云原生征文# 【Harbor故障排查篇】Harbor jobservice组件异常问-鸿蒙开发者社区

意思就是:
Redis配置为保存RDB快照,但它目前无法在磁盘上持久化。可能修改数据集的命令被禁用,因为此实例配置为在RDB快照失败时报告写入期间的错误(在bgsave error选项上停止写入)。有关RDB错误的详细信息,请查看Redis日志。

看来是Redis缓存组件有异常,需要进一步分析redis缓存组件的日志来排错。

获取Redis组件的日志

将redis缓存组件的日志也导出来进行分析。

[root@docker-man-01 harbor]# docker  cp   harbor-log:/var/log/docker/redis.log   ./redis.log

查看日志

[root@docker-man-01 harbor]#  vim + redis.log
832102 May 18 03:56:04 172.20.0.1 redis[25189]: 8:M 17 May 19:56:04.173 # Background saving error
832103 May 18 03:56:10 172.20.0.1 redis[25189]: 8:M 17 May 19:56:10.087 * 1 changes in 900 seconds. Saving...
832104 May 18 03:56:10 172.20.0.1 redis[25189]: 8:M 17 May 19:56:10.088 * Background saving started by pid 2038
832105 May 18 03:56:10 172.20.0.1 redis[25189]: 2038:C 17 May 19:56:10.089 # Failed opening the RDB file dump.rdb (in server root dir /var/lib/redis) for saving: 
No space left on device   #磁盘空间不足

#云原生征文# 【Harbor故障排查篇】Harbor jobservice组件异常问-鸿蒙开发者社区
无法打开RDB文件转储。用于保存的rdb(在服务器根目录/var/lib/redis中):设备上没有磁盘空间。

清理磁盘空间

找到对应分区中占用磁盘较多的数据移走或者删除来释放磁盘空间。

重启Harbor控制台

[root@docker-man-01 harbor]# docker-compose down   #停止Harbor服务
[root@docker-man-01 harbor]# docker-compose up  -d  #启动Harbor

查看Harbor服务是否正常

[root@docker-man-01 harbor]# docker-compose  ps

服务正常,再到Harbor UI管理界面进行“垃圾清理”操作!可以成功,问题成功解决。

原因总结

从分析jobservice任务组件和Redis缓存组件的日志可以发现,主要原因是主机的磁盘空间不足,导致Redis缓存组件中的数据在做持久化rbd文件时失败,jobservice任务组件在执行“垃圾清理”任务时失败。

【本文正在参加云原生有奖征文活动】,活动链接:https://ost.51cto.com/posts/12598

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
已于2022-5-18 17:26:07修改
7
收藏 3
回复
举报
回复
    相关推荐