# 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 自動啟動: ```bash # 自動啟動的服務 systemctl is-enabled docker # enabled systemctl is-enabled k3s # enabled systemctl is-enabled nginx # enabled ``` ### 階段 2: Harbor Registry (60-120秒) Harbor 必須在 K8s 應用之前啟動,因為 Pod 需要拉取映像。 ```bash 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 先就緒。 ```bash # 檢查 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 可以在背景啟動。 ```bash docker start gitlab gitlab-runner docker start momo-n8n ``` ### 階段 5: 監控服務 (240-360秒) ```bash cd /home/wooo/monitoring docker compose up -d ``` ## 自動啟動機制 ### systemd 服務配置 ```bash # 安裝啟動服務 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 ``` ### 手動執行啟動腳本 ```bash sudo /home/wooo/momo_pro_system/scripts/tools/system_startup_complete.sh ``` ### 查看啟動日誌 ```bash # systemd 日誌 sudo journalctl -u momo-startup-complete.service # 啟動腳本日誌 sudo tail -f /var/log/momo_startup.log ``` ## 故障排除 ### Harbor 無法啟動 ```bash # 檢查 Harbor 日誌 docker logs harbor-core # 完全重啟 Harbor cd /home/wooo/devops/harbor/harbor docker compose down --remove-orphans docker compose up -d ``` ### K8s Pod ImagePullBackOff ```bash # 檢查 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 不穩定 ```bash # 檢查 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`