2017-07-03 71 views
1

我试图在Dataproc集群上安装云MySQL代理,初始化操作的举例为here。我删除了所有的配置单元元数据部分,因为我不需要它。代理已安装,但无法连接到我的实例。创建的云-SQL proxy.service文件看起来不错:在Dataproc上安装云SQL代理

> 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而不是使用元数据密钥来实现此目的,但我想知道它为什么不能像示例中提供的那样工作。

回答

2

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

当使用get_metadata_value,假设读取属性是相对于

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

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

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

所以如果您的意图是让Cloud SQL代理读取实例元数据,请通过:

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

谢谢,与'PROXY_INSTANCES_FLAGS + =“-instances_metadata = instance/$ {ADDITIONAL_INSTANCES_KEY}”' – Nira