如何解决GCE 无法访问私有 SQL
我尝试从 GCE 实例访问 Cloud sql 实例,该实例是私有的并且具有私有服务连接。
根据私有服务访问文档,我设置了 VPC 和 FW,并在同一个 VPC 中创建 sql 和 GCE。 https://cloud.google.com/vpc/docs/configure-private-services-access
但是在 GCE 中,ping 到 sql 实例,也没有 sql 连接。
- 创建专有网络
gcloud 计算网络创建 test-custom-vpc --subnet-mode=custom --bgp-routing-mode=global --mtu=1460
- 创建子网
gcloud 计算网络子网创建 vpc-sb-1 --network=test-custom-vpc --range=10.100.0.0/16 --region=asia-northeast1
- 为专用服务连接创建 IP 范围
gcloud 计算地址创建 vpc-peering-range --global --purpose=VPC_PEERING
--addresses=192.168.0.0 --prefix-length=16 --description=description --network=test-custom-vpc
- 为 sql 创建 VPC 对等
gcloud services vpc-peerings connect --service=servicenetworking.googleapis.com --ranges=vpc-peering-range --network=test-custom-vpc --project=my-project
- 在 VPC 中创建 MysqL
gcloud --project=my-project beta sql 实例创建 vpc-sql-1 --network=test-custom-vpc --no-assign-ip
- 在 VPC 中创建 GCE 实例
gcloud 计算实例创建 vm-in-sb-1 --subnet vpc-sb-1 --zone asia-northeast1-b
- 创建 FW 规则,目前允许所有 IP/协议
gcloud compute firewall-rules create allow-all --network test-custom-vpc --direction ingress --action allow --rules all
然后,我将使用 ssh 访问 VM 并检查 VM 和 sql 之间的连接
gcloud sql 实例列表 名称 DATABASE_VERSION LOCATION TIER PRIMARY_ADDRESS PRIVATE_ADDRESS STATUS vpc-sql-1 MysqL_5_7 us-central1-b db-n1-standard-1 - 192.168.0.3 可运行
-> sql 私有 IP 为 192.168.0.3
- ssh 登录
gcloud beta 计算 ssh --zone "asia-northeast1-b" "vm-in-sb-1" --project "my-project"
- 检查连接
ping 192.168.0.3
没有反应
psql -h 192.168.0.3 -U postgres 罢工>
MysqL --host=192.168.0.3 --user=root --password
psql:无法连接到服务器:连接超时 服务器是否在主机“192.168.0.3”上运行并接受 端口 5432 上的 TCP/IP 连接?
我不知道什么配置有问题
解决方法
我复制了您的案例,所有配置都运行良好,但请注意,在步骤 #5 中使用下面的命令将为 Mysql 创建一个 Cloud SQL 实例,而不是用于 Postgres :
gcloud --project=my-project beta sql instances create vpc-sql-1 --network=test-custom-vpc --no-assign-ip
如果您想为 Postgres 创建 Cloud SQL 实例,请使用以下命令:
gcloud --project=my-project beta sql instances create vpc-sql-1 --database-version=POSTGRES_12 --cpu=2 --memory=7680MB --network=test-custom-vpc --no-assign-ip
问题是您使用 Postgres 数据库客户端连接到 Cloud SQL for Mysql。要正确连接,请使用以下示例:
以Mysql为例:
mysql --host=192.168.0.3 --user=root --password
对于 Postgres 示例:
psql -h 192.168.0.3 -U postgres
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。