mysql - google compute engine VM启动时自动启动gcloud sql proxy

标签 mysql google-compute-engine google-cloud-sql

我正在使用谷歌计算引擎,并且有一个自动缩放实例组,可以根据需要启动新的虚拟机,所有这些都位于负载均衡器后面。我也在同一个项目中使用谷歌的云 SQL。 VM 需要连接到云 SQL 实例。

由于虚拟机的 IP 是动态的,我不能只将 IP 插入 SQL 访问配置,所以我遵循了 cloud sql proxy设置以及这个非常相似的问题的注释: How to connect from a pool of Google Compute Engine instances to Cloud SQL DB in the same project?

我现在可以登录到单个测试虚拟机并运行:

./cloud_sql_proxy -instances=PROJ_NAME:TIMEZONE:SQL_NAME=tcp:3306

一切正常,VM 连接到云 SQL 实例。

下一步是我遇到问题的地方。我如何设置 VM,以便它在从实例模板构建或刚刚重新启动时自动启动代理。显而易见的答案似乎是将上述内容推送到 VM 的启动脚本中,但这似乎不起作用。因此,对于我的单个测试 VM,我可以通过 SSH 连接到 VM 并手动运行 cloud_sql_proxy 命令,一切正常。如果我随后在我的启动脚本中包含以下内容并重新启动它不连接的 VM:

#! /bin/bash
./cloud_sql_proxy -instances=PROJ_NAME:TIMEZONE:SQL_NAME=tcp:3306

有什么建议吗?我真的不敢相信从同一个项目中的 VM 连接到 SQL 云有这么难...

最佳答案

你显示的启动脚本没有显示cloud_sql_proxy的下载步骤。

您需要先下载然后启动代理。因此,您的启动脚本应该如下所示:

sudo wget https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64
sudo mv cloud_sql_proxy.linux.amd64 cloud_sql_proxy
sudo chmod +x cloud_sql_proxy
sudo ./cloud_sql_proxy -instances=PROJ_NAME:TIMEZONE:SQL_NAME=tcp:3306 &

关于mysql - google compute engine VM启动时自动启动gcloud sql proxy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39709984/

相关文章:

console - 如何访问 GCE 虚拟机实例的控制台?

google-cloud-platform - 如何以非交互式方式为 gcloud CLI 传递数据库的密码?

php - 配置 "beta_settings"中存在无法识别或未经允许的 key

mysql - 当我对 SQL UPDATE 语句使用 CASE 时,为什么会在数据库中输入 NULL 值?

python - 如何使用 SQLAlchemy 对 *count* 子查询求和?

google-compute-engine - HTTP 负载均衡器自定义错误页面

google-app-engine - Google Push-To-Deploy 管道 - 单元测试因模块导入错误而失败

google-app-engine - 在谷歌云 SQL 中更改全局隔离级别

MySQL错误: Could not execute MySQL-statement: Incorrect datetime value?

mysql - Spring批处理从xml文件读取并写入数据库。需要步骤 1 自动生成步骤 2 的 key