跳到主要内容

基于云联网(CCN)实现云开发跨地域 VPC 内网互通(单账号)

适用场景

云开发(CloudBase)的云函数、云托管支持开启 VPC 访问,绑定到你账号下的某个 VPC 后,即可访问该 VPC 内的资源(自建数据库、CVM 服务等)。

但是,云开发资源所在的 VPC 是用户自建的,与目标业务 VPC 在不同地域时(如云函数 VPC 在上海、业务服务在北京),仅靠 VPC 本身无法跨地域内网互通。这时候可以借助腾讯云云联网(CCN) 把两个 VPC 连成一张内网。

本文档介绍 单账号 场景:所有资源(云函数 VPC、业务 VPC、CCN)都在同一个腾讯云账号下,无需跨账号关联审批,全程在用户自己控制台完成

方案概述

链路拓扑

云函数/云托管(绑定云函数 VPC)

CCN(跨地域内网)

业务后端(业务 VPC,其他地域)

核心组件

组件说明
云函数 VPC你账号下自建的 VPC,云函数/云托管开启 VPC 访问时绑定的就是它
业务 VPC你账号下另一个地域的自建 VPC,承载数据库、CVM 等业务后端
云联网(CCN)跨地域内网互通的核心组件,将上述两个 VPC 连成一张内网

架构图

┌─────────────────────────────────────────────────┐
│ 你的腾讯云账号 │
│ │
│ ┌──────────────────────┐ │
│ │ 云函数 VPC(上海) │ │
│ │ 192.168.0.0/16 │ │
│ │ 云函数 / 云托管 │ │
│ │ → 调用业务后端 IP │ │
│ └──────────┬───────────┘ │
│ │ │
│ ┌──────────┴──────────────────────────────┐ │
│ │ CCN(云联网) │ │
│ │ 路由表(2 条): │ │
│ │ · 192.168.0.0/16(云函数 VPC) │ │
│ │ · 172.16.0.0/16(业务 VPC) │ │
│ └──────────────────────────┬──────────────┘ │
│ │ │
│ ↓ │
│ ┌──────────────────────┐ │
│ │ 业务 VPC(北京) │ │
│ │ 172.16.0.0/16 │ │
│ │ ┌─────────────────┐ │ │
│ │ │ 数据库/服务 │ │ │
│ │ │ 172.16.1.100 │ │ │
│ │ │ 端口: 3306/8080 │ │ │
│ │ └─────────────────┘ │ │
│ └──────────────────────┘ │
└────────────────────────────────────────────────┘

前置条件

  • 已开通云开发环境
  • 在云开发资源所在地域(如上海)已自建一个 VPC,作为云函数/云托管的网络(云函数 VPC
  • 在目标地域(如北京)已自建 VPC 和业务服务(业务 VPC
  • 当前账号具备 VPC、CCN 的操作权限

网段规划(关键)

⚠️ 网段冲突是接入失败最常见的原因,开始之前必须确认。

角色地域网段(示例)说明
云函数 VPC上海192.168.0.0/16你自建,云函数/云托管已绑定
业务 VPC北京172.16.0.0/16你自建,承载业务后端

两个 VPC 网段必须互不重叠,否则 CCN 路由会冲突。

操作流程

整个流程在单账号内完成,分 3 步,全部在你自己控制台操作:

步骤 1:创建 CCN → 步骤 2:两个 VPC 各自关联到 CCN → 步骤 3:业务调用
(1 分钟) (3 分钟) (5 分钟)

步骤 1:创建云联网实例

  1. 登录 云联网控制台,点击「新建
  2. 配置:
    • 名称:自定义,如 cloudbase-ccn
    • 计费模式:按月 95 计费(推荐,灵活)或按月预付费
    • 服务质量:(推荐,低延迟)或 银
    • 带宽限速方式:地域间限速
  3. 点击「确定」,记录 CCN 实例 ID(形如 ccn-xxxxxxxx

💡 CCN 默认提供 10 Kbps 以下免费带宽,足以做连通性测试(ping/telnet)。生产环境再按「上海 ↔ 北京」线路购买带宽即可(建议 50 Mbps 起,按需扩容)。

步骤 2:两个 VPC 各自关联到 CCN

💡 在 VPC 详情页发起关联(不是在 CCN 详情页),同账号关联即时生效,无需审批。

2.1 云函数 VPC 关联到 CCN

  1. 进入 VPC 控制台地域选上海,找到云函数 VPC(如 192.168.0.0/16 那个),点击进入详情
  2. 切换到「云联网」页签 → 点击「关联云联网
  3. 配置:
    • 账号类型:我的账号
    • 云联网 ID:选择步骤 1 创建的 cloudbase-ccn
  4. 点击「确定」(即时生效)

2.2 业务 VPC 关联到 CCN

  1. 切换 VPC 控制台 地域到北京,找到业务 VPC(如 172.16.0.0/16),进入详情
  2. 云联网」页签 → 「关联云联网
  3. 配置同上,选择同一个 cloudbase-ccn
  4. 点击「确定」

2.3 验证 CCN 路由

进入 云联网控制台 → CCN 实例详情 → 「路由表」,确认存在以下两条路由(状态为「启用」):

目的端下一跳状态
192.168.0.0/16(云函数 VPC)上海 VPC✅ 启用
172.16.0.0/16(业务 VPC)北京 VPC✅ 启用

💡 同时配置跨地域带宽:CCN 详情页 → 「带宽管理」→ 「变更带宽」,按「上海 ↔ 北京」线路配置带宽上限。免费额度(10 Kbps 以下)仅适合连通性测试,生产环境按需购买。

步骤 3:业务调用

3.1 业务 VPC 安全组放行

进入业务后端(CVM/数据库等)的安全组,入站规则新增:

来源协议端口说明
192.168.0.0/16(云函数 VPC 网段)TCP业务端口(如 8080允许云函数访问
192.168.0.0/16ICMP全部可选,便于 ping 测试

3.2 确认云函数已绑定云函数 VPC

进入云函数控制台 → 函数详情 → 「网络配置」→ 确认已开启私有网络,且绑定的是步骤 2.1 中关联到 CCN 的那个云函数 VPC。

如果云函数尚未开启 VPC 访问,先在此处配置完成。

3.3 在云函数中调用业务服务

云函数代码中直接使用业务后端的内网 IP

// 示例:云函数访问北京 VPC 内的业务服务
const http = require('http')

exports.main = async (event, context) => {
const options = {
hostname: '172.16.1.100', // 业务服务内网 IP(CCN 直连)
port: 8080,
path: '/api/your-service',
method: 'GET',
timeout: 5000,
}

return new Promise((resolve, reject) => {
const req = http.request(options, (res) => {
let data = ''
res.on('data', (chunk) => (data += chunk))
res.on('end', () => {
try {
resolve({ statusCode: 200, body: JSON.parse(data) })
} catch (e) {
resolve({ statusCode: 200, body: data })
}
})
})

req.on('timeout', () => {
req.destroy()
reject(new Error('Request timeout - check VPC connectivity'))
})
req.on('error', (err) => {
reject(new Error(`Connection failed: ${err.message} - check CCN/security group`))
})
req.end()
})
}

3.4 部署并验证

部署云函数 → 触发测试调用 → 确认返回业务后端响应即接入完成。

注意事项

网段冲突

  • 最常见的失败原因。CCN 关联前必须确认两个 VPC 网段无重叠
  • 推荐网段规划:云函数 VPC 用 192.168.0.0/16、业务 VPC 用 172.16.0.0/16,避开 10.0.0.0/8

带宽与计费

  • CCN 默认提供 10 Kbps 以下免费带宽,仅适合连通性测试
  • 生产环境按「地域对」(如上海 ↔ 北京)独立计费,单账号场景下费用由你自己承担
  • 监控带宽使用率,避免业务流量突发导致丢包

安全控制

  • 业务 VPC 安全组仅放行云函数 VPC 网段,避免全开
  • 数据库类敏感服务建议结合 IAM 鉴权与 VPC 安全组双重控制
  • 仅开放业务必要端口

故障排查路径

出现连接异常时按顺序排查:

CCN 路由表是否齐全(2 条都启用)

业务 VPC 安全组是否放行云函数 VPC 网段

云函数是否已开启 VPC 访问且绑定到正确的云函数 VPC

业务后端服务本身是否监听该端口(业务 CVM 上 curl localhost:<port>)

云函数日志(请求超时 / 连接拒绝 / 路由不可达)

反向调用

本方案是单向的(云函数 → 业务 VPC)。如果需要业务 VPC 内的 CVM 反向调用云函数,分两种情况:

  • CVM 有公网出口(绑定 EIP 或通过 NAT 网关出公网):直接通过公网访问云函数的 HTTP 触发地址即可,无需 CCN
  • CVM 无公网出口(纯内网):公网方式不可用。可在业务 VPC 中部署 NAT 网关 / 公网代理服务,让 CVM 经由这些组件出公网访问云函数 HTTP 触发地址;或评估是否调整业务架构(例如把对应能力下沉到业务侧)

常见问题

Q1:云函数 VPC 在哪里查看 / 创建?

进入 VPC 控制台 自行创建即可。云函数在「网络配置」中开启「私有网络」时,会让你选择当前账号下的 VPC,选你创建的这个即可。

Q2:可以同时连接多个地域的业务 VPC 吗?

可以。在步骤 2 中重复让多个不同地域的业务 VPC 关联到同一个 CCN,CCN 自动维护多 VPC 路由(注意所有 VPC 网段不能冲突)。

Q3:业务后端 IP 变化了怎么办?

云函数代码中硬编码的 IP 需要同步修改。如果后端 IP 频繁变动或有多台机器,建议在业务 VPC 内自建一个内网 CLB 作为统一入口,云函数只调用 CLB VIP,后端变更对云函数无感。

Q4:跨账号场景怎么办?

跨账号需要在 VPC 关联 CCN 时选择「其他账号」并填写对端 UIN,由对方账号在 CCN 详情页审批。详细流程见跨账号产品化方案文档。

Q5:关联 CCN 后会影响云函数原本的 VPC 通信吗?

不会。云函数 VPC 关联到 CCN 仅新增了跨地域访问能力,VPC 内原有资源访问完全不受影响。