谷歌计算引擎虚拟机启动时自动启动gcloud sql代理

时间:2016-09-26 18:35:34

标签: 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?

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

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

并且一切运行良好,VM连接到云SQL实例。

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

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

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

2 个答案:

答案 0 :(得分:1)

您显示的启动脚本未显示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 &

答案 1 :(得分:-1)

我选择crontab在vm启动时自动运行cloud_sql_proxy。

$crontab -e

并添加 @reboot cloud_sql_proxy blah blah