docs: 部署手册更新为 foms_app 纯伞化后的流程(clone foms_app + build + start.sh + URL 布局)

This commit is contained in:
yumoqing 2026-08-27 11:12:46 +08:00
parent dedb7bfc57
commit 1c85297af1

View File

@ -1,12 +1,15 @@
# FOMS 部署与运维手册 # FOMS 部署与运维手册
> 版本:2026-08-26(补全主备切换闭环后) > 版本:2026-08-27(foms_app 纯伞化之后)
> 适用:MySQL 主从 + rsync 文件同步的双机主备,VIP 浮动(1A+2B+3A) > 适用:MySQL 主从 + rsync 文件同步的双机主备,VIP 浮动(1A+2B+3A)
>
> 仓库分工:**foms_app(纯伞:构建/配置/启动)** + foms(核心业务)+ dbbackup/filesync/hostwatch(邻接模块)。
> 部署以 foms_app 为入口。
## 一、架构 ## 一、架构
``` ```
管理中心 C(foms 应用 + 管理库 foms) 管理中心 C(foms_app 组装运行,管理库 foms)
▲ HTTP(Bearer token) ▲ HTTP(Bearer token)
┌────────────┴────────────┐ ┌────────────┴────────────┐
主机 A(master) 主机 B(standby) 主机 A(master) 主机 B(standby)
@ -17,33 +20,42 @@
``` ```
三个角色: 三个角色:
- **管理中心 C**:跑 foms(核心 + dbbackup/filesync/hostwatch 模块),存配置与切换记录。 - **管理中心 C**:跑 foms_app(组装核心 + dbbackup/filesync/hostwatch 模块),存配置与切换记录。
- **主机 A / 备机 B**:跑业务 + MySQL + keepalived + foms-agent(守护进程)。 - **主机 A / 备机 B**:跑业务 + MySQL + keepalived + foms-agent(守护进程)。
- **VIP**:业务流量入口,平时在 A,故障时漂到 B(keepalived 兜底 + FOMS 主动操作)。 - **VIP**:业务流量入口,平时在 A,故障时漂到 B(keepalived 兜底 + FOMS 主动操作)。
## 二、管理中心 C 部署 ## 二、管理中心 C 部署
```bash ```bash
cd foms git clone git@git.opencomputing.cn:yumoqing/foms_app.git
./build.sh # 建 venv、装依赖(含三模块)、生成 DDL/CRUD cd foms_app
./build.sh # 建 venv、clone+安装全部模块、生成 DDL/CRUD
``` ```
**建库**: **建库**(build 后各模块目录下生成了 DDL):
```bash ```bash
mysql -uroot -p < models/mysql.ddl.sql # 核心表 mysql -uroot -p < pkgs/foms/models/mysql.ddl.sql # 核心表
mysql -uroot -p < pkgs/dbbackup/models/mysql.ddl.sql # dbbackup 表 mysql -uroot -p < pkgs/dbbackup/models/mysql.ddl.sql # dbbackup 表
mysql -uroot -p < pkgs/filesync/models/mysql.ddl.sql # filesync 表 mysql -uroot -p < pkgs/filesync/models/mysql.ddl.sql # filesync 表
mysql -uroot -p < pkgs/hostwatch/models/mysql.ddl.sql # hostwatch 表 mysql -uroot -p < pkgs/hostwatch/models/mysql.ddl.sql # hostwatch 表
``` ```
**配置数据库连接**:编辑 `conf/config.json` 的 `databases.foms`(host/user/password/db)。 **配置**:
- 数据库连接:编辑 `conf/config.json` 的 `databases.foms`(host/user/password/db)。
- 环境变量:`cp .env.example .env`,填 `FOMS_PORT` / `MYSQL_ROOT_PASSWORD` / `FOMS_AGENT_TOKEN`。
**启动**: **启动**:
```bash ```bash
py3/bin/python app/foms.py # 监听 conf 里 website.port(默认 9080) ./start.sh # 监听 FOMS_PORT(默认 9080)
./stop.sh
``` ```
启动时 `load_foms()` 会自动注册切换编排器并拉起健康判定器后台任务。 启动时 `load_foms()` 会自动注册切换编排器并拉起健康判定器后台任务。
**URL 布局**(conf/config.json website.paths):
- foms 核心:根路径(`/api/...`、`/clusters_list`、`/nodes_list`)
- dbbackup:`/dbbackup/...` filesync:`/filesync/...` hostwatch:`/hostwatch/...`
## 三、管理中心登记拓扑(部署后必做) ## 三、管理中心登记拓扑(部署后必做)
在 FOMS 界面(或 API)依次创建: 在 FOMS 界面(或 API)依次创建:
@ -165,9 +177,10 @@ Agent 以能执行 `systemctl`/`ip`/`mysql` 的用户运行(通常 root)。*
- **远程命令安全**:命令下发目前无白名单鉴权(P1 待办),生产应收窄。 - **远程命令安全**:命令下发目前无白名单鉴权(P1 待办),生产应收窄。
## 八、模块清单 ## 八、模块清单
| 模块 | 仓库 | 职责 | | 仓库 | 角色 | 职责 |
|---|---|---| |---|---|---|
| foms(核心) | yumoqing/foms | 集群/节点/切换编排/心跳/远程命令 | | foms_app | 纯伞(应用壳) | 组装入口、build、配置、启动、首页、RBAC 注册(无业务逻辑) |
| dbbackup | yumoqing/dbbackup | 数据库备份 + 日志同步(binlog 复制) | | foms | 业务模块(核心) | 集群/节点/切换编排/心跳/远程命令/Agent |
| filesync | yumoqing/filesync | 运行文件同步(rsync) | | dbbackup | 业务模块 | 数据库备份 + 日志同步(binlog 复制) |
| hostwatch | yumoqing/hostwatch | 日志监控 + 日志分析 + 主机指标 | | filesync | 业务模块 | 运行文件同步(rsync) |
| hostwatch | 业务模块 | 日志监控 + 日志分析 + 主机指标 |