主GitLab Runner故障时,如何自动切换至备用Runner执行任务?
GitLab Runner 故障自动切换到备用实例的实现方案
这个需求完全可行,不需要额外第三方工具,核心靠GitLab自带的Runner调度逻辑和标签匹配机制就能实现,具体配置步骤如下:
给两台Runner配置完全相同的标签
注册Runner时可以用命令行参数gitlab-runner register --tag-list "production,deploy",也能在GitLab后台的Runner管理页面手动添加标签。只要两台Runner标签一致,GitLab就会把它们归为同一个可用资源池,当CI作业指定这些标签时,调度器会从池子里挑可用的Runner执行。确保两台Runner都处于激活状态
在项目的「Settings → CI/CD → Runners」页面检查,两台Runner的状态必须是绿色的「Active」。如果你的作业没指定标签,还要给两台Runner都勾选「Run untagged jobs」选项。自动故障切换的逻辑
当主Runner出现故障(离线、进程崩溃、资源耗尽无法执行作业),GitLab的CI调度器会在几次尝试后检测到该Runner不可用,自动把作业分配给资源池里正常运行的备用Runner,全程不需要手动干预。可选优化配置
- 调整Runner并发数:在Runner的
config.toml文件里设置concurrent参数,控制单台Runner同时执行的作业数,避免单台过载; - 配置作业重试:在
.gitlab-ci.yml里给关键作业加retry关键字,比如retry: 2,加快故障时的切换速度,示例:production_deploy: script: - ./deploy.sh tags: - production retry: 2
- 调整Runner并发数:在Runner的
内容的提问来源于stack exchange,提问作者user8126831
相关产品推荐
相关产品推荐

