我正在使用谷歌计算引擎,并拥有一个自动扩展实例组,可以根据需要旋转新的虚拟机,所有这些都位于负载均衡器后面。我也在同一个项目中使用谷歌的云端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云很难......
答案 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
。