GCloud — подключение App Engine Flex к облачному SQL в другом проекте

#asp.net #google-app-engine #google-cloud-platform #google-cloud-sql

#asp.net #google-app-engine #google-облачная платформа #google-cloud-sql

Вопрос:

Я пытаюсь подключить свою службу App Engine flex к облачной базе данных sql, которая находится в общем проекте.

Я добавил пользователя App Engine по умолчанию и app Engine flex в качестве администратора SQL в общий проект.

Теперь я пытаюсь подключить контейнер app Engine к экземпляру cloud sql со следующей строкой подключения:

 "Server=cloudsql;Database=cliche;User Id=user;Password=password;"
  

Однако соединение всегда прерывается с заданной строкой подключения.

 [13:57:37 ERR] An error occurred using the connection to database 'cliche' on server 'cloudsql'.
[13:57:37 ERR] An exception occurred while iterating over the results of a query for context type 'IKL.Data.ApplicationDbContext'.
 Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 40 - Could not open a connection to SQL Server)
  

По запросу я предоставляю app.yaml здесь:

 runtime: aspnetcore
env: flex
service: platform
manual_scaling:
  instances: 1
resources:
  cpu: 2
  memory_gb: 1.5
  disk_size_gb: 10
beta_settings:
  cloud_sql_instances: shared-resources-291914:europe-west3:edutec-mssql=tcp:1433  
  

Комментарии:

1. Как вы настраиваете соединение Cloud SQL с App Engine Flex? В app.yaml? Можете ли вы поделиться своим app.yaml?

2. Я использую приложение yaml для настройки, извиняюсь за отсутствие деталей.

3. Есть ли у базы данных общедоступный IP-адрес? Или он развернут только на частном IP?

4. Он развернут на общедоступном ip

5. Можете ли вы также поделиться фрагментом кода, в котором вы настраиваете и подключаете свою базу данных?

Ответ №1:

Я нашел вашу проблему! Ваша строка подключения "Server=cloudsql;Database=cliche;User Id=user;Password=password;" неверна.

Прокси-сервер Cloud SQL открывает туннель. одна сторона туннеля — это экземпляр Cloud SQL, другая — ваш локальный экземпляр. Поэтому вам необходимо подключиться к локальному хосту

 "Server=127.0.0.1;Database=cliche;User Id=user;Password=password;"
  

Ответ №2:

Если вы используете пиринг VPC между вашим проектом App Engine Flex и вашим проектом Cloud SQL, то я должен сообщить вам, что это пока невозможно сделать, когда вы используете внутренний IP-адрес в своем Cloud SQL, он автоматически будет использовать пиринг VPC (отличный от того, который вы, вероятно, используете), и трафик между 3-мя пирингами VPC невозможен.

Вы можете использовать виртуальную машину в своем проекте Cloud SQL в качестве сервера NAT для маршрутизации трафика на облачный SQL, чтобы обойти эту проблему, или вы можете использовать облачную VPN между вашим App Engine и проектом Cloud SQL, если это возможно, пожалуйста, убедитесь, что виртуальная машина NAT находится в том же регионекак ваш облачный SQL-сервер или что VPN в вашем проекте SQL находится в том же регионе, что и ваш SQL server.

Кроме того, пожалуйста, имейте в виду, что вам понадобятся соответствующие правила брандмауэра GCP для всех задействованных проектов GCP.