我们在办公室进行了讨论,无法得出结论。所以我在这里寻求一些建议。
我们有一个谷歌云SQL运行没有公共IP。来自不同应用程序引擎项目的谷歌应用程序引擎通过授权其服务帐户连接到此单一云SQL。
项目之间没有VPC设置。这些应用程序在谷歌应用程序引擎标准环境中。应用程序项目中未使用实例的专用IP。
项目之间的连接是使用中的教程进行的
https://cloud.google.com/sql/docs/mysql/connect-app-engine
将连接字符串创建为
mysql+pymysql://<db_user>:<db_pass>@/<db_name>?unix_socket=/cloudsql/<cloud_sql_instance_name>
问题是流量是如何从其他应用引擎项目流到此云SQL实例的?
连接握手是通过互联网(即谷歌网络之外(进行的,还是谷歌处理流量并在内部路由,而无需将请求发送到互联网?
如果有人能帮助回答这些问题,那将是一个很大的帮助。
这个问题的答案实际上取决于您使用的应用程序引擎的版本。
在旧版本的App Engine Standard上,/cloudsql/
unix套接字通过内部网络直接连接到您的实例。
在最新版本的App Engine Standard上,它使用云SQL代理的一个版本来验证您通过其公共IP与实例的连接。这就是为什么"从应用程序引擎连接"页面规定您的云SQL实例必须具有公共IP的原因。
如果您已将云SQL配置为使用私有IP地址,则使用VPC网络对等进行连接,并且您从Google应用程序引擎(运行在Google内部,VPC已连接(到托管云SQL(运行在单独的VPC网络上(的通信都是在Google内部使用VPC进行的。
关于这一点的详细信息可以在这里的文章中找到:
- 为Cloud SQL引入专用网络连接
- 专用IP(MySql(
- 配置私有IP连接(PostgreSQL(
从应用程序引擎标准到云SQL实例的连接是通过互联网建立的。App Engine和Cloud SQL之间有更多的内部服务,但默认情况下不会对实例的私有IP进行调用。
如果您查看连接器存储库的自述文件,您可以看到您可以使用几乎相同的方法从本地env连接到Cloud SQL实例。这可能是互联网上发生的事情的线索。