feat: add two-node compose deployment
This commit is contained in:
@@ -111,6 +111,44 @@ docker compose -f deploy/docker-compose.yml down
|
||||
|
||||
Compose 没有为 scratch 镜像伪造容器内 HTTP healthcheck;编排器或入口网关应调用 `/health/live`、`/health/ready` 和 `/version`。`ready` 返回 `503` 时摘除节点,保留原幂等键并等待数据库恢复。只有明确的废弃环境才使用 `docker compose down -v`,生产数据卷不得随服务停止删除。
|
||||
|
||||
## 5. 当前边界
|
||||
## 5. 两节点覆盖与滚动替换
|
||||
|
||||
需要在同一台主机验证多节点接管时,叠加 `deploy/docker-compose.ha.yml`。两个 Orbit 节点共享 MySQL、迁移账本、租约和流程检查点;每个进程仍生成独立节点标识,停止一个节点不会把另一个节点的持久化执行权一并停止:
|
||||
|
||||
```sh
|
||||
export ORBIT_HTTP_BIND=127.0.0.1
|
||||
export ORBIT_HTTP_PORT_A=8081
|
||||
export ORBIT_HTTP_PORT_B=8082
|
||||
|
||||
docker compose \
|
||||
-f deploy/docker-compose.yml \
|
||||
-f deploy/docker-compose.ha.yml \
|
||||
up -d mysql verify orbit-a orbit-b
|
||||
|
||||
curl --fail http://127.0.0.1:8081/health/ready
|
||||
curl --fail http://127.0.0.1:8082/health/ready
|
||||
```
|
||||
|
||||
入口层把 Nginx `upstream orbit_backend` 改为两个后端:
|
||||
|
||||
```nginx
|
||||
upstream orbit_backend {
|
||||
server 127.0.0.1:8081;
|
||||
server 127.0.0.1:8082;
|
||||
keepalive 64;
|
||||
}
|
||||
```
|
||||
|
||||
滚动替换时先让入口健康检查摘除一个节点,再停止并更新它;确认另一节点 `ready` 后再恢复流量,最后启动更新后的节点并等待两个后端都通过健康检查:
|
||||
|
||||
```sh
|
||||
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.ha.yml stop orbit-a
|
||||
# 更新镜像标签后重新拉起 orbit-a;迁移和 verify 仍必须先成功
|
||||
docker compose -f deploy/docker-compose.yml -f deploy/docker-compose.ha.yml up -d orbit-a
|
||||
```
|
||||
|
||||
这个覆盖配置用于单机和隔离验收;生产环境应把两个 Orbit 节点放在不同故障域,前置负载均衡器负责健康摘除,MySQL 由独立数据库高可用方案提供,不把单机 Compose 多节点样本当成生产 HA 结论。
|
||||
|
||||
## 6. 当前边界
|
||||
|
||||
该文件是可重复的单节点启动基线,不代表自动数据库故障切换、跨故障域多副本、备份恢复或容量目标已经验收。生产上线还需要真实 MySQL 拓扑、滚动替换、凭据轮换、备份恢复、压测和 RPO/RTO 证据;对应门槛以[交付核对清单](release-checklist.md)为准。
|
||||
|
||||
Reference in New Issue
Block a user