Agent跨机器分布式任务调度,多Agent节点协同教程
本文围绕 172.Agent 跨机器分布式任务调度,多 Agent 节点协同展开。
读完你能在一组 Linux 服务器上完成 Agent 部署、节点注册和任务验证,适合刚接触分布式调度、需要把多台机器挂到同一套任务系统的新手。
这套方案适合什么场景
当单台机器无法扛住定时任务或批量处理时,可以用一个主控节点分配任务,多台服务器上的 Agent 分别执行。
这样既提升吞吐量,也能在单节点故障时自动转移任务。
准备三样东西
- 至少两台 Linux 服务器:一台做主控,其余做执行节点,示例 IP 为 172.16.1.10、172.16.1.11、172.16.1.12。
- Agent 可执行文件或安装包,本文以通用 agent 程序为例。
- 一个消息中间件或注册中心,示例使用 Redis,也可以用数据库轮询代替。
分三步完成多节点协同
第一步:在主控机搭好消息通道
sudo apt install redis-server -y
sudo systemctl enable --now redis-server
第二步:配置并启动 172.Agent
在每台执行节点上修改 agent.conf:
[agent]
agent_id=172
master=http://172.16.1.10:8080
broker=redis://172.16.1.10:6379/0
node_name=node-1
其中 agent_id=172 保持全局唯一,node_name 每台机器要改成不同值,例如 node-2、node-3。
启动命令:
./agent -c agent.conf
第三步:在主控后台确认节点上线
curl http://172.16.1.10:8080/api/nodes
返回结果里能看到 node-1、node-2 等节点状态为在线,说明多 Agent 节点已经协同注册成功。
遇到最多的三个坑
- 端口没有放行:主控的 8080 和 Redis 的 6379 必须在防火墙或云安全组中放行,否则节点注册失败。
- 服务器时间不同步:分布式任务依赖时间戳,先执行
date对比,偏差大的话用 chrony 同步。 agent_id冲突:多台机器如果都写相同 id,同一个任务会被重复执行,务必按节点编号区分。
怎么确认任务真的正常执行
向 172.Agent 调度系统提交一个测试任务,然后观察日志:
tail -f /var/log/agent/agent.log
如果不同节点的日志里分别出现 task received 和 task completed,说明分布式调度和节点协同已经生效。
也可以手动停掉一个节点,看任务是否会立即被其他节点接收,这是验证容错最直接的办法。
如果你正在处理 172.Agent 跨机器分布式任务调度,多 Agent 节点协同,建议先按本文步骤完整执行,再根据实际环境微调;
遇到异常时优先回看避坑和高频问题部分。