【问题标题】:Connecting to Cloud SQL through deployed App Engine app (Different regions)通过已部署的 App Engine 应用连接到 Cloud SQL(不同区域)
【发布时间】:2016-11-17 02:50:25
【问题描述】:

我目前有一个已部署的 App Engine 应用程序(通过 Cloud SQL 授权)并且与我的 Cloud SQL 实例在同一个项目中。我正在使用 Python 和 Flask 并按照原始 Google 代码连接到 Cloud SQL。

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
    try:
        return MySQLdb.connect(
             unix_socket='/cloudsql/{}:{}'.format(
                 CLOUDSQL_PROJECT,
                 CLOUDSQL_INSTANCE),
             user='root',
             db='my_db'
             )
    except:
        stacktrace = traceback.format_exc()
        logging.error("%s", stacktrace)
        return False
else:
    try:
        return MySQLdb.connect(host='xxx.xxx.xx.xx', 
                               user='root',
                               db='my_db',
                               passwd='password',
                               port=3306)
    except:
        return False

在本地开发服务器上运行时一切正常,但部署后我无法连接到 Cloud SQL。这是我得到的错误:

OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")

我已多次检查 CLOUDSQL_PROJECT 和 CLOUDSQL_INSTANCE 这两个变量是否配置正确。 我也尝试过在不指定数据库的情况下进行连接,有/没有指定密码等等。 一个潜在的问题可能是我们的 App Engine 实例位于 us-central(待更改),而我们的 Cloud SQL 位于欧洲西部。我想知道这是否可能是问题的根源,因为我没有看到任何其他可能导致此错误的东西,或者我在其他地方犯了错误。

感谢您的宝贵时间和建议。
亚历克斯

【问题讨论】:

    标签: python google-app-engine flask google-cloud-sql


    【解决方案1】:

    根据https://cloud.google.com/sql/docs/app-engine-connect,GAE 应用需要与 Cloud SQL 实例位于同一区域。

    【讨论】:

    • 感谢您的快速回复!从那个页面我收集到这仅适用于 App Engine(标准环境)到第一代 Cloud SQL)。我忘了提到我们的是 App Engine(标准环境)到第二代 Cloud SQL(目前处于测试阶段),并且那里没有特定的区域信息。你认为这仍然是问题吗?
    • 虽然我认为它目前可能有效,但我不鼓励这种配置。将您的应用程序和数据库放在不同的区域将不会有很好的表现。
    • 我又花了几天的时间试图解决这个问题,但是我没有取得太大的成功,所以我认为无法连接 App Engine 应用和 Cloud SQL不同地区的实例。感谢您的帮助!
    • 您可以设置一个代理服务器,将流量从应用引擎区域引导到云 sql 区域,并且只能保留在内部。您也可以使用内部 ip 访问 mysql。我们在其中一个生产设置中使用这种设置,但我们在不同区域进行弹性搜索并通过私有 IP 空间访问,而不是云 sql。
    猜你喜欢
    • 2020-02-02
    • 2021-02-22
    • 1970-01-01
    • 2014-07-19
    • 2020-02-19
    • 2012-10-26
    • 2015-01-12
    • 2020-06-07
    • 1970-01-01
    相关资源
    最近更新 更多