GCE 无法访问私有 SQL
GCE cannot access private SQL
我尝试从 GCE 实例访问 Cloud SQL 实例,该实例是私有的并且具有私有服务连接。
按照私服访问文档,我设置了VPC和FW,并在同一个VPC中创建了SQL和GCE。
https://cloud.google.com/vpc/docs/configure-private-services-access
但在 GCE 中,ping 到 SQL 实例,sql 连接也不起作用。
- 创建 VPC
gcloud compute networks create test-custom-vpc --subnet-mode=custom --bgp-routing-mode=global --mtu=1460
- 创建子网
gcloud compute networks subnets create vpc-sb-1 --network=test-custom-vpc --range=10.100.0.0/16 --region=asia-northeast1
- 为私人服务连接创建IP范围
gcloud compute addresses create 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 instances create vpc-sql-1 --network=test-custom-vpc --no-assign-ip
- 在VPC中创建GCE实例
gcloud compute instances create vm-in-sb-1 --subnet vpc-sb-1 --zone asia-northeast1-b
- 创建防火墙规则,目前允许所有 IP/protocol
gcloud compute firewall-rules create allow-all --network test-custom-vpc --direction ingress --action allow --rules all
然后,我将使用 ssh 访问 VM 并检查 VM 与 SQL
之间的连接
gcloud sql instances list
NAME 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 RUNNABLE
-> SQL 私有 IP 是 192.168.0.3
- ssh 登录
gcloud beta compute 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”上的服务器 运行 是否接受
TCP/IP 端口 5432 上的连接?
我不知道什么配置有问题
我复制了你的案例,所有配置都运行良好,但请注意,在步骤#5中使用下面的命令将为[=创建一个云SQL实例24=]Mysql 不适用于 Postgres:
gcloud --project=my-project beta sql instances create vpc-sql-1 --network=test-custom-vpc --no-assign-ip
如果您想为 Postgres 创建云 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 数据库客户端连接到云 SQL for Mysql。要正确连接,请使用以下示例:
对于 Mysql 示例:
mysql --host=192.168.0.3 --user=root --password
对于 Postgres 示例:
psql -h 192.168.0.3 -U postgres
我尝试从 GCE 实例访问 Cloud SQL 实例,该实例是私有的并且具有私有服务连接。
按照私服访问文档,我设置了VPC和FW,并在同一个VPC中创建了SQL和GCE。 https://cloud.google.com/vpc/docs/configure-private-services-access
但在 GCE 中,ping 到 SQL 实例,sql 连接也不起作用。
- 创建 VPC
gcloud compute networks create test-custom-vpc --subnet-mode=custom --bgp-routing-mode=global --mtu=1460
- 创建子网
gcloud compute networks subnets create vpc-sb-1 --network=test-custom-vpc --range=10.100.0.0/16 --region=asia-northeast1
- 为私人服务连接创建IP范围
gcloud compute addresses create 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 instances create vpc-sql-1 --network=test-custom-vpc --no-assign-ip
- 在VPC中创建GCE实例
gcloud compute instances create vm-in-sb-1 --subnet vpc-sb-1 --zone asia-northeast1-b
- 创建防火墙规则,目前允许所有 IP/protocol
gcloud compute firewall-rules create allow-all --network test-custom-vpc --direction ingress --action allow --rules all
然后,我将使用 ssh 访问 VM 并检查 VM 与 SQL
之间的连接gcloud sql instances list NAME 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 RUNNABLE
-> SQL 私有 IP 是 192.168.0.3
- ssh 登录
gcloud beta compute 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”上的服务器 运行 是否接受 TCP/IP 端口 5432 上的连接?
我不知道什么配置有问题
我复制了你的案例,所有配置都运行良好,但请注意,在步骤#5中使用下面的命令将为[=创建一个云SQL实例24=]Mysql 不适用于 Postgres:
gcloud --project=my-project beta sql instances create vpc-sql-1 --network=test-custom-vpc --no-assign-ip
如果您想为 Postgres 创建云 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 数据库客户端连接到云 SQL for Mysql。要正确连接,请使用以下示例:
对于 Mysql 示例:
mysql --host=192.168.0.3 --user=root --password
对于 Postgres 示例:
psql -h 192.168.0.3 -U postgres