foms 只保留业务逻辑: · foms/ 包(init.py + failover.py 切换编排器) · models/(5 张表)、json/(CRUD 定义)、wwwroot/api/(端点) · scripts/(foms-agent 及部署脚本) · docs/deploy-operations.md 应用层迁出至 foms_app 纯伞仓: · app/(入口)、build.sh、start/stop.sh、conf/、init/data.yaml · scripts/init_rbac.py / load_path.py(重写为新 URL 布局) · wwwroot/index.ui(重写,指向各模块前缀路径) 同时修复 foms/__init__.py:移除对拆分时已删除函数的导出。
1.6 KiB
1.6 KiB
foms — 主备切换核心模块
FOMS 的领域核心(业务逻辑层),独立可安装模块。 应用壳(构建/配置/启动/首页)在纯伞仓 foms_app。
内容
| 部分 | 文件 | 说明 |
|---|---|---|
| 包入口 | foms/init.py |
集群/节点 CRUD、心跳、仪表盘、远程命令队列、load_foms() |
| 切换编排器 | foms/failover.py |
六步状态机 + 逆向回滚 + 防脑裂 + 健康判定器 |
| 表定义 | models/*.json |
clusters、nodes、switchover_logs、switchover_steps、node_commands |
| CRUD 定义 | json/*.json |
clusters_list、nodes_list |
| 端点 | wwwroot/api/*.dspy |
心跳、命令、切换、仪表盘等 |
| Agent | scripts/foms-agent.py |
被管主机守护进程(独立部署,非本包代码) |
| 运维文档 | docs/deploy-operations.md |
部署 + 运维手册 |
切换闭环(2026-08-26 补全)
健康判定器(防抖告警,半自动)→ 人工确认 → 六步状态机:
precheck → fence → promote → flip_sync → verify → converge
失败逆向回滚;防脑裂不变量:fence 先于 promote,fence 失败硬中止。
详见 docs/deploy-operations.md。
安装
pip install -e .
由 foms_app 的 build.sh 统一组装。load_foms() 时自动注册切换编排器
并拉起健康判定器后台任务(幂等)。
邻接模块(独立仓库)
- dbbackup — 数据库备份 + 日志同步(binlog 复制)
- filesync — 运行文件同步(rsync)
- hostwatch — 日志监控 + 日志分析 + 主机指标
仪表盘对这三模块的表做同库只读聚合(松耦合)。