通过专用连接,Datastream 可以使用 VPC 网络对等互连连接到 Datastream VPC 网络,从而与 Virtual Private Cloud (VPC) 网络中的资源进行通信。
通过 VPC 网络与 Datastream VPC 网络之间的 VPC 网络对等互连连接,Datastream 可以连接到:
- VPC 网络中的虚拟机 (VM) 和内部负载平衡器等资源。
- 使用 Cloud VPN 隧道、专用互连 VLAN 附加连接、合作伙伴互连 VLAN 附加连接和 Network Connectivity Center Cloud Router 路由器连接到您的 VPC 网络的其他网络中的资源。
您的 VPC 网络与 DataStream VPC 网络之间的 VPC 网络对等互连连接不允许 DataStream 连接到:
- 位于 VPC 网络中的 Private Service Connect 端点。
- 位于其他 VPC 网络中的资源,与您的 VPC 网络对等互连,但未与 Datastream VPC 网络对等互连。(这是因为 VPC 网络对等互连不提供传递性路由。)
如需在 Datastream 与只能通过 VPC 网络访问的资源之间建立连接,您可以在 VPC 网络中使用网络地址转换 (NAT) 虚拟机。NAT 虚拟机的一个常见用例是,Datastream 需要连接到 Cloud SQL 实例。
本页介绍了一个 NAT VM 配置示例,可让 Datastream 私下连接到 Cloud SQL 实例。
设置 NAT 虚拟机
确定 Datastream 需要连接到的 Cloud SQL 实例的 IP 地址。
指定您的 VPC 网络。这是使用 VPC 网络对等互连连接到 DataStream VPC 网络的 VPC 网络。
如果您尚未在 Datastream 中创建专用连接配置,请先执行此操作。这会创建 VPC 网络对等互连连接,用于连接您的 VPC 网络和 Datastream VPC 网络。记下 Datastream 专用连接配置使用的 IP 地址范围。
选择要在下一步中为 NAT 虚拟机使用的机器类型。Google Cloud 会根据虚拟机实例的机器类型,对 VPC 网络中由下一个跃点路由的数据包强制执行每个实例的最大出站带宽限制。如需了解详情,请参阅出站到可在 VPC 网络中路由的目的地和每个实例的最大出站带宽。
在您的 VPC 网络中创建 NAT 虚拟机。如果您的 VPC 网络是共享 VPC 网络,则您可以在宿主项目或任何服务项目中创建 NAT 虚拟机,前提是 NAT 虚拟机的网络接口位于共享 VPC 网络中。
- 为尽可能缩短网络往返时间,请在与 Datastream 位于同一区域中创建 NAT 虚拟机。
- 此示例假定 NAT 虚拟机只有一个网络接口。
- 在 Linux 发行版(例如 Debian 12)中运行脚本。
- 使用以下启动脚本。每次虚拟机启动时,root 都会执行启动脚本。此脚本包含注释,说明脚本的每一行代码的用途。在脚本中,将 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 虚拟机说明中的示例启动脚本。
创建一个内部直通式网络负载平衡器,其后端服务使用上一步中的实例组作为后端。如需查看内部直通式网络负载平衡器示例,请参阅设置具有虚拟机实例组后端的内部直通式网络负载平衡器。
配置负载均衡器健康检查时,您可以使用使用与 DATABASE_PORT 匹配的目标 TCP 端口的 TCP 健康检查。健康检查数据包会根据 NAT 虚拟机配置路由到 CLOUD_SQL_INSTANCE_IP。或者,您也可以在 NAT 虚拟机上运行一个本地进程,用于响应自定义端口上的 TCP 或 HTTP 健康检查。
按照设置 NAT 虚拟机中的说明创建防火墙规则并配置 Cloud SQL 授权网络。确保 Cloud SQL 已获授权的网络包含这两个 NAT 虚拟机的主要内部 IPv4 地址。
创建 Datastream 连接配置文件时,请在配置文件的连接详情中指定内部直通式网络负载平衡器转发规则的 IP 地址。