4. 混合部署网络设计
PostgreSQL 混合部署的网络设计,本质上是把数据库实例、应用节点、运维跳板机、备份存储等对象,分散在多个 VPC、多个云厂商、多个自建机房中,并让它们之间以可控的延迟、带宽、安全策略和可解析的地址互相访问。网络设计一旦出错,后续的流复制、逻辑订阅、备份恢复、监控采集都会出现难以定位的间歇性故障。因此本节先厘清各类连接方式的定位,再给出可落地的配置与验证方法。
一、连接方式的定位与选型
跨环境通信常见手段有 VPC 对等连接、VPN、专线和云厂商提供的对等连接/云联网。它们并不是互相替代的关系,而是按“是否同云、是否同地域、是否要求稳定带宽”分层使用。
- VPC 对等连接:适合同一云厂商内两个 VPC 互通,延迟低、配置简单,但多数云厂商不支持传递路由,A 与 B 对等、B 与 C 对等,A 不一定能访问 C。
- VPN:基于公网建立 IPsec 隧道,适合临时、成本敏感或跨云场景,带宽受公网质量影响,抖动较大。
- 专线:物理或运营商专线接入,延迟稳定、带宽可保障,适合主备库跨机房、跨云的核心链路,但成本高、开通周期长。
- 云联网/中转网关:用于多 VPC、多地域、多账号的星型汇聚,解决对等连接不可传递的问题。
选型时先回答三个问题:两端是否同云同地域?是否要求延迟稳定在毫秒级?是否允许流量经过公网?答案决定了组合方式。例如同云同地域用对等连接,跨云核心链路用专线加 VPN 备份,多分支汇聚用云联网。
二、地址规划与路由
混合部署最容易踩的坑是网段重叠。规划阶段必须保证各 VPC、各机房、各容器网段的 CIDR 不重叠,否则对等连接和专线都无法建立有效路由。建议按环境划分大段,例如生产 VPC 使用 10.10.0.0/16,测试 VPC 使用 10.20.0.0/16,自建机房使用 10.30.0.0/16,容器网段单独使用 172.20.0.0/16。
路由方面,对等连接需要在两端 VPC 的路由表中分别添加指向对端 CIDR 的路由条目,下一跳为对等连接 ID;专线则通过边界网关和路由表发布本地网段。若使用云联网,只需把各 VPC 和专线网关关联到云联网实例,由云联网统一分发路由。需要注意,PostgreSQL 主备之间的流复制流量应走低延迟链路,而备份归档流量可以走成本更低的链路,可通过路由优先级或策略路由区分。
三、DNS 解析设计
跨环境访问数据库时,直接写 IP 会导致主备切换、迁移后应用配置频繁变更。推荐使用私有 DNS 或自建 DNS 为数据库实例提供稳定域名,例如 pg-primary.db.internal 和 pg-standby.db.internal。云上可使用 PrivateZone 或 Route 53 私有托管区,自建机房可用 BIND 或 CoreDNS。
跨云解析的关键是 DNS 转发:在云上私有 DNS 中为自建机房域名配置转发规则,指向机房 DNS 服务器;在机房 DNS 中为云上域名配置条件转发,指向云上 DNS 的入站地址。这样应用无论部署在哪个环境,都能用同一域名解析到就近或正确的数据库地址。解析记录 TTL 建议设置为 30~60 秒,便于主备切换后快速生效。
四、跨环境通信配置与验证
下面以“云上 VPC 与自建机房通过 IPsec VPN 互通,PostgreSQL 主库在机房、备库在云上”为例,给出关键配置与验证过程。示例参数为教学假设,实际以环境为准。
# 机房侧 strongSwan 配置片段(示例)
conn pg-hybrid
left=203.0.113.10 # 机房公网出口
leftsubnet=10.30.0.0/16 # 机房内网
right=198.51.100.20 # 云上 VPN 网关公网 IP
rightsubnet=10.10.0.0/16 # 云上 VPC
ike=aes256-sha256-modp2048
esp=aes256-sha256
keyexchange=ikev2
auto=start
# 云上 VPC 路由表添加
目的网段 10.30.0.0/16 -> 下一跳 VPN 网关
# 机房侧添加回程路由
ip route add 10.10.0.0/16 via 203.0.113.1
配置完成后按顺序验证:先确认隧道状态为 established,再测试网络连通性,最后验证 PostgreSQL 复制链路。
# 1. 查看隧道状态
ipsec statusall | grep pg-hybrid
# 2. 测试连通性(从云上备库节点)
ping -c 3 10.30.1.10
traceroute -n 10.30.1.10
# 3. 测试 PostgreSQL 端口
pg_isready -h 10.30.1.10 -p 5432
# 4. 查看复制状态(在备库执行)
psql -h 10.10.2.20 -c "SELECT client_addr, state, sync_state, replay_lag FROM pg_stat_replication;"
判断依据:pg_isready 返回 accepting connections 说明端口可达;pg_stat_replication 中 state 为 streaming、replay_lag 在秒级以内,说明复制链路正常。若 ping 通但 5432 不通,通常是安全组或防火墙未放行;若复制延迟持续增大,需检查 VPN 带宽和 MTU,IPsec 场景下建议将 PostgreSQL 所在主机 MTU 调整为 1400 左右以避免分片。
五、安全与高可用注意事项
跨环境链路必须限制访问来源,安全组和防火墙只放行数据库端口、复制端口和监控端口,禁止全网段开放。专线和 VPN 建议做主备双链路,通过 BGP 或路由优先级实现切换。DNS 解析要配合健康检查,主库故障时自动把域名指向备库。对于跨云场景,还需注意各云厂商对 IPsec 参数、加密算法和 MTU 的差异,提前对齐配置。
整体来看,混合部署网络设计要先把地址和路由规划清楚,再选择对等连接、VPN、专线或云联网的组合,最后用 DNS 屏蔽底层地址变化。配置完成后必须按“隧道—连通性—端口—复制状态”的顺序逐层验证,任何一层不通过都不要继续往下排查,这样才能快速定位问题边界。