跨项目连接CloudSQL Postgres时Cloud SQL Proxy超时故障排查
解决跨VPC通过Cloud SQL Auth Proxy连接PostgreSQL超时问题
以下是针对你的问题的排查和解决步骤:
1. 核对Cloud SQL Auth Proxy启动参数
日志显示代理尝试连接10.35.144.3:3307,但PostgreSQL默认端口为5432,3307是MySQL的代理端口。检查你的启动命令是否正确指定了PostgreSQL的端口:
- 正确的启动命令示例:
./cloud_sql_proxy -instances=project-b:your-region:your-postgres-instance=tcp:5432 - 用
netstat -tulpn | grep 5432(或你指定的本地端口)确认代理是否在正常监听目标端口。
2. 验证Cloud SQL私网配置
- 确认Project-B中的Cloud SQL实例已启用私网IP,且所属网络为Project-B的默认VPC。
- 检查Cloud SQL实例的VPC网络访问控制,确保Project-A自定义VPC的CIDR段被添加到允许列表中(或设置为允许所有对等VPC访问)。
3. 检查VPC对等连接的路由配置
- 在Project-A的自定义VPC路由表中,确认存在指向Project-B默认VPC CIDR的路由,下一跳为已创建的VPC对等连接。
- 在Project-B的默认VPC路由表中,确认存在指向Project-A自定义VPC CIDR的路由,下一跳为同一对等连接。
- 排查是否有优先级更高的路由(如静态路由、VPN路由)覆盖了对等连接的路由规则。
4. 检查防火墙规则
- 在Project-B的默认VPC中,添加或更新防火墙规则:允许来自Project-A自定义VPC CIDR的流量访问Cloud SQL实例的5432端口(PostgreSQL默认端口)。
- 在Project-A的自定义VPC中,确保防火墙规则允许实例向外部(包括对等VPC)发起5432端口的出站请求。
5. 验证实例权限与代理版本
- 确认Project-A中运行代理的实例所使用的服务账号(或默认服务账号)拥有
roles/cloudsql.client角色,该角色允许访问Cloud SQL实例。 - 尝试更新Cloud SQL Auth Proxy到最新版本,旧版本可能存在兼容性问题。
6. 测试基础网络连通性
在Project-A的实例上执行以下命令,验证与Cloud SQL私网IP的连通性:
telnet 10.35.144.3 5432
如果连接失败,说明网络层面(路由、防火墙)存在问题,回到步骤3和4重新排查;如果连接成功,再检查代理的启动参数和权限配置。
内容的提问来源于stack exchange,提问作者Sharip Alikhanov
相关产品推荐
相关产品推荐

