创建Google Memorystore(Redis)后无法访问的技术求助
我之前也踩过Memorystore Redis连接的坑,给你整理几个实用的排查步骤,应该能定位到问题:
排查Google Memorystore Redis连接失败的核心步骤
1. 先确认网络归属与授权配置
- Memorystore Standard Redis实例是VPC内部服务,只有同VPC内的资源才能直接访问。首先检查你的计算实例和Redis实例是否在同一个VPC网络中——如果不在,直接连不上是正常的,得先调整实例网络或配置VPC peering。
- 重点看Redis实例的授权网络:在Memorystore控制台的实例详情页,找到「授权网络」列表,确保计算实例所在的子网IP段(或者整个VPC网络)已经被添加进去。这个白名单没配置的话,所有外部请求都会被直接拦截。
2. 验证防火墙规则是否放行Redis端口
- Redis默认用6379端口,检查VPC防火墙是否有允许入站流量到Redis实例IP+6379端口的规则,来源要设置为计算实例的子网范围。
- 同时检查计算实例自身的防火墙(如果有自定义iptables规则),是否允许出站到6379端口——有些实例会默认限制外部端口访问。
3. Cloud Shell访问的特殊处理
- Cloud Shell默认不在你的项目VPC里,直接telnet内部IP肯定失败。解决办法有两个:
- 搭建一个Serverless VPC Access连接器,把Cloud Shell接入到你的VPC网络;
- 在VPC里创建一个小型GCE实例当跳板,先
ssh到这个跳板实例,再从内部执行telnet 10.0.0.# 6379测试连接。
4. 基础连通性与实例状态检查
- 先确认Redis实例状态是RUNNING:控制台里如果显示PROVISIONING或MAINTENANCE,那暂时无法连接,等状态更新后再试。
- 在同VPC的计算实例里先做基础测试:
- 执行
ping 10.0.0.#,如果ping不通,说明网络层有问题(比如子网路由、防火墙拦截); - 如果ping通但
telnet 10.0.0.# 6379失败,大概率是端口被拦截,或者Redis实例开启了IP白名单但没加你的实例网段。
- 执行
5. 特殊场景排查
- 如果用的是Shared VPC,要确认Shared VPC管理员已经把Redis实例所在的项目添加到共享网络的允许列表中;
- 检查是否有Cloud NAT配置干扰内部通信?不过Memorystore是内部IP,一般NAT不影响,但如果计算实例依赖NAT网关,得确认路由表是否正确指向内部网络。
内容的提问来源于stack exchange,提问作者Ben Hall
相关产品推荐
相关产品推荐

