🎯 学习目标:学会部署方案:云服务器、容器编排、高可用架构
⏱️ 阅读时间:约 12 分钟
💡 前置要求:无
☁️ 云服务器选择
主流云厂商对比
| 阿里云 | ||
| 腾讯云 | ||
| 华为云 | ||
| AWS | ||
| Azure |
服务器配置建议
开发环境
配置:CPU:2核内存:4GB磁盘:50GBSSD带宽:1Mbps适用:个人开发、测试环境成本:约100元/月生产环境(小型)
配置:CPU:4核内存:8GB磁盘:100GBSSD带宽:5Mbps适用:小型企业、日活<1000成本:约500元/月生产环境(中型)
配置:CPU:8核内存:16GB磁盘:200GBSSD带宽:10Mbps适用:中型企业、日活<10000成本:约1500元/月🐳 容器化部署
Docker 配置
# DockerfileFROM node:18-alpineWORKDIR /app# 复制依赖COPY package*.json ./RUN npm ci --only=production# 复制代码COPY . .# 暴露端口EXPOSE8080# 健康检查HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ CMD wget -qO- http://localhost:8080/health || exit 1# 启动命令CMD ["node", "src/index.js"]Docker Compose
# docker-compose.ymlversion:'3.8'services:openclaw:build:.ports:-"8080:8080"environment:-NODE_ENV=production-MODEL_API_KEY=${MODEL_API_KEY}volumes:-./data:/app/data-./logs:/app/logsrestart:alwayshealthcheck:test: ["CMD", "wget", "-qO-", "http://localhost:8080/health"]interval:30stimeout:3sretries:3redis:image:redis:7-alpineports:-"6379:6379"volumes:-redis-data:/datarestart:alwayspostgres:image:postgres:15-alpineenvironment:-POSTGRES_USER=openclaw-POSTGRES_PASSWORD=${DB_PASSWORD}-POSTGRES_DB=openclawvolumes:-postgres-data:/var/lib/postgresql/datarestart:alwaysvolumes:redis-data:postgres-data:🎯 容器编排
Kubernetes 部署
# deployment.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:openclawspec:replicas:3selector:matchLabels:app:openclawtemplate:metadata:labels:app:openclawspec:containers:-name:openclawimage:openclaw/openclaw:latestports:-containerPort:8080env:-name:NODE_ENVvalue:"production"-name:MODEL_API_KEYvalueFrom:secretKeyRef:name:openclaw-secretskey:model-api-keyresources:requests:memory:"512Mi"cpu:"250m"limits:memory:"1Gi"cpu:"500m"livenessProbe:httpGet:path:/healthport:8080initialDelaySeconds:30periodSeconds:10readinessProbe:httpGet:path:/readyport:8080initialDelaySeconds:5periodSeconds:5---apiVersion:v1kind:Servicemetadata:name:openclaw-servicespec:selector:app:openclawports:-port:80targetPort:8080type:LoadBalancer🏗️ 高可用架构
基础架构图
┌─────────────┐ │ 负载均衡器 │ │ (SLB/ALB) │ └──────┬──────┘ │ ┌────────────┼────────────┐ │ │ │ ┌──────▼──────┐ ┌──▼────────┐ ┌─▼──────────┐ │ 应用节点 1 │ │ 应用节点 2 │ │ 应用节点 3 │ │ (OpenClaw) │ │ (OpenClaw)│ │ (OpenClaw) │ └──────┬──────┘ └─────┬─────┘ └─────┬──────┘ │ │ │ └──────────────┼─────────────┘ │ ┌──────────────┼─────────────┐ │ │ │ ┌──────▼──────┐ ┌────▼─────┐ ┌────▼──────┐ │ Redis │ │ Postgres │ │ OSS │ │ (缓存) │ │ (数据库) │ │ (对象存储) │ └─────────────┘ └──────────┘ └───────────┘多可用区部署
availabilityZones:-zone:cn-hangzhou-gnodes:2-zone:cn-hangzhou-hnodes:2-zone:cn-hangzhou-inodes:2# 数据库主从database:primary:zone:cn-hangzhou-greplicas:-zone:cn-hangzhou-h-zone:cn-hangzhou-i📊 监控告警
监控指标
const metrics = {// 系统指标system: {cpu: 'CPU 使用率',memory: '内存使用率',disk: '磁盘使用率',network: '网络流量' },// 应用指标application: {responseTime: '响应时间',throughput: '吞吐量',errorRate: '错误率',activeConnections: '活跃连接数' },// 业务指标business: {requestCount: '请求数',activeUsers: '活跃用户数',skillUsage: '技能使用次数' }};告警规则
# prometheus 告警规则groups:-name:openclawrules:-alert:HighCPUexpr:avg(rate(container_cpu_usage_seconds[5m]))>0.8for:5mlabels:severity:warningannotations:summary:"CPU 使用率过高"-alert:HighErrorRateexpr:rate(http_requests_total{status=~"5.."}[5m])/rate(http_requests_total[5m])>0.05for:2mlabels:severity:criticalannotations:summary:"错误率过高"-alert:HighResponseTimeexpr:histogram_quantile(0.95,rate(http_request_duration_seconds_bucket[5m]))>2for:5mlabels:severity:warningannotations:summary:"响应时间过长"🚀 部署流程
CI/CD 流程
# GitHub Actionsname:Deployon:push:branches: [main]jobs:test:runs-on:ubuntu-lateststeps:-uses:actions/checkout@v3-uses:actions/setup-node@v3with:node-version:'18'-run:npmci-run:npmtestbuild:needs:testruns-on:ubuntu-lateststeps:-uses:actions/checkout@v3-name:BuildandpushDockerimageuses:docker/build-push-action@v4with:push:truetags:openclaw/openclaw:latestdeploy:needs:buildruns-on:ubuntu-lateststeps:-name:DeploytoKubernetesuses:azure/k8s-deploy@v4with:manifests:| k8s/deployment.yamlimages:|openclaw/openclaw:latest部署检查清单
部署前检查
代码已通过测试 安全扫描无问题 性能测试达标 备份已完成 回滚方案已准备 监控告警已配置 文档已更新
部署后检查
服务正常运行 健康检查通过 日志正常 监控指标正常 用户反馈正常
✅ 学完这篇你能做什么
学完 Day 26,你将能够:
✅ 选择合适的云服务器 ✅ 配置 Docker 容器 ✅ 部署 Kubernetes 集群 ✅ 设计高可用架构 ✅ 配置监控告警
🔜 下篇预告
Day 27:备份与恢复:数据备份、配置迁移、灾难恢复
💾 数据备份 🔄 配置迁移 🚨 灾难恢复
💬 互动环节
你的部署经验是什么?有什么踩坑经历?留言分享!
公众号:OpenClaw 研习社
系列:OpenClaw 30 天入门到精通
作者:OpenClaw 研习社
夜雨聆风