无法将Cloud Run实例连接至Google Memorystore Redis的排查求助
Cloud Run 无法通过 Serverless VPC Access 连接 Memorystore Redis 的排查方案
可能遗漏的配置步骤
- 连接器与Memorystore网络一致性:Serverless VPC Access连接器必须和Memorystore实例处于同一VPC网络(或共享VPC的同一网络)。若创建时未指定,可能出现连接器与Memorystore分属不同网络的情况,直接导致无法连通。
- 连接器IP范围冲突:默认连接器IP范围为
10.8.0.0/28,若Memorystore实例的IP恰好落在该网段内,会引发地址冲突。需调整连接器的IP范围至与Memorystore无重叠的私有网段。 - Cloud Run关联连接器的配置:部署Cloud Run时必须通过
--vpc-connector参数指定目标连接器,且需确保连接器状态为READY(而非PROVISIONING或ERROR)。 - Memorystore防火墙规则:若自定义了VPC防火墙规则,需确保规则允许连接器的IP段访问Memorystore的Redis端口(默认6379)。默认规则允许VPC内所有IP访问,但自定义规则可能覆盖该设置。
- Cloud Run服务账号权限:Cloud Run使用的服务账号需拥有
roles/vpcaccess.user权限,否则无法调用Serverless VPC Access连接器。默认服务账号可能未包含该权限,需手动添加。
简洁排查方法
- 检查连接器状态与网络:执行命令
gcloud compute networks vpc-access connectors describe [CONNECTOR_NAME] --region [REGION],确认state字段为READY,同时核对network字段与Memorystore实例的网络是否一致。 - 验证Cloud Run的连接器配置:执行命令
gcloud run services describe [SERVICE_NAME] --region [REGION],查看vpcConnector是否指向正确的连接器,vpcConnectorEgressSettings是否为PRIVATE_RANGES_ONLY(仅访问私有IP时)或ALL_TRAFFIC。 - 查看Cloud Run日志定位错误:在Cloud Run控制台查看服务日志,关注Redis连接相关的错误信息:
ECONNREFUSED:通常是端口未开放或Memorystore实例未正常运行;ETIMEDOUT:大概率是路由问题或连接器未正常工作。
- 验证服务账号权限:执行命令
gcloud projects get-iam-policy [PROJECT_ID] --flatten="bindings[].members" --filter="bindings.members:serviceAccount:[CLOUD_RUN_SERVICE_ACCOUNT]" --format="value(bindings.role)",检查是否包含roles/vpcaccess.user。
内容的提问来源于stack exchange,提问作者Nadie Quintero
相关产品推荐
相关产品推荐

