This commit is contained in:
Your Name
2026-04-17 16:17:19 +08:00
parent 0e096947fc
commit bd6bcb240f
17 changed files with 863 additions and 23 deletions

View File

@@ -0,0 +1,231 @@
# domainCheck 临时海外控制面联调清单
适用场景:
- 暂时不使用正式海外机器
- 先把大陆 `controller + worker` 对接到当前测试海外机
- 先跑通“控制面 + 同步 + 观测”全链路,再切回正式海外环境
当前临时海外控制面:
- 节点编码:`overseas-control-01`
- 节点角色:`overseas / control`
- 机器 IP`152.53.37.118`
- 后台地址:`http://152.53.37.118/`
- API 基址:`http://152.53.37.118:8100`
## 1. 当前目标拓扑
本次联调按下面的角色分工:
- 大陆 controller
- 承担 API 控制面
- 承担 Sync Agent
- 可以兼跑本机 Worker
- 大陆 worker
- 只承担检测执行
- 临时海外控制面
- 只承担 API 控制与同步接收
- 不承载本机 Worker
- 不承载 Sync Agent
## 2. 临时海外控制面应有状态
在临时海外控制面机器上执行:
```bash
bash domain-api/deploy/multi-region/check_temp_overseas_control.sh
```
预期:
- `domaincheck-api``active (running)`
- `domaincheck-worker``inactive (dead)` 或禁用
- `runtime.status.data.node`
- `code=overseas-control-01`
- `region=overseas`
- `role=control`
- `runtime.status.data.worker.expected_on_this_node=false`
- `runtime.status.data.sync_agent.expected_on_this_node=false`
- `runtime.status.data.detect.phase_label=当前节点不承载`
## 3. 大陆 controller 切到临时海外控制面
在大陆 controller 上执行:
```bash
sed -i 's#^SYNC_TARGET_API_BASE_URL=.*#SYNC_TARGET_API_BASE_URL=http://152.53.37.118:8100#' /etc/default/domaincheck-api
sed -i 's/^SYNC_PUSH_ENABLED=.*/SYNC_PUSH_ENABLED=true/' /etc/default/domaincheck-api
systemctl restart domaincheck-api
systemctl restart domaincheck-sync-agent
systemctl restart domaincheck-worker
sleep 3
```
然后检查:
```bash
curl -s http://127.0.0.1:8100/api/v1/runtime/readiness
echo
curl -s http://127.0.0.1:8100/api/v1/runtime/sync-summary
```
预期:
- `runtime/readiness` 至少不是大陆本机配置错误导致的 `blocking`
- `runtime/sync-summary.data.enabled=true`
- `runtime/sync-summary.data.target_api_base_url=http://152.53.37.118:8100`
## 4. 大陆 worker 检查项
在大陆 worker 上执行:
```bash
bash domain-api/deploy/multi-region/check_mainland_worker.sh
```
预期:
- `NODE_CODE=mainland-worker-01`
- `NODE_REGION=mainland`
- `NODE_ROLE=worker`
- `domaincheck-worker``active (running)`
如果大陆 controller 也兼跑检测,再执行:
```bash
systemctl status domaincheck-worker --no-pager -l
echo
curl -s http://127.0.0.1:8100/api/v1/runtime/status
```
预期:
- `worker.running=true`
- `worker.expected_on_this_node=true`
## 5. 最短联调命令
### 5.1 在大陆 controller 上
```bash
bash domain-api/deploy/multi-region/check_temp_link.sh http://127.0.0.1:8100 http://152.53.37.118:8100
```
关注点:
- `push_sync` 返回 `code=0` 或幂等成功
- 不再出现目标地址为空
- 不再出现 `SYNC_PUSH_ENABLED=false`
关注点:
- `cluster` 中至少能看到:
- `overseas-control-01`
- 大陆 `mainland-controller-01`
- 大陆 `mainland-worker-01`
- `sync-summary` 中能看到来自大陆的接收记录
- `readiness` 不再是“完全单节点海外态”
## 6. 后台页面应如何理解
打开:
- `http://152.53.37.118/`
在运行中心里看到下面这些内容时,属于正常:
- `本机 Worker当前节点不承载`
- `Sync Agent当前节点不承载`
- `当前检测阶段:当前节点不承载`
- `代理运行态:不适用`
这不是故障,而是因为当前节点就是临时海外控制面。
真正应该关注的是:
- `集群节点`
- `有效执行节点`
- `同步状态`
- `多机就绪度`
## 7. 判断“到底有几台 Worker 在工作”
如果页面上“在线 Worker 数”和“实际正在跑检测的节点数”看起来不一致,以数据库为准。
在大陆 controller 上执行:
```bash
bash domain-api/deploy/multi-region/check_worker_participation.sh
```
判断规则:
- `detect_worker_nodes`
- 看谁在线
- 看谁是 `worker_online=true`
- 看谁 `detect_participating=true`
- `detect_job_items`
- 看任务到底被哪台节点 `claimed_by`
- 这才是“当前真正干活的节点”
## 8. 常见误判
### 8.1 海外控制面显示“本机 Worker 不承载”
这是正常,不是故障。
### 8.2 页面显示“在线 Worker 1”但你部署了 2 台大陆机器
先区分:
- “有效执行节点”是可承担任务的在线节点数
- “当前参与检测节点”是当前真的在领任务、跑任务的节点
如果 controller 没兼跑检测,通常只会看到独立 worker 在真正执行。
### 8.3 controller 机器也开了 worker 服务,但没有领任务
这不一定是 bug可能只是当前调度没有分到它。应以 `detect_job_items.claimed_by` 为准,不要只看服务在线。
## 9. 联调完成后的回滚
如果你后续要切回正式海外机器,在大陆 controller 上把目标地址改回正式值即可:
```bash
sed -i 's#^SYNC_TARGET_API_BASE_URL=.*#SYNC_TARGET_API_BASE_URL=http://正式海外控制面IP:8100#' /etc/default/domaincheck-api
systemctl restart domaincheck-api
systemctl restart domaincheck-sync-agent
sleep 3
```
如果临时海外控制面不再使用,可在该机器上保留 `domaincheck-api` 供后续调试,也可以停掉:
```bash
systemctl stop domaincheck-api
```
## 10. 本次临时海外控制面结论
当前这台测试海外机已经整理为:
-`overseas-control`
- API 正常
- Worker 不承载
- Sync Agent 不承载
- 数据已清空并按首装态初始化
- 可直接作为大陆 controller 的临时同步接收端
## 11. 配套脚本
- 临时海外控制面自检:
- `domain-api/deploy/multi-region/check_temp_overseas_control.sh`
- 大陆 controller -> 临时海外控制面联调检查:
- `domain-api/deploy/multi-region/check_temp_link.sh`
- 三机拓扑总览检查:
- `domain-api/deploy/multi-region/check_temp_topology.sh`
- 当前活跃任务由谁真正执行:
- `domain-api/deploy/multi-region/check_worker_participation.sh`
- 大陆 worker 本机自检:
- `domain-api/deploy/multi-region/check_mainland_worker.sh`