您可以使用 VPC 网络对等互连,让 Datastream 以私密方式与 Virtual Private Cloud (VPC) 网络中的资源通信。
VPC 网络对等互连是您的 VPC 网络与 Datastream 专用网络之间的连接,使 Datastream 能够使用内部 IP 地址与内部资源进行通信。使用专用连接会在 Datastream 网络上建立专用连接,这意味着其他客户无法共享此连接。
通过 VPC 网络与 Datastream VPC 网络之间的 VPC 网络对等互连连接,Datastream 可以连接到:
- VPC 网络中的虚拟机 (VM) 和内部负载平衡器等资源。
- 使用 Cloud VPN 隧道、 专用互连 VLAN 连接、 合作伙伴互连 VLAN 连接和 NCC Cloud Router连接到 VPC 网络的其他网络中的资源。
通过 VPC 网络与 Datastream VPC 网络之间的 VPC 网络对等互连连接,Datastream 无法连接到:
- 位于 VPC 网络中的 Private Service Connect 端点。
- 位于另一个与您的 VPC 网络对等互连但未与 Datastream VPC 网络对等互连的 VPC 网络中的资源。 (这是因为 VPC 网络对等互连不 提供传递性路由。)
如需在 Datastream 与只能从 VPC 网络访问的资源之间建立连接,您可以在 VPC 网络中使用网络地址转换 (NAT) 虚拟机。NAT 虚拟机的一个常见用例是 Datastream 需要连接到 Cloud SQL 实例。
本页面介绍了一个 NAT 虚拟机配置示例,该配置允许 Datastream 以私密方式连接到 Cloud SQL 实例。

VPC 对等互连前提条件
在创建专用连接配置之前,您需要先按以下步骤操作,以便 Datastream 能够与您的项目建立 VPC 对等互连连接:
- 创建一个可与 Datastream 专用网络对等互连且满足 VPC 网络对等互连 页面中所述要求的 VPC 网络。如需详细了解如何创建此网络,请参阅使用 VPC 网络对等互连。
- 确定 VPC 网络上可用的 IP 范围(CIDR 地址块为 /29)。此 IP 范围不能是已作为子网存在的 IP 范围、专用服务访问通道预分配的 IP 范围,也不能是包含该 IP 范围的任何路由(默认 0.0.0.0 路由除外)。此外,该 IP 范围也不能与 Datastream 保留的内部 IP 范围 (
10.1.0.0/16和10.2.2.0/24) 重叠。Datastream 使用此 IP 范围创建子网,以便它可以与来源数据库通信。下表介绍了有效的 IP 范围。
| 范围 | 说明 |
|---|---|
10.0.0.0/8172.16.0.0/12192.168.0.0/16
|
专用 IP 地址 RFC 1918 |
100.64.0.0/10 |
共享地址空间 RFC 6598 |
192.0.0.0/24 |
IETF 协议分配 RFC 6890 |
192.0.2.0/24 (TEST-NET-1)198.51.100.0/24 (TEST-NET-2)203.0.113.0/24 (TEST-NET-3) |
文档 RFC 5737 |
192.88.99.0/24 |
IPv6 到 IPv4 中继(已弃用) RFC 7526 |
198.18.0.0/15 |
基准测试 RFC 2544 |
确保 VPC 网络中与 Datastream 通信的任何资源(例如 NAT 虚拟机、内部负载平衡器或来源数据库和目标数据库)都不会使用
10.1.0.0/16或10.2.2.0/24范围内的 IP 地址。这些范围是为 Datastream 内部基础架构预留的,将它们用于您的资源可能会导致路由冲突和不可预测的连接失败。验证本地防火墙是否允许来自 所选 IP 范围的流量。 Google Cloud 如果不允许,请创建入站 防火墙规则 以允许来源数据库端口上的流量,并确保防火墙规则中的 IPv4 地址范围与创建专用连接资源时分配的 IP 地址范围 相同:
gcloud compute firewall-rules create FIREWALL-RULE-NAME \ --direction=INGRESS \ --priority=PRIORITY \ --network=PRIVATE_CONNECTIVITY_VPC \ --project=VPC_PROJECT \ --action=ALLOW \ --rules=FIREWALL_RULES \ --source-ranges=IP-RANGE
替换以下内容:
- FIREWALL-RULE-NAME:要创建的防火墙规则的名称。
- PRIORITY:规则的优先级,表示为介于 0 和 65535(含)之间的整数 。如果存在阻止流量规则,则该值需要低于为阻止流量规则设置的值。优先级值越低,优先级越高。
- PRIVATE_CONNECTIVITY_VPC:可与 Datastream 专用网络对等互连且满足 VPC 网络对等互连 页面中所述要求的 VPC 网络。这是您在创建 专用连接配置时指定的 VPC。
- VPC_PROJECT:VPC 网络的项目。
- FIREWALL_RULES:防火墙规则适用的协议和端口的列表,例如
tcp:80。该规则需要允许 TCP 流量流向来源数据库或代理的 IP 地址和端口。由于专用连接可以支持多个数据库,因此该规则需要考虑配置的实际使用情况。 IP-RANGE:Datastream 用于与来源数据库通信的 IP 地址范围。这与您在创建专用 连接配置时在分配 IP 范围 字段中 指示的范围相同。
您可能还需要创建相同的出站防火墙规则,以允许流量返回到 Datastream。
分配给包含
compute.networks.list权限的角色。此权限为您提供列出项目中的 VPC 网络所需的 IAM 权限。您可以查看 IAM 权限参考文档,了解哪些角色包含此权限。
共享 VPC 前提条件
如果您使用的是 共享 VPC,则除了 VPC 前提条件 部分中所述的步骤之外,还必须完成以下操作:
在服务项目上:
- 启用 Datastream API。
获取用于 Datastream 服务账号的电子邮件地址。当您执行以下任一操作时,系统会创建 Datastream 服务账号:
- 您创建 Datastream 资源,例如连接配置文件或数据流。
- 您创建专用连接配置,选择共享 VPC,然后点击 Create Datastream Service Account (创建 Datastream 服务账号)。服务帐号是在宿主项目中创建的。
如需获取用于 Datastream 服务帐号的电子邮件地址,请在 Google Cloud 控制台首页中找到项目编号。服务帐号的电子邮件地址为
service-[project_number]@gcp-sa-datastream.。
在宿主项目上:
向 Datastream 服务帐号授予
compute.networkAdminIdentity and Access Management (IAM) 角色的权限。只有在创建 VPC 对等互连时才需要此角色。建立对等互连后,您不再需要该角色。如果您的组织不允许授予该权限,请创建具有以下最低权限的自定义角色,以创建和删除专用连接资源:
如需详细了解自定义角色,请参阅创建和管理自定义角色。
设置 NAT 虚拟机
确定 Datastream 需要连接到的 Cloud SQL 实例的 IP 地址。
确定您的 VPC 网络。 这是使用 VPC 网络对等互连连接到 Datastream VPC 网络的 VPC 网络。
如果您尚未在 Datastream 中创建专用连接配置,请立即创建。这会创建连接您的 VPC 网络和 Datastream VPC 网络的 VPC 网络对等互连连接。记下 Datastream 专用连接配置使用的 IP 地址范围。
选择要用于在下一步中创建的 NAT 虚拟机的机器类型。 Google Cloud 对于 VPC 网络中由下一个跃点路由的数据包, 会根据虚拟机实例的机器类型强制执行每个实例的最大出站带宽限制。如需了解详情, 请参阅 VPC 网络中可路由到的目标的出站流量和每个实例的 最大出站带宽。
在 VPC 网络中创建 NAT 虚拟机。创建虚拟机时,您必须启用 IP 转发。如需了解详情,请参阅 为实例启用 IP 转发。
如果您的 VPC 网络是共享 VPC 网络,则您可以在宿主项目或任何服务项目中创建 NAT 虚拟机,前提是 NAT 虚拟机的网络接口位于共享 VPC 网络中。
- 如需最大限度地缩短网络往返时间,请在与 Datastream 相同的区域中创建 NAT 虚拟机。
- 此示例假定 NAT 虚拟机具有单个网络接口。
- 在 Linux 发行版(例如 Debian 12)中运行脚本。
- 使用以下 启动 脚本。每次虚拟机启动时,启动脚本都会由根用户执行。此脚本包含注释,用于说明脚本中每一行的作用。在脚本中, 将 CLOUD_SQL_INSTANCE_IP 替换为 Cloud SQL 实例的 IP 地址,并将 DATABASE_PORT 替换为数据库软件使用的目标 端口。
#! /bin/bash export DB_ADDR=CLOUD_SQL_INSTANCE_IP export DB_PORT=DATABASE_PORT # Enable the VM to receive packets whose destinations do # not match any running process local to the VM echo 1 > /proc/sys/net/ipv4/ip_forward # Ask the Metadata server for the IP address of the VM nic0 # network interface: md_url_prefix="http://169.254.169.254/computeMetadata/v1/instance" vm_nic_ip="$(curl -H "Metadata-Flavor: Google" ${md_url_prefix}/network-interfaces/0/ip)" # Clear any existing iptables NAT table entries (all chains): iptables -t nat -F # Create a NAT table entry in the prerouting chain, matching # any packets with destination database port, changing the destination # IP address of the packet to the SQL instance IP address: iptables -t nat -A PREROUTING \ -p tcp --dport $DB_PORT \ -j DNAT \ --to-destination $DB_ADDR # Create a NAT table entry in the postrouting chain, matching # any packets with destination database port, changing the source IP # address of the packet to the NAT VM's primary internal IPv4 address: iptables -t nat -A POSTROUTING \ -p tcp --dport $DB_PORT \ -j SNAT \ --to-source $vm_nic_ip # Save iptables configuration: iptables-save
创建具有以下特征的入站流量允许防火墙 规则(或 全球网络防火墙 政策、区域级网络 防火墙政策或 分层防火墙政策中的规则):
- 方向:入站
- 操作:允许
- 目标参数:至少是 NAT 虚拟机
- 来源参数:Datastream 专用连接配置使用的 IP 地址范围
- 协议:TCP
- 端口:必须至少包含 DATABASE_PORT
隐式允许出站流量防火墙 规则允许 NAT 虚拟机 将数据包发送到任何目标。如果您的 VPC 网络使用出站流量拒绝防火墙规则,您可能必须创建出站流量允许防火墙规则,以允许 NAT 虚拟机将数据包发送到 Cloud SQL 实例。如果需要出站流量允许规则,请使用以下参数:
- 方向:出站流量
- 操作:允许
- 目标参数:至少是 NAT 虚拟机
- 目标参数:Cloud SQL 实例 IP 地址
- 协议:TCP
- 端口:必须至少包含 DATABASE_PORT
确保您已将 Cloud SQL 实例配置为接受来自 NAT 虚拟机的网络接口使用的主要内部 IPv4 地址的连接。如需了解相关说明,请参阅 Cloud SQL 文档中的使用授权 网络进行授权。
在 Datastream 中创建连接配置文件。在配置文件的连接详细信息中,指定您创建的 NAT 虚拟机的主要内部 IPv4 地址。在连接配置文件的端口字段中输入来源数据库的端口。
设置一对 NAT 虚拟机和一个内部直通式网络负载平衡器
如需提高 NAT 虚拟机解决方案的可靠性,请考虑以下架构,该架构使用一对 NAT 虚拟机和一个内部直通式网络负载平衡器:
在同一区域的不同可用区中创建两个 NAT 虚拟机。按照设置 NAT 虚拟机中的说明创建每个虚拟机,并将 每个虚拟机放置在自己的可用区级非代管式实例组中。
或者,您可以创建区域级代管式实例 组。 在代管式实例组模板中,添加一个启动脚本,例如 设置 NAT 虚拟机 中的示例启动脚本。
创建一个内部直通式网络负载平衡器,其后端服务使用上一步中的实例组作为其后端。如需查看内部直通式网络负载平衡器示例, 请参阅设置具有虚拟机实例组 后端的内部直通网络负载平衡器。
配置负载均衡器健康检查时,您可以使用 TCP 健康 检查,该检查使用与 DATABASE_PORT 匹配的目标 TCP 端口。健康检查数据包会根据 NAT 虚拟机配置路由到 CLOUD_SQL_INSTANCE_IP。 或者,您也可以在 NAT 虚拟机上运行本地进程,该进程会在自定义端口上响应 TCP 或 HTTP 健康检查。
按照 设置 NAT 虚拟机中的说明创建防火墙规则并配置 Cloud SQL 授权网络。 确保 Cloud SQL 授权网络包含两个 NAT 虚拟机的主要内部 IPv4 地址。
创建 Datastream 连接配置文件时,请在配置文件的连接详细信息中指定内部直通式网络负载平衡器的转发规则的 IP 地址。