arbitrage-engine/docs/OPS_CONNECTIONS.md

3.9 KiB
Raw Blame History

运维连接手册Cloud SQL + GCE

本手册记录本项目当前线上环境的关键连接信息。 目标:后续只看这一个文档,就能快速连上数据库和服务器。

0. 固定信息

  • GCP Project ID: gen-lang-client-0835616737
  • Cloud SQL instance connection name: gen-lang-client-0835616737:asia-northeast1:arb-db
  • Cloud SQL DB: arb_engine
  • DB user: arb
  • DB password (当前): arb_engine_2026
  • 线上 VM: instance-20260221-064508
  • Zone: asia-northeast1-b
  • 线上项目目录: /home/fzq1228/Projects/arbitrage-engine

1. 本机连接 Cloud SQL

1.1 启动 Proxy本机

开一个终端窗口常驻运行:

cloud-sql-proxy gen-lang-client-0835616737:asia-northeast1:arb-db --port 9470

如果系统找不到命令,用完整路径:

/opt/homebrew/share/google-cloud-sdk/bin/cloud-sql-proxy \
  gen-lang-client-0835616737:asia-northeast1:arb-db \
  --port 9470

1.2 测试 DB 连通性

PGPASSWORD=arb_engine_2026 psql -h 127.0.0.1 -p 9470 -U arb -d arb_engine -c "SELECT 1;"

进入交互式 SQL

PGPASSWORD=arb_engine_2026 psql -h 127.0.0.1 -p 9470 -U arb -d arb_engine

1.3 Proxy 常见修复

如果报错类似 server closed the connection unexpectedlyconnection refused

pkill -f "cloud-sql-proxy gen-lang-client-0835616737:asia-northeast1:arb-db --port 9470" || true
cloud-sql-proxy gen-lang-client-0835616737:asia-northeast1:arb-db --port 9470

2. 连接线上服务器GCE

2.1 先确认账号和项目

gcloud auth list --filter=status:ACTIVE --format='value(account)'
gcloud config get-value project

如需切换项目:

gcloud config set project gen-lang-client-0835616737

2.2 查看实例

gcloud compute instances list --format='table(name,zone,status,networkInterfaces[0].networkIP,networkInterfaces[0].accessConfigs[0].natIP)'

2.3 SSH推荐 IAP

注意:该实例直连 22 端口可能失败,推荐固定用 IAP

gcloud compute ssh instance-20260221-064508 \
  --zone asia-northeast1-b \
  --project gen-lang-client-0835616737 \
  --tunnel-through-iap

快速连通性测试:

gcloud compute ssh instance-20260221-064508 \
  --zone asia-northeast1-b \
  --project gen-lang-client-0835616737 \
  --tunnel-through-iap \
  --command "hostname; whoami; uptime; pwd"

3. 线上项目目录与运行状态

3.1 项目目录

  • Repo root: /home/fzq1228/Projects/arbitrage-engine
  • Backend: /home/fzq1228/Projects/arbitrage-engine/backend
  • Frontend: /home/fzq1228/Projects/arbitrage-engine/frontend

3.2 当前运行形态(关键)

  • 运行用户:fzq1228
  • 进程管理:pm2PM2 God Daemon 在跑)
  • 关键进程:
    • python3 signal_engine.py
    • python3 paper_monitor.py
    • uvicorn main:app --host 0.0.0.0 --port 4332
    • next start -p 4333

进程核对命令:

ps -ef | egrep -i 'signal_engine|paper_monitor|uvicorn|next start|PM2' | grep -v egrep

4. 常用线上操作命令

进入项目目录:

cd /home/fzq1228/Projects/arbitrage-engine

查看分支和最近提交(避免 safe.directory 报错):

sudo git -c safe.directory=/home/fzq1228/Projects/arbitrage-engine -C /home/fzq1228/Projects/arbitrage-engine rev-parse --abbrev-ref HEAD
sudo git -c safe.directory=/home/fzq1228/Projects/arbitrage-engine -C /home/fzq1228/Projects/arbitrage-engine log --oneline -1

5. 快速故障排查

  • DB 报 connection refused
    • Proxy 没开或者端口不是 9470
  • DB 报 server closed the connection unexpectedly
    • 通常是旧 Proxy 假活着,重启 Proxy。
  • SSH 报 Connection closed by ... port 22
    • 改用 --tunnel-through-iap
  • 能 SSH 但找不到项目目录
    • 当前在线项目目录固定是 /home/fzq1228/Projects/arbitrage-engine,不要只在 ~/ 下面找。