连接 Google App Engine 和 Google Compute Engine
Posted
技术标签:
【中文标题】连接 Google App Engine 和 Google Compute Engine【英文标题】:connect Google App Engine and Google Compute Engine 【发布时间】:2018-04-28 18:10:28 【问题描述】:我在 Googl Compute Engine 中创建了一个 VM 实例,并在 Google App Engine 标准环境中创建了应用程序。我计划将我的应用程序放在 App Engine 中,并将我的数据库服务器放在 Compute Engine 中。但是,我无法通过内部 IP 在两者之间进行连接。这可能吗?应用程序和数据库位于同一区域 (us-east1
) 但 IP 连接不起作用,只能使用外部 IP。显然,防火墙的规则是正确的。
【问题讨论】:
链接相关讨论:***.com/q/19155795/320399 【参考方案1】:截至April 9, 2019,您可以使用无服务器VPC connector。
这将允许您的 App Engine 应用程序连接到 Google Cloud Platform 上您的 VPC 网络中的其他内部资源,例如 Compute Engine VM 实例、Cloud Memorystore 实例和任何其他具有内部 IP 地址的资源。
创建连接器:
$ gcloud services enable vpcaccess.googleapis.com
$ gcloud beta compute networks vpc-access connectors create CONNECTOR_NAME \
--network VPC_NETWORK --region REGION --range IP_RANGE
$ gcloud beta compute networks vpc-access connectors describe CONNECTOR_NAME --region REGION
注意:您可以在Google Cloud Platform Console 中查看当前保留了哪些 IP 范围。您可以选择任何未使用的 CIDR /28 IP 范围以用于您的连接器,例如 10.8.0.0/28。
$ gcloud beta compute networks vpc-access connectors create my-vpc-connector \
--region=us-central1 --range=10.8.0.0/28
Create request issued for: [my-vpc-connector]
Waiting for operation [xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx] to complete...done.
Created connector [my-vpc-connector]
要将连接器连接到服务,请将其添加到服务的 app.yaml 文件中:
vpc_access_connector:
name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME"
部署服务:
$ gcloud beta app deploy
注意:要使用无服务器 VPC 访问,请确保您使用 gcloud 测试版来部署您的服务。您可以通过运行 gcloud components install beta 来访问 beta 命令。
部署服务后,它可以向Internal IP addresses 或DNS Names 发送请求,以便访问VPC Networks 中的资源。如果出现任何问题,请等待大约一小时或更长时间,让连接器在 GCP 全球网络中完全传播。
【讨论】:
【参考方案2】:要通过私有 IP 进行连接,您需要应用和数据库位于同一网络中。 您无法使用应用引擎标准来实现这一点,您需要应用引擎 flex(请参阅here 如何设置应用引擎 flex 实例的网络)
【讨论】:
您可以查看 Lorne Kliegerman(App Engine 产品经理)的回复 on this Google forum。 App Engine 标准部署和 Compute Engine 虚拟机实例之间通过内部 IP 地址的直接连接尚不可用。而且,是的,@Avinoam 的建议是正确的:您只能为 App Engine Flexible 配置网络。【参考方案3】:您必须使用 Compute Engine 实例上运行的服务的外部 IP 地址进行连接。 App Engine 标准环境与 Compute Engine 实例位于不同的网络上,并且目前彼此之间没有私有 IP 访问权限。如果相关成本合理,切换到灵活环境中的应用程序(或应用程序的服务)可能对您有用。
【讨论】:
以上是关于连接 Google App Engine 和 Google Compute Engine的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Google App Engine (Flex) Go 应用程序连接到 Google Cloud Postgres 实例
将许多 PropertyList 放入 Google App Engine 数据存储区(在 Go 中)并使用 Query.GetAll 再次加载它们
建立数据库连接时出错:Google App Engine Deploy