问题描述
在使用 GCP Cloud Transfer Service 同步来自本地的数据时,遇到了连接代理(agents)到池(pool)的问题。用户按照官方文档提供的 gcloud/docker 命令安装了一个传输代理,但是代理无法连接到池。用户在代理容器的输出中看到如下信息:
0B/s txSum: 0B taskResps[copy:0 delete:0 list:0] ctrlMsgAge:10m50s
以及代理的 INFO 日志如下:
Build target: //cloud/transfer/online/onprem/workers/agent:agent
Build id: <some_id>
I1222 06:47:51.288924 3 log_spam.go:51] Command line arguments:
I1222 06:47:51.288926 3 log_spam.go:53] argv[0]: './agent'
I1222 06:47:51.288928 3 log_spam.go:53] argv[1]: '--project-id=<project_id>'
I1222 06:47:51.288930 3 log_spam.go:53] argv[2]: '--hostname=<hostname>'
I1222 06:47:51.288931 3 log_spam.go:53] argv[3]: '--agent-pool=source_agent_pool'
I1222 06:47:51.288933 3 log_spam.go:53] argv[4]: '--container-id=49be0b94bced'
...
用户还检查了所有的故障排除步骤,但是没有找到解决方法。在 GCP 日志仪表板中,用户找到了唯一相关的日志:
{
"protoPayload": {
"@type": "type.googleapis.com/google.cloud.audit.AuditLog",
"authenticationInfo": {
"principalEmail": "{my-email-id}",
"principalSubject": "user:{my-email-id}"
},
...
"serviceName": "pubsub.googleapis.com",
"methodName": "google.pubsub.v1.Subscriber.CreateSubscription",
...
"authorizationInfo": [
{
"resource": "projects/{my-project-id}/topics/destination_agent_pool-cloud-ingest-control",
"permission": "pubsub.topics.attachSubscription",
"granted": true,
"resourceAttributes": {}
}
],
...
},
...
}
解决方案
请注意以下操作可能因版本差异或网络环境而有所不同,建议在执行前备份重要数据。
步骤1:检查代理配置
首先,确保您的代理配置正确。比如,检查代理的 --project-id
和 --hostname
参数是否正确设置。这些参数应该与您的项目 ID 和主机名一致。
步骤2:检查代理连接池设置
代理需要连接到池才能正常工作。您可以在代理的配置中找到 --agent-pool
参数,确保它指向了正确的池。如果池的名称是 source_agent_pool
,那么这部分配置是正确的。
步骤3:检查代理容器网络设置
代理容器需要与 GCP 的服务通信。确保代理容器具有足够的网络权限,以便与 GCP 服务进行通信。您可以检查代理容器的网络设置,确保没有任何限制阻止了通信。
步骤4:检查代理日志和错误信息
查看代理容器的日志,特别是错误信息。代理容器的输出中提到了 0B/s
的传输速率,这可能意味着代理无法正常连接到池。检查代理的错误日志,找出是否有任何连接或授权问题。
步骤5:重新配置代理
如果以上步骤都无法解决问题,考虑尝试重新配置代理。您可以删除现有的代理容器并重新安装配置代理。确保在安装代理时,按照官方文档提供的命令和配置进行操作。
步骤6:联系 GCP 支持
如果您仍然无法解决问题,建议联系 GCP 支持团队寻求帮助。提供您的问题描述以及代理容器的日志和错误信息,让他们帮助您诊断问题并提供解决方案。
以上是解决 GCP Cloud Transfer Service 连接问题的一些建议步骤。如果问题仍然存在,建议根据您的具体情况进一步调查或寻求专业支持。