基于云联网(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:创建云联网实例
- 登录 云联网控制台,点击「新建」
- 配置:
- 名称:自定义,如
cloudbase-ccn - 计费模式:按月 95 计费(推荐,灵活)或按月预付费
- 服务质量:金(推荐,低延迟)或 银
- 带宽限速方式:地域间限速
- 名称:自定义,如
- 点击「确定」,记录 CCN 实例 ID(形如
ccn-xxxxxxxx)
💡 CCN 默认提供 10 Kbps 以下免费带宽,足以做连通性测试(ping/telnet)。生产环境再按「上海 ↔ 北京」线路购买带宽即可(建议 50 Mbps 起,按需扩容)。
步骤 2:两个 VPC 各自关联到 CCN
💡 在 VPC 详情页发起关联(不是在 CCN 详情页),同账号关联即时生效,无需审批。
2.1 云函数 VPC 关联到 CCN
- 进入 VPC 控制台,地域选上海,找到云函数 VPC(如
192.168.0.0/16那个),点击进入详情 - 切换到「云联网」页签 → 点击「关联云联网」
- 配置:
- 账号类型:我的账号
- 云联网 ID:选择步骤 1 创建的
cloudbase-ccn
- 点击「确定」(即时生效)
2.2 业务 VPC 关联到 CCN
- 切换 VPC 控制台 地域到北京,找到业务 VPC(如
172.16.0.0/16),进入详情 - 「云联网」页签 → 「关联云联网」
- 配置同上,选择同一个
cloudbase-ccn - 点击「确定」
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/16 | ICMP | 全部 | 可选,便于 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 内原有资源访问完全不受影响。