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

Drone.IO:如何以轮询方式在两个Agent/Worker间均匀分配任务?

解决Drone 0.8.5 Agent任务分配不均衡的问题

针对你遇到的两台Drone Agent任务分配不均(机器1独占所有任务)的情况,结合Drone 0.8.x的特性,这里有几个实用的方案来实现负载均衡,不需要取消并发:

1. 调整Agent轮询间隔,抵消本地Agent抢单优势

机器1的Agent和Server同机,网络延迟极低,所以会比机器2的Agent更快抢到任务。你可以通过调整轮询间隔来平衡这个差异:

  • 给机器1的Agent设置更长的轮询间隔:
    # 启动机器1的Agent时添加环境变量
    DRONE_AGENT_POLL=5s /bin/drone-agent
    
  • 机器2的Agent保持默认轮询间隔(1s)即可。

这样机器2的Agent会更频繁地向Server请求任务,抵消掉机器1的网络优势,让任务分配更接近轮询效果。

2. 配置Agent权重,引导任务分配比例

Drone 0.8.x支持通过DRONE_AGENT_WEIGHT环境变量设置Agent的权重,Server会根据权重比例分配任务:

  • 机器1的Agent保持默认权重(1):
    DRONE_AGENT_WEIGHT=1 /bin/drone-agent
    
  • 给机器2的Agent设置相同或更高的权重(比如设为1即可实现1:1的分配倾向):
    DRONE_AGENT_WEIGHT=1 /bin/drone-agent
    

如果机器2的硬件性能更好,还可以把权重设为2,让它承担更多任务,进一步优化负载分配。

3. 使用标签(Tags)实现严格的轮询式分配

如果需要完全精准的轮询控制,你可以给两台Agent设置不同标签,然后在流水线配置中交替指定任务运行节点:

  • 给机器1的Agent添加标签:
    DRONE_AGENT_TAGS=agent-1 /bin/drone-agent
    
  • 给机器2的Agent添加标签:
    DRONE_AGENT_TAGS=agent-2 /bin/drone-agent
    
  • 在.drone.yml中交替指定任务的运行节点:
    pipeline:
      build-task-1:
        image: golang
        commands:
          - go build
        node: agent-1
      test-task-1:
        image: golang
        commands:
          - go test
        node: agent-2
      # 后续任务继续交替指定agent-1和agent-2,实现严格轮询
    

这个方法需要修改流水线配置,但能完全掌控任务的分配目标,适合对负载均衡有严格要求的场景。

需要注意的是,Drone 0.8.x本身没有原生的严格轮询调度模式,但通过以上方法可以实现近似或可控的均衡负载效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:49