云迁移 · 评估

文档上的架构图,和实际跑着的从来不一样

我们靠网络流量采集 + 配置扫描 + 访谈三管齐下,把真实依赖挖出来。漏掉一条隐藏调用,迁移当晚就会出事。

三种数据来源互相校验

网络流量采集

在服务器上部署轻量 Agent,采集 14-30 天的 TCP 连接与端口数据,还原真实通信关系。

配置文件扫描

扫描应用配置、连接串、hosts 文件、定时任务,找出硬编码的 IP 与域名依赖。

业务访谈

和研发、运维、业务方逐个确认,补上前两种方式看不到的人工流程与外部对接。

最容易被漏掉的依赖类型

依赖类型为什么会漏怎么发现
定时任务的跨系统调用低频执行,采集窗口内可能没跑到扫描 crontab 与调度平台配置,至少覆盖一个月周期
硬编码的内网 IP配置里写死,文档没记录全量 grep 配置文件与代码库
共享存储挂载看起来像本地路径检查 fstab 与挂载点
数据库直连的 BI/报表工具不在应用架构图里查数据库连接来源 IP 白名单
与第三方的 IP 白名单对接对方按出口 IP 放通梳理所有外部接口,确认是否依赖固定出口 IP
许可证服务器启动时才校验检查商业软件的 license 配置
日志与监控采集链路属于旁路,容易忽略确认采集端点与推送目标

快速采集主机连接关系

bash collect-connections.sh
#!/usr/bin/env bash
# 轻量依赖采集:每分钟快照一次 ESTABLISHED 连接,累积成依赖清单
# 建议连续采集 14-30 天,覆盖月度定时任务
set -euo pipefail

OUT_DIR="${1:-/var/log/migration-discovery}"
HOSTNAME_TAG="$(hostname -f)"
mkdir -p "$OUT_DIR"

snapshot() {
  local ts
  ts="$(date -u +%Y-%m-%dT%H:%M:%SZ)"

  # 出向连接:本机作为客户端访问了谁
  ss -tnp state established 2>/dev/null | tail -n +2 | \
  awk -v ts="$ts" -v host="$HOSTNAME_TAG" '{
    split($3, l, ":"); split($4, r, ":");
    proc ="; if (match($0, /users:\(\("[^"]+"/)) {
      proc = substr($0, RSTART+9, RLENGTH-10);
    }
    print ts "," host "," l[1] "," l[2] "," r[1] "," r[2] "," proc
  }' >> "$OUT_DIR/connections.csv"

  # 监听端口:本机对外提供了什么服务
  ss -tlnp 2>/dev/null | tail -n +2 | \
  awk -v ts="$ts" -v host="$HOSTNAME_TAG" '{
    split($4, a, ":"); port = a[length(a)];
    proc ="; if (match($0, /users:\(\("[^"]+"/)) {
      proc = substr($0, RSTART+9, RLENGTH-10);
    }
    print ts "," host "," port "," proc
  }' >> "$OUT_DIR/listeners.csv"
}

# 写入表头(仅首次)
[[ -s "$OUT_DIR/connections.csv" ]] || \
  echo "ts,host,local_ip,local_port,remote_ip,remote_port,process" > "$OUT_DIR/connections.csv"
[[ -s "$OUT_DIR/listeners.csv" ]] || \
  echo "ts,host,listen_port,process" > "$OUT_DIR/listeners.csv"

snapshot
echo "采集完成,累计记录:$(wc -l < "$OUT_DIR/connections.csv") 行"

配到 crontab 每分钟执行一次即可。数据量很小,一个月大概几十 MB。汇总后用图数据库或 Graphviz 画拓扑。

从依赖图到迁移波次

依赖图画出来以后,下一步是切波次。原则是:把强耦合的系统放同一波一起迁,弱耦合的可以分开。判断标准是调用频率和延迟敏感度——如果两个系统之间每秒几千次调用,分开迁会因为跨网络延迟直接出问题。

第一波优先选依赖少、影响面小、有代表性的系统,用来验证工具链和流程。最后一波留给核心数据库和强依赖系统,这时候团队已经练熟了。

下一步

把云的复杂度交给我们,你只管做业务

留下需求,沐杉云的解决方案架构师会在一个工作日内联系你,提供免费的现状评估、迁移方案草案与 TCO 测算表。