Используемые услуги:
проблема: Соединение прокси-сервера Google Cloud SQL закрыто до запуска сценария выключения Google.
Проблема вызвана: «Сервер MySQL ушел» и подобные сообщения об ошибках в PHP во время завершения работы.
После многих исследований выясняется, что во время завершения работы экземпляра соединение с базой данных, которое было запущено во время сценария запуска Google Cloud, отключается до запуска сценария завершения работы.
Я пытался изменить порядок systemctl услуги, но я не могу найти правильный порядок загрузки вещей.
Во время создания изображения этот контент вставляется в /lib/systemd/system/google-shutdown-scripts.service.d/bizzycloud.conf
[Unit]
After=apache2.service haproxy.service
Wants=apache2.service haproxy.service google-startup-scripts.service
Фрагмент скрипта запуска:
sudo /cloud_sql_proxy -dir=/cloudsql -instances_metadata /project/attributes/DB_Connections &
Отключение скрипта
echo "Shutting Down"curl "http://localhost/run/shutdowntest.php" # < This reports database errors
sudo /cloud_sql_proxy -dir=/cloudsql -instances_metadata /project/attributes/DB_Connections & # < Reconnect back to the database
curl "http://localhost/run/shutdowntest.php" # < This reports database is ok
Нет проблем с базой данных, когда серверы работают, но как только они начинают отключаться, мы начинаем замечать проблемы.
мой Google-выключение-scripts.service.d / bizzycloud.conf Файл, похоже, не меняет порядок сценариев запуска и завершения работы.
Это вполне может быть связано с аналогичными проблемами, с которыми люди сталкивались при случайных ошибках Cloud SQL во время «восстановления работоспособности» или при отключении серверов.
Может ли кто-нибудь помочь найти решение этой проблемы, поскольку наши настройки очень нестабильны, а серверы постоянно увеличиваются и уменьшаются, поэтому мы получаем множество таких ошибок.
Спасибо
Извините за публикацию моего собственного ответа, но это может быть кому-то полезно.
Поэтому вместо того, чтобы идти по пути попыток изменить порядок скриптов Google Startup и Shutdown, я пошел по пути создания собственного сервиса (с самого начала это звучало страшно).
Создан файл с именем /cloudsqlservice/cloudsql-startup.sh с содержанием
#!/bin/bash
echo "Starting up Google Cloud SQL"sudo /cloud_sql_proxy -dir=/cloudsql -instances_metadata /project/attributes/DB_Connections
Создал сервис systemd, создав файл с именем /lib/systemd/system/bizzycloud-sql.service
[Install]
WantedBy=multi-user.target
[Unit]
Description=Google Cloud Compute Engine SQL Proxy
After=networking.service
Before=google-shutdown-scripts.service
[Service]
Type=simple
WorkingDirectory=/cloudsqlservice
ExecStart=/cloudsqlservice/cloudsql-startup.sh
StandardOutput=journal
User=root
Замечания: Before=
: Хотя это выглядит так, как будто он говорит, что он должен запускаться до сценария завершения работы, на самом деле, во время завершения работы системы параметры До и После инвертируются, поэтому завершение работы этой службы должно выполняться после сценария завершения работы
Модифицировано из: запуск прокси как службы
sudo chmod 0644 /lib/systemd/system/bizzycloud-sql.service
sudo systemctl start bizzycloud-sql.service
Надеюсь, что это поможет всем, кто сталкивается с той же проблемой.
Других решений пока нет …