feat: 补充 MongoDB 配置和 RabbitMQ 集群部署
This commit is contained in:
@@ -28,7 +28,7 @@ k8s/overlays/local/README.md
|
||||
| Agent 服务治理 | `easyai-asg` | Agent 治理服务 |
|
||||
| Agent 记忆服务 | `agent-memory` | Agent 记忆与检索服务 |
|
||||
|
||||
生产环境建议将 Redis、MongoDB、RabbitMQ、PostgreSQL 等基础组件使用云厂商托管服务,不在本仓库中部署。
|
||||
生产环境优先建议使用云厂商托管的 Redis、MongoDB、RabbitMQ 和 PostgreSQL。客户不能使用云服务时,可在客户 Kubernetes 或独立基础设施中自建;本仓库已提供 RabbitMQ 三节点集群模板,其他自建依赖需由客户按其基础设施标准提供高可用、备份和监控能力。
|
||||
|
||||
## 部署前准备
|
||||
|
||||
@@ -57,21 +57,77 @@ kubectl get storageclass
|
||||
|
||||
如果 `kubectl top nodes` 不可用,请先启用 Metrics Server。
|
||||
|
||||
### 外部依赖
|
||||
### 基础依赖
|
||||
|
||||
部署前需要准备以下云服务,并保证 Kubernetes 节点所在 VPC 可以访问:
|
||||
部署前需要准备以下基础依赖,并保证 EasyAI Pod 可以访问。依赖既可以使用云厂商托管服务,也可以由客户自行部署。
|
||||
|
||||
以下版本为当前生产部署推荐版本。使用云厂商托管服务时,请固定主版本;大版本升级前先在测试环境完成回归验证。
|
||||
以下版本为当前生产部署目标版本。请固定主版本和补丁版本;大版本升级前必须在测试环境完成连接、功能、性能和备份恢复验证。
|
||||
|
||||
| 依赖 | 推荐版本 | 用途 | 需要准备的信息 |
|
||||
| --- | --- | --- | --- |
|
||||
| MongoDB | `7.x` | 主服务业务数据 | 内网地址、端口、用户名、密码、连接参数 |
|
||||
| Redis | `7.x`,需支持至少 `16` 个逻辑 DB | 队列、缓存、WebSocket 集群状态 | 内网地址、端口、密码,需支持多个逻辑 DB |
|
||||
| RabbitMQ | `3.13.x`,需支持 AMQP `0-9-1` | 消息队列 | AMQP 地址、端口、用户名、密码、vhost |
|
||||
| RabbitMQ | `4.3.x`,自建模板固定为 `4.3.2`,需支持 AMQP `0-9-1` | 消息队列 | AMQP 地址、端口、用户名、密码、vhost |
|
||||
| PostgreSQL + pgvector | PostgreSQL `18` + pgvector `0.8.2` | Agent 治理和记忆服务 | 地址、端口、用户名、密码、数据库、扩展 |
|
||||
| RWX 共享存储 | 与 Kubernetes 集群版本兼容的 CSI/存储插件 | 上传、备份、恢复文件共享 | 支持 `ReadWriteMany` 的 StorageClass |
|
||||
| OSS/S3 对象存储 | 兼容 AWS S3 Signature V4 或云厂商 OSS/S3 当前 API,可选 | 文件存储,可选 | Endpoint、Bucket、Access Key |
|
||||
|
||||
#### MongoDB 数据库、集合和权限
|
||||
|
||||
EasyAI 默认使用以下业务数据库:
|
||||
|
||||
```text
|
||||
aidraw
|
||||
```
|
||||
|
||||
部署时应显式配置数据库名,不要依赖应用默认值:
|
||||
|
||||
```yaml
|
||||
CONFIG_DB_MONGO_URI: mongodb://你的Mongo内网地址:27017/?authSource=admin
|
||||
CONFIG_DB_MONGO_DBNAME: aidraw
|
||||
CONFIG_DB_MONGO_USERNAME: 你的Mongo用户名
|
||||
CONFIG_DB_MONGO_PASSWORD: 你的Mongo密码
|
||||
```
|
||||
|
||||
如果 MongoDB 使用副本集,URI 需要包含所有可用节点和副本集名称,例如:
|
||||
|
||||
```text
|
||||
mongodb://mongo-0:27017,mongo-1:27017,mongo-2:27017/?replicaSet=rs0&authSource=admin
|
||||
```
|
||||
|
||||
`authSource` 必须填写用户实际创建所在的认证库;如果用户创建在 `aidraw`,应改为 `authSource=aidraw`。
|
||||
|
||||
无需提前创建或逐项提供集合名称。应用会根据业务模型在 `aidraw` 中创建所需集合和索引,集合也可能随产品版本或启用模块变化。建议为应用用户授予 `aidraw` 数据库级 `readWrite` 权限,不要采用固定集合白名单。若客户审计制度必须使用集合级授权,应以实际交付镜像在预发布环境启动后生成的集合和索引清单为准。
|
||||
|
||||
当前生产验证基线是 MongoDB `7.x`。应用驱动可以连接 MongoDB `4.x`,但 MongoDB `4.0`、`4.2` 和 `4.4` 均已停止官方维护。存量环境确实无法升级时,建议至少使用最终补丁版 `4.4.29`,并在上线前完成完整回归;不要把 MongoDB `4.x` 作为新的长期生产基线。
|
||||
|
||||
MongoDB 生命周期和驱动兼容性参考:
|
||||
|
||||
- <https://www.mongodb.com/legal/support-policy/lifecycles>
|
||||
- <https://www.mongodb.com/docs/drivers/node/v6.12/compatibility/>
|
||||
|
||||
#### RabbitMQ 托管或自建方案
|
||||
|
||||
使用托管 RabbitMQ 时,向 EasyAI 提供内网 AMQP Service 地址、`5672`/`5671` 端口、用户名、密码和 vhost 即可。
|
||||
|
||||
不能使用云服务时,使用以下目录中的 RabbitMQ Cluster Operator 三节点模板:
|
||||
|
||||
```text
|
||||
k8s/addons/rabbitmq-cluster
|
||||
```
|
||||
|
||||
详细的 Operator 安装、StorageClass 配置、部署、凭据读取和验证步骤见:
|
||||
|
||||
```text
|
||||
k8s/addons/rabbitmq-cluster/README.md
|
||||
```
|
||||
|
||||
自建模板默认使用 RabbitMQ `4.3.2` 和 quorum queue。RabbitMQ `3.13.x` 已停止社区支持,只能作为存量过渡版本;升级现有集群前必须在测试环境验证队列声明、发布消费、重连和故障切换,不能直接跨版本替换数据节点。
|
||||
|
||||
RabbitMQ 版本生命周期参考:
|
||||
|
||||
<https://www.rabbitmq.com/release-information>
|
||||
|
||||
本地验证环境中的 PostgreSQL/pgvector 镜像为:
|
||||
|
||||
```text
|
||||
@@ -154,11 +210,10 @@ k8s/overlays/production/app-secret.yaml
|
||||
至少替换以下内容:
|
||||
|
||||
```yaml
|
||||
CONFIG_DB_MONGO_URI: mongodb://你的Mongo内网地址:27017
|
||||
CONFIG_DB_MONGO_URI: mongodb://你的Mongo内网地址:27017/?authSource=admin
|
||||
CONFIG_DB_MONGO_DBNAME: aidraw
|
||||
CONFIG_DB_MONGO_USERNAME: 你的Mongo用户名
|
||||
CONFIG_DB_MONGO_PASSWORD: 你的Mongo密码
|
||||
MONGO_INITDB_ROOT_USERNAME: 你的Mongo用户名
|
||||
MONGO_INITDB_ROOT_PASSWORD: 你的Mongo密码
|
||||
|
||||
CONFIG_COMFYUI_QUENE_REDIS_PASSWORD: 你的Redis密码
|
||||
GATEWAY_CLUSTER_REDIS_PASSWORD: 你的Redis密码
|
||||
@@ -253,6 +308,12 @@ storage: 100Gi
|
||||
grep -R -nE 'CHANGE_ME|easyai.example.com|你的' k8s/overlays/production
|
||||
```
|
||||
|
||||
使用自建 RabbitMQ 时,还需要检查其模板:
|
||||
|
||||
```bash
|
||||
grep -R -n 'CHANGE_ME' k8s/addons/rabbitmq-cluster
|
||||
```
|
||||
|
||||
如果还有输出,请先完成配置替换。
|
||||
|
||||
渲染生产 YAML:
|
||||
@@ -408,6 +469,8 @@ kubectl -n easyai rollout status deploy/easyai-server --timeout=10m
|
||||
| WebSocket 频繁断开 | `/socket.io` 是否路由到 `ws-gateway:3002`,Ingress 超时时间是否足够 |
|
||||
| 文件上传后多副本不可见 | `easyai-shared-files` PVC 是否正确挂载到 `easyai-server` |
|
||||
| 连接数据库或中间件失败 | VPC、安全组、白名单、端口、用户名密码、TLS 要求 |
|
||||
| MongoDB 认证成功但业务库没有数据 | `CONFIG_DB_MONGO_DBNAME` 是否为 `aidraw`,`authSource` 是否指向用户实际所在的认证库 |
|
||||
| RabbitMQ 集群 Pod 一直 Pending | RWO StorageClass、PVC、3 个 Worker 节点以及主机级 Pod 反亲和规则 |
|
||||
| `video-edit` 无法创建 | 集群 PodSecurity/PSA 是否禁止 `SYS_ADMIN` capability |
|
||||
|
||||
查看事件和日志:
|
||||
|
||||
Reference in New Issue
Block a user