OpenLegion - Agent 舰队管理
约 974 字大约 3 分钟
2026-03-07
主从分布式架构的 Agent 管理系统,Docker API 控制层,管理几十个 Agent 舰队。
核心特性
主从架构
- Master 控制节点
- Worker 执行节点
- Docker API 集成
- 分布式协调
舰队管理
- 批量部署
- 统一调度
- 负载均衡
- 故障恢复
规模支持
- 支持 100+ Agent
- 水平扩展
- 性能优化
- 资源隔离
统一控制
- 中央控制台
- 集群管理
- 任务分发
- 状态监控
快速开始
安装
# 克隆仓库
git clone https://github.com/openlegion-ai/openlegion.git
cd openlegion
# 启动 Master
docker-compose up -d master
# 添加 Worker
docker-compose up -d worker1 worker2 worker3配置
# master.yaml
version: '3.8'
services:
master:
image: openlegion/master:latest
ports:
- "8080:8080"
environment:
- ETCD_ENDPOINTS=etcd:2379
- DOCKER_HOST=tcp://dockerd:2375
volumes:
- ./config:/app/config# worker.yaml
version: '3.8'
services:
worker:
image: openlegion/worker:latest
environment:
- MASTER_ADDR=master:8080
- WORKER_ID=worker-1
volumes:
- /var/run/docker.sock:/var/run/docker.sock使用
# 部署 Agent 舰队
openlegion fleet deploy --name my-fleet --agents 10
# 扩缩容
openlegion fleet scale my-fleet --replicas 20
# 查看状态
openlegion fleet status my-fleet技术架构
系统架构
┌─────────────────────────────────────────┐
│ Control Plane (Master) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ API │ │Scheduler│ │ etcd │ │
│ │ Server │ │ │ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
├─────────────────────────────────────────┤
│ Data Plane (Workers) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │Worker 1 │ │Worker 2 │ │Worker N │ │
│ │ ┌─────┐ │ │ ┌─────┐ │ │ ┌─────┐ │ │
│ │ │Agent│ │ │ │Agent│ │ │ │Agent│ │ │
│ │ └─────┘ │ │ └─────┘ │ │ └─────┘ │ │
│ └─────────┘ └─────────┘ └─────────┘ │
└─────────────────────────────────────────┘Master 组件
// Master API Server
type MasterServer struct {
etcd *etcd.Client
sched *Scheduler
fleet *FleetManager
}
func (s *MasterServer) DeployFleet(req *DeployRequest) (*DeployResponse, error) {
// 1. 创建舰队
fleet := NewFleet(req.Name, req.AgentCount)
// 2. 调度分配
placements := s.sched.Schedule(fleet.Agents, s.getWorkers())
// 3. 下发任务
for _, p := range placements {
s.dispatchAgent(p.Worker, p.Agent)
}
return &DeployResponse{FleetID: fleet.ID}, nil
}
// 调度器
func (s *Scheduler) Schedule(agents []*Agent, workers []*Worker) []*Placement {
var placements []*Placement
for _, agent := range agents {
// 选择负载最低的 Worker
worker := s.selectLeastLoaded(workers)
placements = append(placements, &Placement{
Agent: agent,
Worker: worker,
})
// 更新负载
worker.AddLoad(agent.Resources)
}
return placements
}Worker 组件
// Worker Agent 执行器
type Worker struct {
id string
docker *docker.Client
agents map[string]*RunningAgent
heartbeat *HeartbeatClient
}
func (w *Worker) StartAgent(config *AgentConfig) error {
// 1. 拉取镜像
w.docker.ImagePull(config.Image)
// 2. 创建容器
container, err := w.docker.ContainerCreate(&container.Config{
Image: config.Image,
Env: config.Env,
}, nil, nil, "")
// 3. 启动容器
w.docker.ContainerStart(container.ID)
// 4. 注册 Agent
w.agents[config.Name] = &RunningAgent{
ID: container.ID,
Config: config,
StartedAt: time.Now(),
}
return nil
}
// 心跳汇报
func (w *Worker) startHeartbeat() {
ticker := time.NewTicker(10 * time.Second)
for range ticker.C {
w.heartbeat.Report(&WorkerStatus{
ID: w.id,
AgentCount: len(w.agents),
CPU: getCPUUsage(),
Memory: getMemoryUsage(),
})
}
}功能列表
舰队管理
资源管理
监控运维
任务调度
使用示例
创建舰队
# 创建 10 个 Agent 组成的舰队
openlegion fleet create \
--name marketing-team \
--agents 10 \
--image openclaw/gpt-4 \
--env MODEL=gpt-4 \
--resources cpu=2,memory=4Gi管理舰队
# 扩缩容
openlegion fleet scale marketing-team --replicas 20
# 滚动更新
openlegion fleet update marketing-team --image openclaw/gpt-4-v2
# 查看状态
openlegion fleet status marketing-team
# 输出
# NAME AGENTS RUNNING PENDING FAILED
# marketing-team 20 18 1 1任务分发
# 广播任务到所有 Agent
openlegion task broadcast --fleet marketing-team \
--input "分析今天的销售数据"
# 选择性分发
openlegion task distribute --fleet marketing-team \
--filter "role=analyzer" \
--input "生成报告"监控面板
# 查看集群状态
openlegion cluster status
# 输出
# CLUSTER STATUS
# Workers: 5/5 Online
# Agents: 45/50 Running
# CPU: 120/200 Cores (60%)
# Memory: 400/800 GiB (50%)
#
# FLEETS
# marketing-team: 20 agents (all running)
# support-team: 15 agents (14 running, 1 failed)
# dev-team: 10 agents (all running)适用场景
推荐使用
- 多团队协作: 多个团队共享算力
- 大规模部署: 需要管理 50+ Agent
- 负载波动: 需要动态扩缩容
- 故障恢复: 需要高可用
规模能力
| 规模 | Workers | Agents | 备注 |
|---|---|---|---|
| 小型 | 3 | 50 | 入门级 |
| 中型 | 10 | 200 | 生产级 |
| 大型 | 50 | 1000 | 企业级 |
相关链接
- GitHub: openlegion-ai/openlegion
- 文档: 使用文档