This commit is contained in:
180
REMOTE_SERVICES_MIGRATION.md
Normal file
180
REMOTE_SERVICES_MIGRATION.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# 远程服务配置迁移指南
|
||||
|
||||
## 📋 变更概述
|
||||
|
||||
从 **2026-04-15** 起,项目已将 PostgreSQL 和 Qdrant 服务迁移到远程服务器(`115.190.121.151`),本地开发环境不再需要运行这些服务的容器。
|
||||
|
||||
## 🌐 远程服务地址
|
||||
|
||||
| 服务 | 远程地址 | 端口 | 说明 |
|
||||
|------|---------|------|------|
|
||||
| **PostgreSQL** | `115.190.121.151` | `5432` | LangGraph 状态持久化 |
|
||||
| **Qdrant** | `115.190.121.151` | `6333` | Mem0 向量数据库 |
|
||||
|
||||
## 🔧 已修改的配置文件
|
||||
|
||||
### 1. `.env` - 本地开发配置
|
||||
```bash
|
||||
# 之前(本地容器)
|
||||
QDRANT_URL=http://localhost:6333
|
||||
DB_URI=postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable
|
||||
|
||||
# 现在(远程服务器)
|
||||
QDRANT_URL=http://115.190.121.151:6333
|
||||
DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable
|
||||
```
|
||||
|
||||
### 2. `.env.docker` - Docker Compose 配置
|
||||
```bash
|
||||
# 之前(Docker 内部网络)
|
||||
QDRANT_URL=http://qdrant:6333
|
||||
DB_URI=postgresql://postgres:mysecretpassword@postgres:5432/langgraph_db?sslmode=disable
|
||||
|
||||
# 现在(远程服务器)
|
||||
QDRANT_URL=http://115.190.121.151:6333
|
||||
DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable
|
||||
```
|
||||
|
||||
### 3. `docker/docker-compose.yml` - Docker Compose 编排
|
||||
```yaml
|
||||
# ❌ 已移除的服务
|
||||
# postgres:
|
||||
# image: postgres:16
|
||||
# ...
|
||||
|
||||
# qdrant:
|
||||
# image: qdrant/qdrant:latest
|
||||
# ...
|
||||
|
||||
# ✅ backend 服务配置更新
|
||||
backend:
|
||||
environment:
|
||||
- DB_URI=postgresql://postgres:mysecretpassword@115.190.121.151:5432/langgraph_db?sslmode=disable
|
||||
- QDRANT_URL=http://115.190.121.151:6333
|
||||
# ⭐ 移除了 depends_on (postgres, qdrant)
|
||||
```
|
||||
|
||||
## 🚀 使用方式
|
||||
|
||||
### 本地开发(直接运行 Python)
|
||||
```bash
|
||||
# 1. 确保 .env 文件已更新(已完成)
|
||||
cat .env | grep -E "(QDRANT_URL|DB_URI)"
|
||||
|
||||
# 2. 启动后端服务
|
||||
python app/backend.py
|
||||
|
||||
# 3. 启动前端服务
|
||||
cd frontend && streamlit run app.py
|
||||
```
|
||||
|
||||
### Docker Compose 部署
|
||||
```bash
|
||||
# 1. 确保 .env.docker 文件已更新(已完成)
|
||||
cp .env.docker .env
|
||||
|
||||
# 2. 启动服务(仅 backend 和 frontend)
|
||||
cd docker
|
||||
docker compose up -d
|
||||
|
||||
# 3. 查看日志
|
||||
docker compose logs -f backend
|
||||
```
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 1. 网络连接
|
||||
- 确保本地机器可以访问 `115.190.121.151` 的 `5432` 和 `6333` 端口
|
||||
- 测试连接:
|
||||
```bash
|
||||
# 测试 PostgreSQL
|
||||
psql -h 115.190.121.151 -U postgres -d langgraph_db
|
||||
|
||||
# 测试 Qdrant
|
||||
curl http://115.190.121.151:6333/collections
|
||||
```
|
||||
|
||||
### 2. 防火墙配置
|
||||
如果无法连接,检查远程服务器的防火墙规则:
|
||||
```bash
|
||||
# 在远程服务器上执行
|
||||
sudo ufw allow 5432/tcp
|
||||
sudo ufw allow 6333/tcp
|
||||
sudo ufw reload
|
||||
```
|
||||
|
||||
### 3. 数据持久化
|
||||
- PostgreSQL 数据存储在远程服务器的 `~/docker_volumes/postgres_data`
|
||||
- Qdrant 数据存储在远程服务器的 `~/docker_volumes/qdrant_storage`
|
||||
- **无需在本地维护数据卷**
|
||||
|
||||
### 4. 备份与恢复
|
||||
如需备份远程数据库:
|
||||
```bash
|
||||
# 备份 PostgreSQL
|
||||
pg_dump -h 115.190.121.151 -U postgres langgraph_db > backup_$(date +%Y%m%d).sql
|
||||
|
||||
# 备份 Qdrant(通过 API 导出集合)
|
||||
curl http://115.190.121.151:6333/collections/mem0_user_memories/snapshot > snapshot.zip
|
||||
```
|
||||
|
||||
## 🔄 回滚到本地容器(可选)
|
||||
|
||||
如果需要使用本地容器进行测试,可以:
|
||||
|
||||
1. **修改 `.env` 文件**:
|
||||
```bash
|
||||
QDRANT_URL=http://localhost:6333
|
||||
DB_URI=postgresql://postgres:mysecretpassword@localhost:5432/langgraph_db?sslmode=disable
|
||||
```
|
||||
|
||||
2. **启动本地容器**:
|
||||
```bash
|
||||
docker run -d --name qdrant_server -p 6333:6333 qdrant/qdrant
|
||||
docker run -d --name ai-postgres -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=langgraph_db -p 5432:5432 postgres:16
|
||||
```
|
||||
|
||||
3. **初始化数据库表**:
|
||||
```bash
|
||||
python scripts/init_db.py
|
||||
```
|
||||
|
||||
## 📊 架构对比
|
||||
|
||||
### 之前(本地容器)
|
||||
```
|
||||
┌─────────────┐ ┌──────────┐ ┌──────────┐
|
||||
│ Frontend │────▶│ Backend │────▶│ Postgres │ (localhost:5432)
|
||||
│ :8501 │ │ :8001 │ └──────────┘
|
||||
└─────────────┘ └──────────┘ ┌──────────┐
|
||||
│ Qdrant │ (localhost:6333)
|
||||
└──────────┘
|
||||
```
|
||||
|
||||
### 现在(远程服务)
|
||||
```
|
||||
┌─────────────┐ ┌──────────┐ ┌──────────────────┐
|
||||
│ Frontend │────▶│ Backend │────▶│ Remote Services │
|
||||
│ :8501 │ │ :8001 │ │ │
|
||||
└─────────────┘ └──────────┘ │ • Postgres │
|
||||
│ (115.190.121.151:5432)
|
||||
│ • Qdrant │
|
||||
│ (115.190.121.151:6333)
|
||||
└──────────────────┘
|
||||
```
|
||||
|
||||
## ✅ 验证清单
|
||||
|
||||
- [x] `.env` 文件已更新为远程地址
|
||||
- [x] `.env.docker` 文件已更新为远程地址
|
||||
- [x] `.env.example` 模板已更新
|
||||
- [x] `docker-compose.yml` 已移除 postgres 和 qdrant 服务
|
||||
- [x] 远程服务器上的服务正常运行
|
||||
- [ ] 本地可以连接到远程 PostgreSQL
|
||||
- [ ] 本地可以连接到远程 Qdrant
|
||||
- [ ] 应用功能测试通过
|
||||
|
||||
---
|
||||
|
||||
**最后更新**: 2026-04-15
|
||||
**维护者**: AI Agent Team
|
||||
Reference in New Issue
Block a user