在Dataproc上安装Cloud SQL Proxy

时间:2017-07-03 10:25:09

标签: google-cloud-dataproc

我正在尝试在Dataproc集群上安装Cloud MySQL Proxy,并以初始化操作为例here。我删除了所有的hive-metadata部分,因为我不需要它。代理已安装,但我无法连接到我的实例。创建的cloud-sql-proxy.service文件看起来很好:

> cat /usr/lib/systemd/system/cloud-sql-proxy.service 
[Unit]
Description=Google Cloud SQL Proxy
After=local-fs.target network-online.target
After=google.service
Before=shutdown.target

[Service]
Type=simple
ExecStart=/usr/local/bin/cloud_sql_proxy   -dir=/var/run/cloud_sql_proxy    -instances_metadata=attributes/additional-cloud-sql-instances

[Install]
WantedBy=multi-user.target

另外,如果我尝试获取attributes/additional-cloud-sql-instances的值,它看起来很好:

> /usr/share/google/get_metadata_value attributes/additional-cloud-sql-instances
> myproject-12345:europe-west1:my-db-instance=tcp:3333

但我无法连接到实例。当我停止服务并再次启动它时,我看到一条错误消息:

> /usr/local/bin/cloud_sql_proxy -dir=/var/run/cloud_sql_proxy -instances_metadata=attributes/additional-cloud-sql-instances
2017/07/03 09:23:44 Ready for new connections
2017/07/03 09:23:44 Error on receiving new instances from metadata: metadata: GCE metadata "attributes/additional-cloud-sql-instances" not defined

我做错了吗? 与此同时,我可以使用-instances=myproject-12345:europe-west1:my-db-instance=tcp:3333而不是使用元数据键来实现此功能,但我想知道为什么它不能像示例中提供的那样工作。

1 个答案:

答案 0 :(得分:2)

Cloud SQL代理如何解释标志以及get_metadata_value如何解释其输入方面存在细微差别。

使用get_metadata_value时,假定要读取的属性相对于

http://metadata.google.internal/computeMetadata/v1/instance/

而在Cloud SQL代理的情况下,所有路径都应该相对于:

http://metadata.google.internal/computeMetadata/v1/

因此,如果您打算让Cloud SQL代理读取实例元数据,请传入:

-instances_metadata=instance/attributes/additional-cloud-sql-instances