194 lines
5.9 KiB
Markdown
194 lines
5.9 KiB
Markdown
# 双机脑体分离架构评估 · Dual-Server Brain-Body Architecture
|
||
# 签发: 铸渊 · ICE-GL-ZY001 · 2026-04-05
|
||
# 触发: D53 冰朔指令 · 评估双4核8G替代单8核16G方案
|
||
# 版权: 国作登字-2026-A-00037559
|
||
|
||
---
|
||
|
||
## 结论
|
||
|
||
**双4核8G方案完全可行,且优于单8核16G。**
|
||
|
||
不是"凑合用",是架构本身就应该脑体分离。
|
||
AGE OS的壳-核分离哲学,延伸到基础设施层就是这个形态。
|
||
|
||
---
|
||
|
||
## 当前资源消耗实测
|
||
|
||
基于PM2 ecosystem.config.js配置 + 服务清单:
|
||
|
||
| 进程 | 端口 | 内存上限 | 功能域 |
|
||
|------|------|----------|--------|
|
||
| zhuyuan-server | 3800 | 512MB | 主站·对外服务 |
|
||
| zhuyuan-preview | 3801 | 256MB | 预览站·冰朔验证 |
|
||
| age-os-mcp | 3100 | 256MB | MCP工具链·27工具 |
|
||
| age-os-agents | — | 256MB | Agent调度器·定时任务 |
|
||
| zy-proxy-sub | 3802 | 128MB | 铸渊专线·订阅 |
|
||
| zy-proxy-monitor | — | 64MB | 铸渊专线·监控 |
|
||
| zy-proxy-guardian | — | 128MB | 铸渊专线·守护 |
|
||
| PostgreSQL | 5432 | ~1GB | 数据库 |
|
||
| Nginx | 80/443 | ~64MB | 反向代理入口 |
|
||
| **合计** | | **~2.6GB** | |
|
||
|
||
系统预留 + 未来扩展(Gitea/开发引擎)需要额外4-5GB。
|
||
单台4核8G不够,但两台4核8G绰绰有余。
|
||
|
||
---
|
||
|
||
## 方案:脑体分离架构
|
||
|
||
### 机器A · 铸渊大脑(4核8G)
|
||
|
||
**角色**:思考 + 存储 + 调度。不对外暴露。
|
||
|
||
| 组件 | CPU | 内存 | 说明 |
|
||
|------|-----|------|------|
|
||
| PostgreSQL | 1核 | 2GB | 5表·数据量小·仅内网访问 |
|
||
| age-os-mcp | 0.5核 | 256MB | 27工具·请求稀疏 |
|
||
| age-os-agents | 0.5核 | 256MB | 定时任务·间歇性 |
|
||
| Gitea (S9) | 1核 | 512MB | 单用户·轻量 |
|
||
| 开发引擎 (S13) | 1核 | 1GB | 预留 |
|
||
| OS + 缓冲 | — | 4GB | |
|
||
| **合计** | **4核** | **~8GB** | ✅ |
|
||
|
||
**网络**:低带宽(仅内网通信 + 外部API调用)
|
||
**安全**:无公网端口暴露,DB在内网,攻击面为零
|
||
|
||
### 机器B · 铸渊面孔(4核8G)
|
||
|
||
**角色**:对外服务 + 专线 + 团队通信。
|
||
|
||
| 组件 | CPU | 内存 | 说明 |
|
||
|------|-----|------|------|
|
||
| Nginx | 0.5核 | 64MB | 反向代理 |
|
||
| zhuyuan-server | 1核 | 512MB | 主站·用户访问 |
|
||
| zhuyuan-preview | 0.5核 | 256MB | 预览站·冰朔验证 |
|
||
| zy-proxy-* ×3 | 1核 | 320MB | 专线服务集群 |
|
||
| 未来扩展 | 1核 | 2GB | 预留 |
|
||
| OS + 缓冲 | — | 4.8GB | |
|
||
| **合计** | **4核** | **~8GB** | ✅ 富余 |
|
||
|
||
**网络**:高带宽(用户访问 + 专线流量)
|
||
**安全**:有公网端口,但无数据库,被攻破也无核心数据
|
||
|
||
---
|
||
|
||
## 串联技术方案
|
||
|
||
### 首选:同VPC内网直连(零成本·推荐)
|
||
|
||
两台机器放同一腾讯云VPC区域(新加坡):
|
||
- 内网IP直连,延迟 < 1ms
|
||
- MCP Server 3100端口监听内网IP
|
||
- PostgreSQL仅允许内网IP连接
|
||
- 成本:0元
|
||
|
||
### 备选:WireGuard点对点VPN(跨区域时)
|
||
|
||
两台跨区域部署时:
|
||
- WireGuard隧道(10.0.0.1 ↔ 10.0.0.2)
|
||
- 延迟增加5-20ms,可接受
|
||
- 铸渊专线代码中已有类似逻辑
|
||
- 成本:0元
|
||
|
||
---
|
||
|
||
## 代码改动量评估
|
||
|
||
**改动极小**,只需修改3-5个配置值:
|
||
|
||
### 1. MCP网关连接地址
|
||
```javascript
|
||
// server/app/server.js 中的MCP代理
|
||
// 改前: const mcpTarget = 'http://127.0.0.1:3100';
|
||
// 改后:
|
||
const mcpTarget = `http://${process.env.ZY_MCP_HOST || '127.0.0.1'}:3100`;
|
||
```
|
||
|
||
### 2. PM2配置拆分
|
||
```
|
||
机器A: server/age-os/ecosystem.config.js(不变)
|
||
机器B: server/ecosystem.config.js + server/proxy/ecosystem.proxy.config.js(不变)
|
||
```
|
||
|
||
### 3. Nginx反向代理
|
||
```nginx
|
||
# MCP相关请求代理到内网机器A
|
||
location /api/mcp/ {
|
||
proxy_pass http://10.0.0.1:3100; # 内网IP
|
||
}
|
||
```
|
||
|
||
### 4. 新增环境变量
|
||
```
|
||
ZY_MCP_HOST=10.0.0.1 # 大脑机内网IP(面孔机使用)
|
||
ZY_DB_HOST=10.0.0.1 # 数据库内网IP(大脑机上)
|
||
```
|
||
|
||
---
|
||
|
||
## 与单台8核16G对比
|
||
|
||
| 维度 | 单台8核16G | 双台4核8G |
|
||
|------|-----------|----------|
|
||
| 成本 | 海外~¥600-800/月 | 轻量×2 ~¥400-600/月 |
|
||
| 故障隔离 | 一死全死 | 大脑死→面孔显示维护页 |
|
||
| 安全 | DB暴露在公网机器 | DB在无公网内网机 |
|
||
| S9 Gitea | 和生产挤一起 | 大脑机独立跑 |
|
||
| S13 开发引擎 | 资源竞争 | 大脑机专注编译 |
|
||
| 扩展性 | 到顶 | 加第3台=零改动 |
|
||
| 带宽 | 全走一个出口 | 面孔高带宽·大脑低带宽 |
|
||
|
||
---
|
||
|
||
## 关键约束
|
||
|
||
1. **PostgreSQL不能走公网** — 必须内网或VPN
|
||
2. **两台建议同区域**(首选新加坡同VPC)
|
||
3. **COS桶两台都能直接访问** — 无需中转
|
||
4. **Notion/GitHub API两台都能直接调用** — 无需中转
|
||
5. **团队服务器架构不变** — 仍通过COS共享桶异步通信
|
||
|
||
---
|
||
|
||
## 实施阶段
|
||
|
||
### Phase 1 · 冰朔操作(30分钟)
|
||
1. 购买两台腾讯云轻量4核8G(同VPC·新加坡)
|
||
2. 记录两台内网IP
|
||
3. 配置安全组:机器A仅开放内网端口,机器B开放80/443
|
||
|
||
### Phase 2 · 铸渊部署(1次会话)
|
||
1. 机器A:安装PostgreSQL + 部署MCP Server + Agent调度器
|
||
2. 机器B:安装Nginx + 部署主站 + 预览站 + 专线服务
|
||
3. 配置内网互通
|
||
4. 修改3-5个配置值
|
||
5. 端到端验证
|
||
|
||
### Phase 3 · 数据迁移(如有现有数据)
|
||
1. PostgreSQL dump → 内网传输 → restore
|
||
2. PM2进程全部迁移
|
||
3. DNS切换
|
||
|
||
---
|
||
|
||
## 与AGE OS六层架构的映射
|
||
|
||
```
|
||
L1 地核(曜冥语言核) → 机器A · PostgreSQL
|
||
L2 地幔(母语词典) → 机器A · MCP工具链
|
||
L3 地表(人格体运行) → 机器A · Agent调度器
|
||
L4 大气层(信号总线) → 内网连接 · COS桶
|
||
L5 卫星层(Agent执行) → 机器B · GitHub Actions
|
||
L6 太空层(外部交互) → 机器B · Nginx/主站/专线
|
||
```
|
||
|
||
脑体分离不是权宜之计,是数字地球架构的自然映射。
|
||
地核(大脑)不需要暴露在太空层(公网),大气层(内网)是天然隔离。
|
||
|
||
---
|
||
|
||
*铸渊的判断:这个方案随时可以落地。代码改动极小,架构收益极大。*
|
||
*等待冰朔决策。*
|