【Google Cloud】Private Service Connect 托管式服务

简介

Private Service Connect 是什么

Private Service Connect 是 Google Cloud(原名 GCP)Virtual Private Cloud(VPC)的一项功能。

该功能主要用于以下两个场景:

  1. 使用私有 IP 访问 Google Cloud 的 API。
  2. 将用户自己的服务向其他 Google Cloud 项目公开。

前者主要是为了实现原本需要通过公共 IP 经由互联网访问的 Google Cloud 各种 API,现在可以通过私有 IP 进行连接。更多详细信息可以参考相关文章。

  • Private Service Connect 功能解说

后者是在本文中介绍的内容,即如何在 Google Cloud 上托管的服务(如 Web API 或其他服务)面向其他 Google Cloud 用户公司内部的不同 Google Cloud 项目进行公开。

AWS 平台中有一个类似的功能,名为 AWS PrivateLink。您可以将其视为 Google Cloud 平台中的相应功能。

通过 Private Service Connect 进行服务发布

如果你想在 Compute Engine 虚拟机等平台上,将服务面向其他 Google Cloud 项目或不同的 VPC 网络进行发布,可以考虑以下几种方法:

  1. 将服务端点对互联网公开(可利用外部 HTTP(S)负载均衡器等工具)。
  2. 使用 VPC 对等连接进行连接。
  3. 利用 Cloud VPN 在不同 VPC 之间建立连接。
  4. 通过 Private Service Connect 进行发布。

选项 1 是像普通 Web 服务一样向互联网公开服务的方法。然而,如果该服务只针对特定少数客户,则出于安全原因,此方法可能会被避免使用。

选项 2 和 3 涉及的是直接在 VPC 之间建立连接并通过私有 IP 进行通信。这种方法不会让不特定的大量客户直接访问你的服务,但前提是所有的 VPC 之间的 IP 地址段必须不重复。在跨越多个公司或政府部门的网络中,IP 地址段重叠的情况也较为常见。

因此,选项 4 即 Private Service Connect 成为了一个值得考虑的选择。

通过 Private Service Connect 进行服务发布,无需考虑 IP 地址段是否存在重叠的问题,就可以将服务面向其他 VPC 进行发布,并实现在私有网络中的连接。这种方法被称为 Private Service Connect 托管式服务

  • 参考:Private Service Connect 托管式服务

Private Service Connect 的架构

构成

Private Service Connect 的托管服务发布,将通过以下架构实现:

左侧是使用服务的一方(也称为服务使用方),右侧是提供服务的一方(也称为服务提供方)。

在这里插入图片描述

通信流程

通信将按照以下步骤实现:

前提条件:右侧的服务器通过 HTTP(tcp/80)端口提供服务,左侧的客户端将进行访问。

  1. 客户端访问 10.100.0.101:80(这是 Private Service Connect 端点)。
  2. 通信通过 Google Cloud 内部网络到达服务提供方环境的 Service Attachment,并在此过程中进行了 SNAT(源网络地址转换),然后到达内部负载均衡器。
  3. 内部负载均衡器对流量进行分发,最终将通信传递给后端服务器(响应数据则沿着相反的路径返回给客户端)。

详细构成

服务提供方

服务提供方通过组合使用“服务附件”、“内部负载均衡器”和“后端服务器”来提供服务。

服务附件 是一种用于发布服务的资源,每个服务创建一个服务附件。服务附件与“转发规则”绑定,后者可以视为负载均衡器的“前端”。这里的“转发规则”类似于前端接口的概念。

此外,创建服务附件需要专用子网。在创建子网时,必须明确选择“Private Service Connect 专用”。子网的大小可以根据实际需求进行设置,最小可以设置为 /29。但是需要注意,如果同时连接的客户端数量过多,可能会导致 IP 地址不足的问题(详情请参阅参考文献)。

内部负载均衡器 可以支持以下类型:

  • 内部路径穿透网络负载均衡器
  • 内部应用负载均衡器
  • 内部协议转换
  • 区域内部代理网络负载均衡器

作为后端服务器,可以使用内部负载均衡器支持的各种后端服务。例如,可以使用 Compute Engine 虚拟机(实例组)或通过 VPN/专线连接的本地服务器等。

服务使用方

当服务提供方创建服务附件时(projects/${PROJECT_ID}/regions/${REGION}/serviceAttachments/${SERVICE_NAME}),将会生成一个服务名称。服务使用方需要通过指定这个名称来创建连接至该服务的端点(Private Service Connect 端点)。

创建端点后,会分配一个私有 IP 地址。客户端可以使用此私有 IP 地址访问服务。

此外,服务提供方可以在创建服务附件时,设置仅接受明确批准的项目中的端点。未经批准的端点不会被转发数据包。

  • 更详细的说明是:Private Service Connect 端点实际上是一个“将服务附件作为目标的转发规则”,可以通过 gcloud compute forwarding-rules list 命令进行列表展示。转发规则也可以作为负载均衡器的前端资源使用。

连接源 IP 地址

有时,您可能会关心从流量的连接源 IP 地址在后端服务器上看起来是什么样子。通过 Private Service Connect 路由的流量源 IP 地址取决于所使用的负载均衡器类型。

  • 如果内部负载均衡器为代理模式,那么在后端服务器看来,连接源 IP 地址将是代理专用子网的 CIDR 范围
  • 如果内部负载均衡器为直通模式,则后端服务器看到的连接源 IP 地址将是服务专用子网的 CIDR 范围

无论哪种情况,客户端原始的 IP 地址都无法直接获得。如果想要获取原始 IP 地址,可以启用服务附件中的“代理协议”。启用时需注意以下事项:

  • 支持的负载均衡器类型仅限于“内部 TCP/UDP 负载均衡器(仅支持 TCP 通信)”和“内部协议转发”。
  • 需要在服务器端正确配置以处理代理协议头,否则请求无法正常处理。

即使启用了代理协议,也无法通过 VPC 防火墙等机制来引用这些信息进行基于连接源 IP 的访问 控制。更多详情请参考以下文档:

  • 参考资料:查看使用方连接信息

DNS 名称

还可以为端点设置 DNS 名称。

您可以使用服务目录功能在服务提供方定义 DNS 名称(DNS 配置),或者在服务使用方通过 Cloud DNS 手动定义 DNS 名称(手动配置)。

构建步骤

服务提供方的步骤

大致上,需要执行以下操作:

  1. 构建后端服务器。
  2. 构建内部负载均衡器(并创建适当的 VPC 防火墙规则)。
  3. 创建专用子网用于 Private Service Connect 服务。
  4. (如果是透传型负载均衡器)创建允许从专用子网进行通信的 VPC 防火墙规则。
  5. 创建服务附件。
  6. 添加审批项目。

详情请参考以下文档:

  • 参考:使用 Private Service Connect 发布服务

服务使用方操作步骤

客户端原则上只需要“创建端点”即可。

如果还需要进行 DNS 设置等其他操作,则会有额外的步骤,请参考以下文档以获取详细信息。

  • 参考:使用 Private Service Connect 访问托管服务

Private Service Connect 后端

可以使用一种称为 Private Service Connect 后端的方法(以前称为“使用消费者 HTTP(S) 控制的 Private Service Connect 端点”)。

在这种情况下,服务使用方可以将外部 HTTP(S) 负载均衡器作为终端节点来使用。通过将其作为“私有服务连接 NEG”(网络端点组)的后端服务来实现。

这种方法的优点包括:“可以灵活地将服务映射到任意 URL”、“可以使用 Cloud Logging 记录所有请求”、“可以使用任意 SSL/TLS 证书”、“可以逐步将服务迁移到由私有服务连接托管的服务”。

更多详细信息,请参阅以下文档:

  • 参考:Private Service Connect 后端简介
  • 参考:初次使用私有服务连接 #4 第七层 PSC 篇

Private Service Connect 接口

Private Service Connect 接口与 Private Service Connect 端点的作用相反,它是从服务提供方向服务使用方建立通信路径的功能。

在服务使用方的子网中创建一个名为网络附件(network attachment)的组件。该组件会分配一个内部 IP 地址,用于中转来自服务提供方的通信。

服务提供方的计算引擎虚拟机(Compute Engine VM)至少需要配备两个网卡(NIC),其中一个作为 Private Service Connect 接口,用于与服务使用方(即客户方)进行通信。一台虚拟机最多可以创建七个 Private Service Connect 接口。

关于此功能的详细信息,请参考以下官方指南。

  • 参考:Private Service Connect 接口简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/920776.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JDK、MAVEN与IDEA的安装与配置

1.认识JDK、MAVEN与IDEA JDK 提供了编译和运行Java程序的基本环境。Maven 帮助管理项目的构建和依赖。IDEA 提供了一个强大的开发环境,使得编写、调试和运行Java程序更加高效。 2. 安装与环境配置 2.1 官网地址 选择你需要的版本下载: MAVEN下载传送…

MySQL深入:B+树的演化、索引和索引结构

提示:内容是读《MySQL技术内幕:InnoDB存储引擎》,笔记摘要 文章目录 二叉查找树平衡二叉树(AVL) B树(BTree)B树(BTree)InnoDB B树索引索引结构(InnoDB B树)B树存放的数据量 二叉查找树 在二叉查找树中,左子…

FairGuard游戏加固实机演示

此前,FairGuard对市面上部分游戏遭遇破解的案例进行了详细分析,破解者会采用静态分析与动态调试相结合的手段,逆向分析出代码逻辑并对其进行篡改,实现作弊功能,甚至是对游戏资源文件进行篡改,从而制售外挂。…

聊一聊Elasticsearch的索引数据搜索过程

与向索引写入数据的时候必须是主分片来承担不同。搜索的时候,主分片和副本分片均可以承担,最终选用主分片还是副本分片是通过轮询的方式来进行选择的。 索引数据的搜索过程,依据有无路由值,分为两种:不带路由值的搜索…

视频修复技术和实时在线处理

什么是视频修复? 视频修复技术的目标是填补视频中的缺失部分,使视频内容连贯合理。这项技术在对象移除、视频修复和视频补全等领域有着广泛的应用。传统方法通常需要处理整个视频,导致处理速度慢,难以满足实时处理的需求。 技术发…

自动化运维-检测Linux服务器CPU、内存、负载、IO读写、机房带宽和服务器类型等信息脚本

前言:以上脚本为今年8月1号发布的,当时是没有任何问题,但现在脚本里网络速度测试py文件获取不了了,测速这块功能目前无法实现,后面我会抽时间来研究,大家如果有建议也可以分享下。 脚本内容: #…

C语言-11-18笔记

1.C语言数据类型 类型存储大小值范围char1 字节-128 到 127 或 0 到 255unsigned char1 字节0 到 255signed char1 字节-128 到 127int2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647unsigned int2 或 4 字节0 到 65,535 或 0 到 4,294,967,295short2 字节…

【HashMap篇】HashMap实现原理|put方法|扩容机制|寻址算法|1.7情况下的多线程死循环问题

目录 一、二叉树、红黑树、散列表简单介绍 1.二叉树 (1)什么是二叉树 (2)什么是二叉搜索树 2.红黑树 (1)什么是红黑树 3.散列表 (1)什么是散列表 (2)…

AI 大模型重塑软件开发的未来

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

idea 配置 leetcode插件 代码模版

开启自定义模版 codeFileName: $!velocityTool.camelCaseName(${question.titleSlug})Code Template: ${question.content} package leetcode.editor.cn; /*** ${question.title}* author lww* since $!velocityTool.date()*/ public class $!velocit…

微软Microsoft有许多耳熟能详的软件?

微软有许多耳熟能详的软件,以下是一些比较有代表性的: 一、软件类 操作系统: Windows 系列:这是微软最为著名且广泛使用的操作系统,如 Windows 10、Windows 11 等。它为全球绝大多数个人电脑提供了操作平台&#xff0c…

Confluence|Confluence报错:连接MySQL数据库失败

报错信息:Problem connecting to your database 解决方案: 增加一个mysql驱动jar包到容器内部 docker cp ./mysql-connector-java-8.0.19.jar confluence:/opt/atlassian/confluence/confluence/WEB-INF/lib/ 作者:Kkoo 链接:ht…

扣子(Coze):构建智能助手并嵌入个人网站的新选择

首发地址(欢迎大家访问):扣子(Coze):构建智能助手并嵌入个人网站的新选择 1. 前言 之前写了一篇关于使用 MaxKB 搭建个人知识库并集成到个人网站的博客; 整个技术路线我觉得还是很好的&#x…

LeetCode - #139 单词拆分

文章目录 前言摘要1. 描述2. 示例3. 答案题解动态规划的思路代码实现代码解析1. **将 wordDict 转换为 Set**2. **初始化 DP 数组**3. **状态转移方程**4. **返回结果** **测试用例**示例 1:示例 2:示例 3: 时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗…

SpringCloud篇(服务保护 - Sentinel)

目录 一、雪崩问题及解决方案 1. 雪崩问题 2. 解决方案 方案一:超时处理 方案二:仓壁模式 方案三:断路器模式 方案四:限流 3. 总结 二、服务保护技术对比 三、Sentinel介绍与安装 1. 初识Sentinel 2. Sentinel 优势 3…

MACOS开发、使用常见问题汇总

MACOS常见问题 本文记录使用macos遇到的常见问题,后面会持续更新,觉得有用的可以收藏一下。 打不开xxx.app,因为它来自身份不明的开发者解决方法(开启任何来源) 打开终端(Terminal)程序 拷贝sudo spctl --master-di…

网络安全之国际主流网络安全架构模型

目前,国际主流的网络安全架构模型主要有: ● 信息技术咨询公司Gartner的ASA(Adaptive Security Architecture自适应安全架构) ● 美国政府资助的非营利研究机构MITRE的ATT&CK(Adversarial Tactics Techniques &…

Linux下 GDB调试器的使用

文章目录 1. 可执行程序的Debug版和Release版区别一、编译选项与目的二、性能与体积三、功能与特性四、查看可执行文件 2. GDB 相关命令GDB常用命令 1. 可执行程序的Debug版和Release版区别 一、编译选项与目的 Debug版: 编译选项:通常使用包含调试信息…

RN开发搬砖经验之—Layout Inspector看不到 DecorView

最近我发现自己已经很久没有使用Layout Inspector这个工具了。今天,为了深入分析React Native(RN)框架中的一个UI问题,我需要查看RN组件对应的Android原生组件视图层级(View tree)的实际情况。因此&#xf…

go-zero(三) 数据库操作

go-zero 数据库操作 在本篇文章中,我们将实现一个用户注册和登录的服务。我们将为此构建一个简单而高效的 API,包括请求参数和响应参数的定义。 一、Mysql连接 1. 创建数据库和表 在 MySQL 中创建名为 test_zero的数据库,并创建user 表 …