在 Dataproc 上安装云 SQL 代理
Installing Cloud SQL Proxy on Dataproc
我正在尝试在 Dataproc 集群上安装云 MySQL 代理,并以初始化操作为例 here。我删除了所有配置单元元数据部分,因为我不需要它。代理已安装,但我无法连接到我的实例。创建的 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
而不是使用元数据密钥来使其工作,但我想知道为什么它不能像示例中提供的那样工作。
云 SQL 代理解释标志的方式与 get_metadata_value 解释其输入的方式存在细微差别。
使用get_metadata_value时,假定要读取的属性是相对于
http://metadata.google.internal/computeMetadata/v1/instance/
而在云 SQL 代理的情况下,所有路径都应相对于:
http://metadata.google.internal/computeMetadata/v1/
因此,如果您打算让云 SQL 代理读取实例元数据,请传入:
-instances_metadata=instance/attributes/additional-cloud-sql-instances
我正在尝试在 Dataproc 集群上安装云 MySQL 代理,并以初始化操作为例 here。我删除了所有配置单元元数据部分,因为我不需要它。代理已安装,但我无法连接到我的实例。创建的 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
而不是使用元数据密钥来使其工作,但我想知道为什么它不能像示例中提供的那样工作。
云 SQL 代理解释标志的方式与 get_metadata_value 解释其输入的方式存在细微差别。
使用get_metadata_value时,假定要读取的属性是相对于
http://metadata.google.internal/computeMetadata/v1/instance/
而在云 SQL 代理的情况下,所有路径都应相对于:
http://metadata.google.internal/computeMetadata/v1/
因此,如果您打算让云 SQL 代理读取实例元数据,请传入:
-instances_metadata=instance/attributes/additional-cloud-sql-instances