Google Cloud 上的集中式网络设备

本文档适用于在 Google Cloud 上运行集中式网络设备的网络管理员、解决方案架构师和专业运营人员。需要了解 Google Cloud 中的 Compute EngineVirtual Private Cloud (VPC) 网络

在企业环境中,通常需要通过基于虚拟机的虚拟化设备将流量路由到互联网、本地网络、其他云环境或甚至是相同云环境的其他部分,这些设备会监控、转换或阻止流量。

本文档介绍了几个设计选项,可划分 VPC 网络并通过集中式虚拟化网络设备将它们进行互连。VPC 网络、本地网络与互联网之间的所有通信都通过集中式设备进行路由。您可以部署一组冗余设备以获取高可用性配置。如果您不需要高可用性,则可以部署单个网络设备。

通过虚拟化设备路由流量可能并不容易。例如,在 Google Cloud 上,您可以替换指向互联网的路由,并将流量重定向到一组虚拟化设备,但您无法更改 VPC 网络中子网之间的路由行为。子网之间的路由会自动进行,并且这些路由无法删除或替换。

此外,由于虚拟化设备非常关键,必须将其部署在高可用性配置中。这是颇具挑战性的任务,因为您需要确保所有流量都通过其中一个虚拟设备进行路由,并且这些设备之间的故障转移是自动的。

下图展示了使用集中式虚拟化网络设备的几个设计选项的典型用例。

使用集中式虚拟化网络设备的设计选项。

上图显示了分段的 VPC 网络、本地网络与互联网之间的通信路径,以及它们如何通过集中式虚拟化网络设备进行路由。

此架构的主要用例

您可以将此架构用于涉及路由流量的虚拟化网络设备的多个用例。请牢记以下注意事项:

  • 您可以在 Google Cloud Marketplace 中找到不同供应商的多种设备。
  • 一些设备供应商还会在其网站或支持页面上提供适用于 Google Cloud 的自定义Compute Engine 映像
  • 您可以使用开源网络软件创建自己的虚拟化设备。您也可以创建自己的映像。

供应商通常会提供各自的参考架构或部署指南,用于在高可用性配置中运行其虚拟化设备。如需了解详情,请访问供应商的网站。

供应商的参考架构可能不包含本文档中介绍的所有选项。

了解每种方法的优点和缺点非常重要。路由流量的虚拟设备的典型用例包括:

  • 下一代防火墙 (NGFW)。一组集中式防火墙作为虚拟机运行,并提供使用 VPC 防火墙规则时不具备的功能。这是最常见的用例。NGFW 产品的典型功能包括深度数据包检测 (DPI) 和应用层防火墙。一些 NGFW 防火墙还提供 TLS/SSL 流量检查,以及以下以项目列表列出的各使用场景中介绍的其他网络功能。
  • 入侵检测系统/入侵防御系统 (IDS/IPS)。基于网络的 IDS 要求了解所有潜在的恶意流量。为防止入侵,流量路径中的 IPS 通常会直接阻止流量。
  • 透明代理。透明代理通常用于监控 HTTP(S) 流量并对 Web 访问实施限制。
  • 网络地址转换 (NAT) 网关。NAT 网关会转换 IP 地址和端口。这有诸多好处,例如避免 IP 地址重叠。Google Cloud 提供的 Cloud NAT 是一项代管式服务,但此服务仅适用于流向互联网的流量,不适用于本地流量或 Google Cloud 上的其他 VPC 网络。
  • Web 应用防火墙 (WAF)。WAF 可阻止流向 Web 应用的恶意 HTTP 流量。Google Cloud 通过 Google Cloud Armor 安全政策提供 WAF 功能。具体的功能会因 WAF 供应商而异,因此请务必准确地确定您需要什么功能。

典型要求

通过集中式虚拟设备路由流量的要求因具体用例而异。但是,以下要求是通用的:

  • 不同网段之间的所有流量(例如,由不同团队管理的环境、具有不同的安全要求或位于应用的不同模块)必须通过集中式虚拟设备传递。
  • 互联网与安全环境之间的所有流量必须通过集中式虚拟设备传递。
  • 通过 Cloud VPN专用互连合作伙伴互连连接到 Google Cloud 的本地系统的所有传入和传出流量必须通过集中式虚拟设备传递。
  • 以主动/主动或主动/被动模式设置多个集中式虚拟设备,以获得高可用性配置。如果其中一个虚拟化设备上发生任何软件或硬件问题,则会自动进行故障转移。
  • 以有状态方式路由所有流量,从而使两个虚拟机之间的流量始终由同一个虚拟设备传递。
  • 集中式虚拟设备系统的吞吐量可通过以下两个选项之一进行扩容:
    • 纵向扩容虚拟设备:增加每个虚拟机的核心数量或内存量。
    • 横向扩容虚拟设备:增加用于分配流量的虚拟设备的数量。

架构选项

您可以通过多种方式在虚拟设备之间实现高可用性。也可以通过多种方式将网段连接到虚拟设备。

您可以将任何高可用性选项与任何连接网段的选项结合使用。本文档稍后介绍的一个常见方案是使用 VPC 网络对等互连和内部 TCP/UDP 负载平衡器作为下一个跃点的架构

选择高可用性选项

您可以通过以下两种方式使用多个实例来构建架构以实现中央设备的高可用性:

  • 使用内部 TCP/UDP 负载平衡器作为下一个跃点。在此方法中,您需要在内部 TCP/UDP 负载平衡器后面的代管实例组中放置多个虚拟设备。此负载平衡器用作默认路由的下一个跃点,该默认路由替换连接到设备的 VPC 网络中的默认路由。您可以在主动/主动配置(即标准配置)中使用设备,也可以通过采用内部 TCP/UDP 负载平衡故障转移,在主动/被动配置中使用设备。运行状况检查会将流量定向到运行状况良好的实例。如果您想要在失败时自动重新创建设备,可以使用自动修复。如果您的设备使用多个网络接口,则作为下一个跃点的内部 TCP/UDP 负载平衡器可以在任何网络接口上拥有后端。

    下图显示了使用内部 TCP/UDP 负载平衡器作为下一个跃点的拓扑。

    使用内部 TCP/UDP 负载平衡器作为下一个跃点的拓扑。

    上图显示了 VPC 网络中的一个代管式实例组,包括作为下一个跃点的内部 TCP/UDP 负载平衡器后面的多个虚拟设备。

  • 使用路由。在此方法中,Google Cloud 路由将流量从连接的 VPC 网络定向到虚拟设备。您可以通过使用不同优先级的路由,在主动/被动配置中使用设备;或者如果路由均配置为相同的优先级,在主动/主动配置中使用设备,在这种情况下,则使用等价多路径 (ECMP) 路由来分配流量。您可以使用自动修复来确保设备在运行状况不佳时重启。

    下图显示了使用路由的拓扑。

    使用路由的拓扑。

    上图显示了 VPC 网络中的代管式实例组,Google Cloud 路由将流量从连接的 VPC 网络定向到虚拟设备。

与使用 Google Cloud 路由相比,使用内部 TCP/UDP 负载平衡器作为下一个跃点在高可用性方面具有以下优势:

  • 运行状况检查决定流量的转发目标,这有助于确保流量仅转发到运行状况良好的实例。您可以公开运行状况检查,以便使本地实例或端到端路径通过验证。
  • 您可以微调运行状况检查计时器,从而加快故障转移的速度。在实例运行状况不佳时,此方法可提供最短的故障转移时间。
  • 利用对称哈希技术,您可以确保返回流量路由到与传出流量相同的虚拟机。

使用 Google Cloud 路由具有以下缺点:

  • 一致、对称的哈希处理可确保针对给定连接的数据包由同一后端虚拟机进行处理,从而用于请求和响应,具体取决于所选的协议和会话亲和性。选择的协议和会话亲和性可决定是否使用连接跟踪。请注意,后端实例中的源 NAT (SNAT) 配置可能会使某些用例受益:例如,如果从一个网络到另一个网络的响应连接应在这两个网络之间匹配同方向的单独请求连接。

使用 Google Cloud 路由具有以下缺点:

  • 运行状况检查会从实例池中删除并重新创建运行状况不佳的实例。但是,流量不会在运行状况检查失败后立即变化,因为删除运行状况不佳的实例并创建运行状况良好的新实例需要一些时间。这会导致故障转移时间变长。
  • 如果您设置运行状况检查计时器以避免不必要的实例删除和重新创建,则会导致故障转移时间变长。

无论您是使用内部 TCP/UDP 负载平衡器作为下一个跃点还是 Google Cloud 路由,都支持所有协议流量。如需详细了解此支持,请参阅 TCP、UDP 和其他协议流量的处理

类似地,这两种解决方案都支持将路由限制为特定网络标记。例如,可以按区域划分虚拟机实例,以使它们使用不同的设备。

选择连接网段的选项

由于子网之间的路由无法替换,因此需要使用不同的 VPC 网络来实现网段。这些 VPC 网络之间、流向本地环境以及流向互联网的流量需要通过集中式设备进行路由。请注意,所有这些网段都可以是独立的 VPC 网络或共享 VPC 网络

连接网段有如下几个选项:

  • 多个网络接口。通过虚拟设备连接多个 VPC 网络的最简单方法是使用多个网络接口,每个接口连接到一个 VPC 网络。通过一个或两个不同的网络接口提供互联网连接和本地连接。对于许多 NGFW 产品,互联网连接通过 NGFW 软件中标记为不受信任的接口进行连接。

    下图展示了此拓扑。

    使用多个网络接口通过虚拟设备连接的多个 VPC 网络的拓扑。

    上图显示了使用多个网络接口通过虚拟设备连接的多个 VPC 网络。每个接口连接到其中一个 VPC 网络。该图还显示了通过不同的网络接口建立的互联网连接和本地连接,包括通过不受信任的接口建立的互联网连接。

  • VPC 网络对等互连此拓扑使用中心辐射概念以及 VPC 网络对等互连。网段是以一组辐射 VPC 网络的形式实现的,这些网络使用 VPC 网络对等互连与一个中心 VPC 网络进行对等互连,流量通过一组集中式虚拟化设备进行路由。指向作为下一个跃点的内部 TCP/UDP 负载平衡器或直接指向虚拟设备的一个或多个默认路由作为自定义路由通过 VPC 网络对等互连导出。通过一个或两个单独的网络接口建立互联网和本地连接。

    下图展示了此拓扑。

    结合了多个网络接口与 VPC 网络对等互连的拓扑。

    上图显示了一组集中式虚拟化设备,多个网络接口连接到多个中心 VPC 网络。每个中心 VPC 网络通过 VPC 网络对等互连连接到多个 VPC 网络。任何两个 VPC 网络之间的流量都通过一组集中式虚拟化设备进行路由。

  • 结合使用多个网络接口和 VPC 网络对等互连。此方法会将前两个选项结合使用,以实现更高的可扩缩性。多个网络接口连接到多个中心 VPC 网络,每个中心 VPC 网络都通过 VPC 网络对等互连连接到多个辐射 VPC 网络。对于每个中心辐射型 VPC 网络,您可以使用 VPC 网络对等互连例子中描述的相同方法。

    下图展示了此拓扑。

    中心辐射方法与 VPC 网络对等互连相结合的拓扑。

    上图显示了通过 VPC 网络对等互连连接到多个 VPC 网络的中心 VPC 网络。流量通过一组集中式虚拟化设备进行路由,中心网络中有一个网络接口。

以下决策树可以帮助您确定连接网段的最佳方法。

选择连接网段的最佳方法的决策树。

使用多个网络接口(上述例子中的第一个方法)是最容易实现的方法。

但是,使用多个网络接口具有以下缺点:

  • 每个虚拟机实例最多可使用 8 个网络接口。如果您将一个网络接口用于互联网连接,一个用于本地连接,则只能在 Google Cloud 上连接 6 个网段。某些设备需要额外的管理界面,则您只能连接 5 个网段。
  • 实例创建后,您无法添加或移除网络接口。

使用 VPC 网络对等互连具有以下优势:

  • 您可以纵向扩展到单个 VPC 网络的 VPC 网络对等互连连接数上限。如果您对提高此限制有疑问,请与 Google Cloud 销售团队联系。
  • 通过设置 VPC 网络对等互连可以轻松地在此架构中添加或移除 VPC 网络。

但是,使用 VPC 网络对等互连具有以下缺点:

  • 这种方法比使用多个网络接口的方法稍微复杂一些。
  • 与组合方法相比,可以连接的 VPC 数量仍然受限。

使用组合方法(多个网络接口和 VPC 网络对等互连)具有以下优势:

  • 这是可扩容性最强的方法,因为其上限是网络接口数上限和 VPC 对等互连连接数上限的乘积。例如,您可以将 6 个中心 VPC 网络分别连接到单独的网络接口,每个接口连接 25 个辐射 VPC 网络。这样一来,一组虚拟设备最多可以传递 150 组 VPC 网络交换流量。

不过,此方法具有以下缺点:

  • 其实现方法最为复杂。

示例架构

以下是两个示例架构。第一个示例架构展示了如何使用内部 TCP/UDP 负载平衡器实现高可用性,同时使用 VPC 网络对等互连来连接网段。第二个示例架构是一个特殊用例,展示了如何将流量从 Google Cloud 上的单个共享 VPC 网络路由到本地环境以及互联网。

使用 VPC 网络对等互连和内部 TCP/UDP 负载平衡器作为下一个跃点的示例架构

此架构是企业环境的典型用例,使用内部 TCP/UDP 负载平衡器实现高可用性,同时使用 VPC 网络对等互连来连接网段。

下图展示了此架构的拓扑。

使用 VPC 网络对等互连和内部 TCP/UDP 负载平衡器作为下一个跃点的拓扑。

上图显示了一个中心 VPC 网络和使用 VPC 网络对等互连与中心 VPC 网络对等互连的多个辐射 VPC 网络。中心 VPC 网络在代管实例组(位于内部 TCP/UDP 负载平衡器后面)中有 2 个虚拟设备实例。静态默认路由指向作为下一个跃点的内部 TCP/UDP 负载平衡器。此静态默认路由使用自定义路由通过 VPC 网络对等互连导出。辐射 VPC 网络中到互联网网关的默认路由被删除。

您可以通过以下方式满足这些要求:

  • 通过防火墙自动路由辐射 VPC 网络之间的连接,因为 VPC 网络对等互连不具有传递性,因此辐射 VPC 网络之间无法直接交换数据。您可以配置虚拟设备以设置允许辐射 VPC 网络交换流量的条件和政策。
  • 只能通过虚拟设备建立到互联网的连接,因为到互联网网关的默认路由已从辐射 VPC 网络中移除。虚拟设备具有通过单独的网络接口的默认路由,该接口在使用 NGFW 的情况下可标记为不受信任。
  • 通过另外一个网络接口上的连接到虚拟设备的连接 VPC 网络来实现到本地网络的连接。Cloud VPN 或 Cloud Interconnect 连接以此连接 VPC 网络为终点。
  • 通过内部负载平衡器上的自定义运行状况检查实现高可用性。您可以通过使用内部 TCP/UDP 负载平衡故障转移将设备配置为主动/被动。这有助于确保流量始终流经单个虚拟设备。

如果不同 VPC 网络之间的通信为 TCP/UDP 或其他协议流量,则可以使用此示例架构。它可以扩容到每个 VPC 网络的 VPC 网络对等互连连接数上限。

如需查看使用 NAT 网关作为虚拟设备的此架构的实现示例,请参阅使用内部 TCP/UDP 负载平衡器作为下一个跃点来部署基于虚拟机的集中式设备。您可以使用前面用例部分所述的相同模式来部署其他虚拟设备。

使用 Google Cloud 上的一个共享 VPC 网络的特殊用例

在一种特殊的使用情形中,不同 VPC 网络之间的流量无需经过虚拟设备。只有来自单个共享 VPC 网络的流量会路由到本地环境和互联网。要实现此用例,您可以使用本文档之前介绍的任何高可用性选项,并为到共享 VPC 网络、本地网络和 Google Cloud 的连接分别使用一个网络接口。如果您希望在不通过集中式设备运行的情况下了解子网之间的流量,则数据包镜像可以提供帮助。

下图展示了此拓扑。

使用 Google Cloud 上的一个共享 VPC 网络的特殊用例的拓扑。

上图显示了来自单个共享 VPC 网络并通过虚拟设备池路由到本地网络和互联网的流量。

实现使用虚拟设备的架构

要实现使用虚拟设备的架构,请选择高可用性选项,并将其与连接网段的选项结合使用。

我们为下列选项组合提供了实现指南:

上述教程使用 NAT 网关作为设备的用例,但您可以通过其他任何用例来调整网关。

如果您想要从 Google Cloud 合作伙伴(例如 Cloud Marketplace)部署设备,请联系您的设备供应商,或者在供应商网站上搜索关于如何在 Google Cloud 上部署其设备的指南。

后续步骤