Соединению отказано в запуске экземпляра Google Cloud SQL через прокси или из App Engine

Я очень новичок в Google Cloud и запускаю приложения в целом. В настоящее время у меня есть приложение Django, работающее в контейнере Docker в Google Flexible App Engine, которое подключается к экземпляру Google Cloud SQL (PostgreSQL) в том же проекте. Последняя версия работает уже около 3 дней без проблем.

Эта проблема:

Сегодня я начал получать OperationalError: server closed the connection unexpectedly ошибки неоднократно из приложения. Я могу запустить Cloud SQL Proxy, и он запускается нормально (Ready for new connections), но если я пытаюсь соединиться с psql, я получаю сообщение об ошибке:

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

И прокси сообщает:

couldn't connect to "<instance_name>:us-central1:<instance_name>": 
dial tcp <ip address>:3307: connect: connection refused

На SSHing в мой работающий экземпляр приложения Flex и работает sudo docker logs <cloud proxy container>, последние строки, аналогично:

couldn't connect to "<instance_name>:us-central1:<instance_name>":
dial tcp <ip address>:3307: getsockopt: connection refused

Вещи, которые я пробовал / проверял

  • Перезапущенный облачный экземпляр sql. Сам экземпляр работает нормально, и я могу получить к нему доступ с помощью облачной оболочки из консоли.
  • Проверено имя экземпляра БД и IP-адрес - они совпадают.
  • Перезапустил экземпляр движка приложений Flex. Без изменений, насколько я могу судить.
  • Обновил мою локальную копию cloud_sql_proxy до версии 1.09.
  • Проверенные квоты - я, кажется, не достиг ни одного API или ограничений одновременного подключения.
  • Я могу подключиться к экземпляру sql, авторизовав свой локальный IP-адрес.
  • Я могу подключиться к другому (но очень похожему) экземпляру Google Cloud SQL, используя прокси локально, поэтому я не уверен, что прокси виноват.

Буду признателен за любую помощь, на данный момент у меня нет идей. Спасибо!

2 ответа

Это также может быть проблемой, если для экземпляра CloudSQL настроен только частный IP-адрес. За небольшой абзац, спрятанный в документации:

Прокси не предоставляет новый путь подключения; это зависит от существующего IP-соединения. Например, вы не можете использовать прокси-сервер для подключения к экземпляру с использованием частного IP, если прокси-сервер не использует сеть VPC, настроенную для доступа к частным сервисам.

В этом случае кажется, что единственным решением является добавление публичного IP-адреса на сервер.

Сначала я перезапустил экземпляр Cloud SQL. Это не помогло. Затем я просто нажал "Стоп" для экземпляра SQL и, как только он это сделал, нажал "Пуск", и теперь он работает. Это довольно случайно и раздражает.

В моем случае я обновил тип компьютера экземпляра SQL ранее в тот же день, и похоже, что при этом Google Cloud просто "перезапускает" экземпляр, где по мере необходимости "останавливается", а затем "запускается". Это всего лишь предположение.

tl; dr Остановите, а затем запустите облачный экземпляр SQL. Не перезапускайте как "Перезагрузка"!= "Стоп + Старт"

Надеюсь, это поможет другим, кто сталкивается с этой случайной проблемой.

В итоге мы "исправили" проблему, откатившись на более раннюю резервную копию. Служба поддержки Google отметила, что "проблема возникла непосредственно вокруг окна обслуживания вашего экземпляра Cloud SQL, поэтому возможно, что было внесено изменение, которое привело к разрыву соединения".

Другие вопросы по тегам