【问题标题】:Google Compute Engine - Ubuntu - Shutdown - Cloud SQL Proxy Connection ClosedGoogle Compute Engine - Ubuntu - 关闭 - Cloud SQL 代理连接已关闭
【发布时间】:2017-11-11 05:53:39
【问题描述】:

使用的服务:

  • Google Compute Engine (GCE)(永远在线或抢占式)
  • Ubuntu 16.04 LTS
  • PHP
  • 谷歌云 SQL
  • 谷歌云 SQL 代理

问题:Google Cloud SQL 代理连接在 Google 关闭脚本启动之前关闭。

问题原因:“MySQL 服务器已消失”以及关闭期间 PHP 中的类似错误消息。

经过大量调查,似乎在关闭实例期间,在 Google Cloud Startup 脚本期间启动的数据库连接在 Shutdown Script 启动之前已关闭。

我已尝试更改 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-shutdown-scripts.service.d/bizzycloud.conf 文件似乎没有更改启动和关闭脚本的顺序。

这很可能与人们在“健康检查恢复”或服务器关闭期间遇到的随机 Cloud SQL 错误有关。

由于我们的设置非常不稳定,并且服务器一直在扩大和缩小规模,因此我们遇到了很多此类错误,因此是否有人能够帮助提出解决方案。

谢谢

【问题讨论】:

    标签: php mysql google-cloud-platform google-cloud-sql systemctl


    【解决方案1】:

    很抱歉发布我自己的答案,但这可能对某人有用。

    因此,我没有尝试更改 Google 启动和关闭脚本的顺序,而是选择创建自己的服务(一开始听起来很吓人)。

    使用内容创建了一个名为 /cloudsqlservice/cloudsql-startup.sh 的文件

    #!/bin/bash
    
    echo "Starting up Google Cloud SQL"
    sudo /cloud_sql_proxy -dir=/cloudsql -instances_metadata /project/attributes/DB_Connections
    

    通过创建名为 /lib/systemd/system/bizzycloud-sql.service

    的文件来创建 systemd 服务
    [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=:虽然这看起来是在告诉它在关机脚本之前运行,但实际上,在系统关机期间,前后设置是相反的,因此该服务的关机应该在关机后运行脚本

    修改自:running the proxy as a service

    sudo chmod 0644 /lib/systemd/system/bizzycloud-sql.service
    sudo systemctl start bizzycloud-sql.service
    

    希望这对遇到相同问题的其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-27
      • 2023-03-30
      • 2020-09-25
      相关资源
      最近更新 更多