google-app-engine - Google App Engine 应用程序和 Google Cloud Engine 实例之间的通信
问题描述
查看 GCE 实例,您可以看到 IP 地址有两种主要类型(内部一种和外部一种)。
现在,如果我有一个 Google App Engine 应用程序(flex env)和一个在 Google Compute Engine 实例中运行的后端。两个应用程序都在同一个 GCP 项目中运行。应用引擎应用程序是否可以使用其内部 IP 地址请求 GCE 后端应用程序?我猜想,在同一个项目中运行的应用程序也在同一个 VPC 中运行。
由于我使用的是 GAE flex env,我可以 ssh GAE 实例,并且通过对 GCE 实例的内部 IP 地址的 curl 请求,我得到了回复,但是当我尝试在应用程序中请求 GCE 后端时(axios例如请求)它不起作用,我没有得到任何数据,我可以在 GCE 实例中看到请求没有转发到服务器。
知道如何使用 GCE 实例的内部 IP 地址与在同一项目中运行的 GAE 应用程序进行通信吗?
解决方案
好吧,只是回答我自己的问题,经过大量尝试和搜索,与内部服务通信的最佳方式是创建一个内部负载均衡器(tcp),因为它没有意义(至少对于我的用例)连接到一个实例,毕竟我希望我的应用程序能够扩展。所以我做了什么,我在内部实例前面创建了一个 TCP 负载均衡器(它们无论如何都作为实例组运行),然后我得到一个静态内部 ip 并将其分配给内部负载均衡器,在 GAE 中使用该静态 ip 和它工作。
我根据实例组模板确保防火墙规则正确。最终一切都奏效了。
推荐阅读
- javascript - Bittrex v3 API - 无效签名响应
- kubernetes - 模板语言和掌舵
- c++ - 使用 C++ shared_ptr 用删除器包装 C 结构
- json - 将 JSON 实用程序从 Newtonsoft.Json 迁移到 System.Text.Json
- java - 使用现有的 try/catch 块或重复的 catch 块而不抛出异常
- r - 同一列变量之间的相关性
- java - 我的地图标记显示在不同的位置而不是当前位置
- android - 如何统一修复“无法加载 IL2CPP”错误?
- reactjs - 如何使用material-ui显示只读列表?
- javascript - 在下面的代码中,为什么 j 应该小于 i,为什么 j<=n 不起作用(第 4 行)?