12 KiB
12 KiB
MOMO Pro System 服務啟動順序與依賴關係
更新日期: 2026-02-06 版本: 2.0
服務架構總覽
┌─────────────────────────────────────────┐
│ 系統重開機 │
└────────────────┬────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 第一層: 基礎服務 (系統自動啟動) │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Docker │ │ K3s │ │ Nginx │ │
│ │ systemd │ │ systemd │ │ systemd │ │
│ │ :自動啟動 │ │ :自動啟動 │ │ :自動啟動 │ │
│ └──────┬───────┘ └──────┬───────┘ └──────────────┘ │
│ │ │ │
└─────────┼───────────────────┼───────────────────────────────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 第二層: 核心服務 │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────────────────────────────────────────┐ │
│ │ Harbor │ │ K8s Services (K3s 管理) │ │
│ │ Registry │ │ │ │
│ │ :5050 │ │ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │
│ │ │ │ │ PostgreSQL │→ │ momo-app │→ │ scheduler │ │ │
│ │ 依賴:Docker │ │ │ :5432 │ │ :80 │ │ │ │ │
│ └──────┬───────┘ │ └─────────────┘ └─────────────┘ └───────────┘ │ │
│ │ │ │ │
│ │ │ 依賴: K3s, Harbor (映像拉取) │ │
│ │ └──────────────────────────────────────────────────┘ │
└─────────┼───────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 第三層: DevOps 服務 │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ │
│ │ GitLab │ │ n8n │ │
│ │ :8929 │ │ :5678 │ │
│ │ │ │ │ │
│ │ 依賴:Docker │ │ 依賴:Docker │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ 第四層: 監控服務 │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Prometheus │ │ Grafana │ │ Alertmanager │ │ Node Exporter│ │
│ │ :9090 │ │ :3000 │ │ :9093 │ │ :9100 │ │
│ │ │ │ │ │ │ │ │ │
│ │ 依賴:Docker │ │依賴:Prometheus│ │依賴:Prometheus│ │ 依賴:Docker │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘
服務清單與端口
系統服務 (systemd 管理)
| 服務 | 類型 | 端口 | 自動啟動 | 說明 |
|---|---|---|---|---|
| Docker | systemd | - | ✅ 是 | 容器運行環境 |
| K3s | systemd | 6443 | ✅ 是 | Kubernetes 叢集 |
| Nginx | systemd | 80/443 | ✅ 是 | 反向代理 + SSL |
K8s 服務 (K3s 管理)
| 服務 | 類型 | 端口 | Namespace | 說明 |
|---|---|---|---|---|
| momo-postgres | StatefulSet | 5432 | momo | PostgreSQL 資料庫 |
| momo-app | Deployment | 80 | momo | Flask 主應用 |
| momo-scheduler | Deployment | - | momo | 爬蟲排程器 |
Docker 容器服務
| 服務 | 容器名稱 | 端口 | 依賴 | 說明 |
|---|---|---|---|---|
| Harbor | harbor-* | 5050 | Docker, Network | Container Registry |
| GitLab | gitlab | 8929 | Docker | Git + CI/CD |
| n8n | momo-n8n | 5678 | Docker | 工作流自動化 |
| Prometheus | prometheus | 9090 | Docker | 監控數據收集 |
| Grafana | grafana | 3000 | Docker, Prometheus | 監控儀表板 |
| Alertmanager | alertmanager | 9093 | Docker, Prometheus | 告警管理 |
| Node Exporter | node-exporter | 9100 | Docker | 主機指標採集 |
啟動順序詳解
階段 1: 系統基礎服務 (0-60秒)
系統重開機後,systemd 自動啟動:
# 自動啟動的服務
systemctl is-enabled docker # enabled
systemctl is-enabled k3s # enabled
systemctl is-enabled nginx # enabled
階段 2: Harbor Registry (60-120秒)
Harbor 必須在 K8s 應用之前啟動,因為 Pod 需要拉取映像。
cd /home/wooo/devops/harbor/harbor
docker compose up -d
# 等待 Harbor 就緒
while ! curl -s http://127.0.0.1:5050/api/v2.0/ping; do
sleep 5
done
依賴: Docker 被依賴: K8s momo-app, momo-scheduler
階段 3: K8s 服務 (120-300秒)
K3s 會自動嘗試啟動 Pod,但需確保 PostgreSQL 先就緒。
# 檢查 PostgreSQL
kubectl wait --for=condition=ready pod/momo-postgres-0 -n momo --timeout=120s
# 檢查 momo-app
kubectl wait --for=condition=ready -l app=momo-app pod -n momo --timeout=120s
依賴鏈: Harbor → PostgreSQL → momo-app → scheduler
階段 4: DevOps 服務 (180-300秒)
GitLab 和 n8n 可以在背景啟動。
docker start gitlab gitlab-runner
docker start momo-n8n
階段 5: 監控服務 (240-360秒)
cd /home/wooo/monitoring
docker compose up -d
自動啟動機制
systemd 服務配置
# 安裝啟動服務
sudo cp /home/wooo/momo_pro_system/scripts/tools/momo-startup-complete.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable momo-startup-complete.service
# 查看狀態
sudo systemctl status momo-startup-complete.service
手動執行啟動腳本
sudo /home/wooo/momo_pro_system/scripts/tools/system_startup_complete.sh
查看啟動日誌
# systemd 日誌
sudo journalctl -u momo-startup-complete.service
# 啟動腳本日誌
sudo tail -f /var/log/momo_startup.log
故障排除
Harbor 無法啟動
# 檢查 Harbor 日誌
docker logs harbor-core
# 安全重啟 Harbor(ADR-011:禁止 down / --remove-orphans)
cd /home/wooo/devops/harbor/harbor
docker compose stop
docker compose up -d --force-recreate
K8s Pod ImagePullBackOff
# 檢查 Harbor 連線
curl -v http://127.0.0.1:5050/api/v2.0/ping
# 重建 registry secret
kubectl delete secret harbor-registry -n momo
kubectl create secret docker-registry harbor-registry \
--docker-server=harbor.wooo.work \
--docker-username=admin \
--docker-password=Wooo_Harbor_2026 \
-n momo
# 重啟 Pods
kubectl rollout restart deployment/momo-app -n momo
PostgreSQL 不穩定
# 檢查 PostgreSQL 日誌
kubectl logs momo-postgres-0 -n momo
# 調整 probe 設定 (如果 probe 過於敏感)
kubectl patch statefulset momo-postgres -n momo -p '{
"spec": {
"template": {
"spec": {
"containers": [{
"name": "postgres",
"livenessProbe": {
"initialDelaySeconds": 30,
"periodSeconds": 30,
"timeoutSeconds": 10,
"failureThreshold": 5
}
}]
}
}
}
}'
監控與告警
啟動完成後,系統會透過 Telegram 發送通知:
- ✅ 所有服務正常
- ⚠️ 部分服務異常
- ❌ 啟動失敗
告警接收者:
- Telegram Bot:
@wooowooowooobot - Chat ID:
5619078117