184 lines
4.0 KiB
Markdown
184 lines
4.0 KiB
Markdown
# ComfyUI 实例集群通信中间层
|
||
|
||
多服务器 ComfyUI 实例集群的专用通信桥梁,实现统一状态管理、任务转发与结果回传。
|
||
|
||
## 项目特点
|
||
|
||
- 多服务器分布式部署支持
|
||
- 实时实例状态监控
|
||
- WebSocket 双向通信
|
||
- 任务精准转发与结果回传
|
||
- 专业的可视化管理界面
|
||
- 热更新配置支持
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|------|------|
|
||
| 后端 | Node.js + Express |
|
||
| 前端 | Vue 3 + Element Plus + Vite |
|
||
| 数据存储 | Redis |
|
||
| 通信 | WebSocket (ws) + Axios |
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- Node.js >= 16
|
||
- Redis >= 6
|
||
- 可访问的 ComfyUI 实例
|
||
|
||
### 1. 安装依赖
|
||
|
||
```bash
|
||
# 根目录
|
||
cd d:\WebUI\Kexue\comfyui\comfyui-cluster-bridge
|
||
|
||
# 安装后端依赖
|
||
cd backend
|
||
npm install
|
||
|
||
# 安装前端依赖
|
||
cd ../frontend
|
||
npm install
|
||
```
|
||
|
||
### 2. 配置
|
||
|
||
#### 2.1 环境变量
|
||
|
||
复制并编辑 `.env` 文件:
|
||
|
||
```bash
|
||
cd backend
|
||
cp .env.example .env
|
||
# 编辑 .env 文件,配置 Redis、JWT 密钥等
|
||
```
|
||
|
||
#### 2.2 服务器配置
|
||
|
||
编辑 `backend/config/servers.json` 文件,配置 ComfyUI 实例:
|
||
|
||
```json
|
||
{
|
||
"servers": [
|
||
{
|
||
"id": "server-1",
|
||
"name": "主服务器",
|
||
"ip": "127.0.0.1",
|
||
"enabled": true,
|
||
"instances": [
|
||
{ "port": 8001, "enabled": true },
|
||
{ "port": 8002, "enabled": true }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 3. 启动 Redis
|
||
|
||
```bash
|
||
# Windows
|
||
redis-server
|
||
|
||
# 或使用 Docker
|
||
docker run -d -p 6379:6379 redis:latest
|
||
```
|
||
|
||
### 4. 启动服务
|
||
|
||
```bash
|
||
# 开发模式(同时启动后端和前端)
|
||
cd d:\WebUI\Kexue\comfyui\comfyui-cluster-bridge
|
||
npm run dev
|
||
|
||
# 或分别启动
|
||
# 后端 (端口 3000)
|
||
cd backend
|
||
npm run dev
|
||
|
||
# 前端 (端口 5173)
|
||
cd frontend
|
||
npm run dev
|
||
```
|
||
|
||
### 5. 访问管理界面
|
||
|
||
打开浏览器访问:http://localhost:5173
|
||
|
||
默认登录账号:
|
||
- 用户名:`admin`
|
||
- 密码:`admin123`
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
comfyui-cluster-bridge/
|
||
├── backend/ # 后端服务
|
||
│ ├── src/
|
||
│ │ ├── index.js # 主入口
|
||
│ │ ├── config/ # 配置模块
|
||
│ │ ├── logger/ # 日志模块
|
||
│ │ ├── cluster-manager/# 集群管理
|
||
│ │ ├── websocket-client/# WebSocket 通信
|
||
│ │ ├── task-forwarder/ # 任务转发
|
||
│ │ ├── file-uploader/ # 文件上传
|
||
│ │ └── admin-api/ # 管理 API
|
||
│ ├── config/ # 配置文件
|
||
│ ├── logs/ # 日志目录
|
||
│ └── uploads/ # 上传文件目录
|
||
├── frontend/ # 前端管理界面
|
||
│ ├── src/
|
||
│ │ ├── views/ # 页面组件
|
||
│ │ ├── stores/ # Pinia 状态
|
||
│ │ ├── router/ # 路由配置
|
||
│ │ └── api/ # API 封装
|
||
│ └── index.html
|
||
└── README.md
|
||
```
|
||
|
||
## API 文档
|
||
|
||
详细的接口文档请参考 [API.md](./API.md)。
|
||
|
||
## 配置说明
|
||
|
||
### 服务器配置 (servers.json)
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| servers | array | 服务器列表 |
|
||
| servers[].id | string | 服务器唯一标识 |
|
||
| servers[].name | string | 服务器名称 |
|
||
| servers[].ip | string | 服务器 IP 地址 |
|
||
| servers[].enabled | boolean | 是否启用 |
|
||
| servers[].instances | array | ComfyUI 实例列表 |
|
||
| servers[].instances[].port | number | 实例端口 |
|
||
| servers[].instances[].enabled | boolean | 是否启用 |
|
||
| healthCheck.interval | number | 健康检查间隔 (毫秒) |
|
||
| healthCheck.timeout | number | 健康检查超时 (毫秒) |
|
||
| taskQueue.websocketUrl | string | 任务队列 WebSocket 地址 |
|
||
| upload.url | string | 文件上传接口地址 |
|
||
|
||
## 常见问题
|
||
|
||
### Redis 连接失败
|
||
|
||
确保 Redis 服务已启动,检查 `.env` 文件中的 `REDIS_HOST` 和 `REDIS_PORT` 配置。
|
||
|
||
### ComfyUI 实例离线
|
||
|
||
检查:
|
||
1. ComfyUI 服务是否正常运行
|
||
2. 端口是否可访问
|
||
3. 防火墙配置
|
||
|
||
### 任务队列 WebSocket 连接失败
|
||
|
||
检查 `servers.json` 中的 `taskQueue.websocketUrl` 配置是否正确。
|
||
|
||
## 许可证
|
||
|
||
MIT
|