Agent Blue-Green Deployment(Agent蓝绿部署)是一种零停机部署策略,通过维护两套完全相同的Agent环境(蓝色和绿色),在新版本部署到非活跃环境并验证通过后,将流量瞬间切换到新环境。如果新版本出现问题,可以立即切回旧环境,实现秒级回滚。
步骤1:新版本部署到Green环境
步骤2:在Green环境进行健康检查和测试
步骤3:验证通过后,流量切换到Green
步骤4:Green成为活跃环境,Blue变为备用
# 部署脚本:蓝绿切换
#!/bin/bash
BLUE_PORT=3000
GREEN_PORT=3001
ACTIVE=$(cat /tmp/openclaw-active-env)
if [ "$ACTIVE" = "blue" ]; then
TARGET="green"
TARGET_PORT=$GREEN_PORT
OLD_PORT=$BLUE_PORT
else
TARGET="blue"
TARGET_PORT=$BLUE_PORT
OLD_PORT=$GREEN_PORT
fi
echo "🚀 部署到 $TARGET 环境 (端口: $TARGET_PORT)"
# 1. 在新环境部署新版本
cd ~/.openclaw-$TARGET
openclaw gateway start --port $TARGET_PORT
# 2. 健康检查
sleep 5
HEALTH=$(curl -s http://localhost:$TARGET_PORT/health)
if [ "$HEALTH" != "ok" ]; then
echo "❌ 健康检查失败,保留当前环境"
openclaw gateway stop --port $TARGET_PORT
exit 1
fi
# 3. 切换Nginx上游
sed -i "s/127.0.0.1:$OLD_PORT/127.0.0.1:$TARGET_PORT/" /etc/nginx/upstream-openclaw.conf
nginx -s reload
# 4. 更新活跃环境标记
echo "$TARGET" > /tmp/openclaw-active-env
# 5. 停止旧环境(保留以备回滚)
# openclaw gateway stop --port $OLD_PORT
echo "✅ 已切换到 $TARGET 环境"
# OpenClaw内置的热重载机制
# 修改配置后无需重启,直接热重载
# 方法1:通过gateway工具
# 在Agent会话中调用:
gateway(action="restart", reason="配置更新", note="正在热重载...")
# 方法2:命令行
openclaw gateway restart
# 方法3:配置热更新(不重启)
# 修改config.yaml后,OpenClaw自动检测并热加载
# 适用于大多数配置变更,除了模型切换
# 技能级别的灰度发布
# 先在测试Agent上验证新技能,再推广到所有Agent
agents:
list:
# 测试Agent - 使用新版技能
- id: "test-agent"
skills: ["my-skill@2.0.0"] # 新版本
# 生产Agent - 仍使用旧版技能
- id: "miaoquai"
skills: ["my-skill@1.0.0"] # 旧版本
# 验证通过后,更新所有Agent
# agents:
# list:
# - id: "miaoquai"
# skills: ["my-skill@2.0.0"]
| 策略 | 停机时间 | 回滚速度 | 资源消耗 | 复杂度 |
|---|---|---|---|---|
| 直接替换 | 有 | 慢 | 低 | 低 |
| 蓝绿部署 | 无 | 极快(秒级) | 高(双倍) | 中 |
| 滚动更新 | 无 | 中 | 中 | 中 |
| 金丝雀发布 | 无 | 快 | 中 | 高 |
| 热重载 | 无 | 快 | 低 | 低 |
陷阱1:环境不一致 — Blue和Green环境的配置、依赖、数据必须完全一致,否则切换后可能出现"在Blue正常但Green异常"的情况。
陷阱2:数据库迁移 — 如果新版本涉及数据库schema变更,蓝绿部署会更复杂,需要考虑向后兼容性。
陷阱3:会话状态丢失 — 切换环境时,活跃的Agent会话可能中断。需要考虑会话状态的持久化和恢复。
1. 先用热重载 — 大多数OpenClaw配置变更可以通过热重载完成,不需要完整的蓝绿部署。
2. 自动化健康检查 — 切换前必须验证新环境的健康状态,包括Agent响应、工具可用性、记忆一致性。
3. 保留旧环境 — 切换后不要立即删除旧环境,保留至少30分钟以备回滚。
4. 监控切换后指标 — 切换后密切监控错误率、响应时间、Token消耗等指标,及时发现异常。