我在Google App Engine标准环境中的Googl Compute Engine和app中创建了一个VM实例。我打算在App Engine中使用我的应用程序,在计算引擎中使用我的数据库服务器。但是,我无法通过内部IP连接两者。这可能吗? app和db位于同一区域(us-east1
),但IP连接不起作用,只能使用外部IP。显然,防火墙规则是正确的。
答案 0 :(得分:3)
要通过专用IP进行连接,您需要应用和数据库位于同一网络中。 您无法通过应用引擎标准实现这一点,您需要app engine flex(请参阅here如何设置应用引擎Flex实例的网络)
答案 1 :(得分:2)
从April 9, 2019开始,您可以使用无服务器的VPC connector。
这将使您的App Engine应用程序可以连接到Google Cloud Platform上VPC网络中的其他内部资源,例如Compute Engine VM实例,Cloud Memorystore实例以及具有内部IP地址的任何其他资源< / strong>。
要创建连接器:
$ 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 beta部署服务。您可以通过运行 gcloud组件安装beta 来访问Beta命令。
部署服务后,它可以将请求发送到Internal IP addresses或DNS Names,以便访问VPC Networks中的资源。万一遇到任何麻烦,请等待大约一小时或更长时间,以使连接器在GCP全球网络中完全传播。
答案 2 :(得分:1)
您必须使用Compute Engine实例上运行的服务的外部IP地址进行连接。 App Engine标准环境与计算引擎实例位于不同的网络上,并且当前没有彼此的私有IP访问权限。如果相关成本合理,则可以在灵活环境中切换到应用程序(或应用程序服务)。