You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Harbor漏洞扫描器冻结,执行Redis FLUSHALL后扫描计划异常无法批量扫描

问题成因

Harbor配套Trivy运行时,会将如下数据存储在Redis中:

  • 扫描任务的分布式队列、批量扫描的任务分片元数据
  • 扫描计划的cron调度规则缓存、调度任务运行状态
  • 扫描请求的中间处理状态、前端列表查询的缓存数据

执行FLUSHALL清空Redis后,上述所有运行时数据全部丢失,直接触发如下异常:

  1. 扫描计划调度逻辑 无法匹配Redis缓存与数据库中存储的扫描计划配置,出现配置读写冲突,导致扫描计划设置功能失效
  2. 批量扫描的任务队列结构 被清空,harbor-jobservice无法生成批量扫描的任务分片,仅单个手动触发的即时扫描任务可以正常执行(即时任务无需依赖预建的队列结构)
  3. 前端请求扫描计划/扫描任务列表时,后端服务会反复重试拉取Redis中不存在的缓存数据,请求超时导致页面卡顿

所有镜像数据、镜像扫描结果元数据、扫描计划配置均持久化存储在Harbor数据库与镜像存储层,未受Redis清空操作影响,不会出现镜像丢失问题。

修复方案

所有操作均不触碰镜像存储与核心元数据,不会造成镜像丢失:

前置准备

  • 确认Harbor核心服务状态正常,执行命令检查:
    docker ps | grep -E "harbor-core|harbor-jobservice|harbor-redis|harbor-trivy-adapter"
    确认上述容器均为运行状态
  • 备份Harbor数据库,避免操作异常影响元数据:
    若使用默认内置PostgreSQL,执行命令:
    docker exec -it harbor-db pg_dump -U postgres registry > /opt/harbor_db_backup_$(date +%Y%m%d).sql

步骤1:清理残留的异常缓存

停止核心调度相关服务,避免修复过程中生成脏数据:

docker stop harbor-core harbor-jobservice

进入Redis清理扫描相关残留键值,避免和后续重建的缓存冲突:

docker exec -it harbor-redis redis-cli KEYS "scan:*" "trivy:*" "job:scan:*" | xargs -r redis-cli DEL

步骤2:重建扫描计划缓存

启动harbor-core服务,服务启动过程中会自动将数据库中存储的扫描计划配置同步写入Redis,恢复配置读写能力:

docker start harbor-core

等待2分钟待服务完全启动后再执行后续操作。

步骤3:重建批量扫描队列

启动harbor-jobservice服务,服务启动时会自动检测扫描任务队列是否存在,缺失时自动完成队列结构初始化:

docker start harbor-jobservice

步骤4:功能验证

  1. 访问Harbor控制台进入扫描计划页面,确认可以正常修改扫描周期、触发方式等配置
  2. 手动触发全量批量扫描,确认任务可以正常下发,多个镜像扫描任务排队执行
  3. 若批量扫描触发无响应,可调用API手动触发全量扫描:
  • Harbor v2.x版本:curl -u <管理员账号>:<管理员密码> -X POST http://<Harbor访问地址>/api/v2.0/scanner/all
  • Harbor v1.x版本:curl -u <管理员账号>:<管理员密码> -X POST http://<Harbor访问地址>/api/scanners/all

异常备选方案

如果上述操作完成后仍存在异常,直接重启整个Harbor栈即可完成所有运行时数据重建:

cd <Harbor安装目录>
docker-compose down
docker-compose up -d

内容的提问来源于stack exchange,提问作者vovagib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:54:04