Postgresql 为什么可以';t应用程序引擎连接到计算引擎VM实例?
我在GCP上有一个VM实例(e2micro)与postgres一起运行。我将自己的外部ip地址添加到Postgresql 为什么可以';t应用程序引擎连接到计算引擎VM实例?,postgresql,google-app-engine,google-cloud-platform,google-compute-engine,google-vpc,Postgresql,Google App Engine,Google Cloud Platform,Google Compute Engine,Google Vpc,我在GCP上有一个VM实例(e2micro)与postgres一起运行。我将自己的外部ip地址添加到pg_hba.conf中,以便连接到本地计算机上的数据库。接下来我有一个nodeJS应用程序,我想连接到那个数据库。在本地,应用程序可以连接到VM实例上的数据库。但是,当我将应用程序部署到GCP时,当我尝试访问浏览器中的页面时,会出现500服务器错误 以下是我已经做过/尝试过的事情: 创建防火墙规则以允许在我自己的外部ip地址上进行连接 创建了VPC连接器并将该连接器添加到myapp.yaml
pg_hba.conf
中,以便连接到本地计算机上的数据库。接下来我有一个nodeJS应用程序,我想连接到那个数据库。在本地,应用程序可以连接到VM实例上的数据库。但是,当我将应用程序部署到GCP时,当我尝试访问浏览器中的页面时,会出现500服务器错误
以下是我已经做过/尝试过的事情:
- 创建防火墙规则以允许在我自己的外部ip地址上进行连接
- 创建了VPC连接器并将该连接器添加到my
app.yaml
- 确保所有内容都在同一项目和地区(欧洲西部1)
如果我使用
0.0.0.0/0
允许VM实例上的所有ip地址,那么App Engine可以连接,所以我猜我在连接器上做错了什么?我使用10.8.0.0/28
作为ip范围,而VM实例的内部ip地址是10.132.0.2
,这是一个问题吗?我尝试了一个ip地址范围10.0.0.0
,但也不起作用。首先检查你的应用程序是否使用/28 ip地址范围():
创建连接器时,还可以为其指定IP范围。交通
通过连接器发送到您的VPC网络将源自
此范围内的地址。IP范围必须是符合以下条件的CIDR/28范围
您的VPC网络中尚未保留
创建VPC连接器时,还将创建一个适当的防火墙rulle以允许流量:
在VPC上创建优先级为1000的隐式防火墙规则
网络允许从连接器的IP范围进入所有
网络中的目的地
正如你自己写的,当你创建一个规则,允许来自它工作的任何IP的流量(你的应用程序可以连接)。因此-寻找允许应用程序所在IP范围流量的规则-如果不存在,则创建该规则
或者-你可以通过公共IP将你的应用程序连接到数据库-在这种情况下,你还必须创建一个适当的规则,允许从应用程序到数据库的流量
秒-检查应用程序使用的数据库的IP。
我的猜测是,你没有更改DB的IP(应用程序使用),它试图通过外部IP而不是VPC连接器进行连接,这就是为什么它不能(并且只有在创建防火墙规则时才起作用)。这个答案为我指出了正确的方向: 我需要使用部署我的应用程序
gcloud测试版应用程序部署
因为VPC连接器方法是测试版。此外,我试图连接到我的
app.yaml
中的外部IP,但那当然需要是内部IP。事实上,我试图连接到我的app.yaml中的外部IP地址,将其更改为我的内部IP地址。但我还需要使用gcloud beta app deploy部署,请参见下面的答案