Example Systemd file for starting cloud sql proxy at system start
source link: https://gist.github.com/goodwill/a981c2912ae6a83761a624f657f34d9f
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Example Systemd file for starting cloud sql proxy at system start · GitHub
Instantly share code, notes, and snippets.
- We assume you already read this: https://cloud.google.com/sql/docs/mysql/connect-external-app#proxy and created a service account for Cloud SQL Client
- Download cloud_sql_proxy to
/usr/local/bin
- Make the following folders, all chown to
root:root
: /var/run/cloud-sql-proxy
/var/local/cloud-sql-proxy
- Copy downloaded credential json file inside
/var/local/cloud-sql-proxy
, make sure only root can read as it is credential for connection. - Copy above gist to
/lib/systemd/system/cloud-sql-proxy.service
- Run
systemctl daemon-reload
- Run
systemctl start cloud-sql-proxy
- Profit$$$$
This is cool thank you... but small typo in cloud-sql-proxy.service
-credential_file=/var/local/cloud_sql_proxy/<credential_json>.json
should be:
-credential_file=/var/local/cloud-sql-proxy/<credential_json>.json
For cloud sql proxy to auto-start:
$ sudo systemctl enable cloud-sql-proxy.service
For Centos 7, use the following:
[Install]
WantedBy=multi-user.target
[Unit]
Description=Google Cloud Compute Engine SQL Proxy
Requires=network.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/bin
ExecStart=/usr/local/bin/cloud_sql_proxy -dir=/var/run/cloud-sql-proxy -instances=<instance_connection_name>=tcp:3306 -credential_file=/var/local/cloud-sql-proxy/<credential_json>.json
Restart=always
StandardOutput=journal
If you find that /var/run/cloud-sql-proxy gets deleted on reboot - add this under line 10
RuntimeDirectory=cloud-sql-proxy
This works for RHEL8/Centos8
[Install]
WantedBy=multi-user.target
[Unit]
Description=Google Cloud Compute Engine SQL Proxy
Requires=network.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/bin
ExecStart=/usr/local/bin/cloud_sql_proxy -dir=/var/run/cloud-sql-proxy -instances=prod-modpress-prj:northamerica-northeast1:prod-modpress-inst=tcp:3306
Restart=always
StandardOutput=journal
User=root
For ubuntu 20.04 this should work:
[Install]
WantedBy=multi-user.target
[Unit]
Description=Google Cloud Compute Engine SQL Proxy
Requires=network.target
After=network.target
[Service]
Type=simple
WorkingDirectory=/usr/local/bin
ExecStart=/usr/local/bin/cloud_sql_proxy -dir=/var/run/cloud-sql-proxy -instances=<instance_connection_name>=tcp:3306 -credential_file=/var/local/cloud-sql-proxy/<credential_json>.json
Restart=always
StandardOutput=journal
User=root
I've found out that Google Cloud SQL proxy has watchdog support, even though I can't find this mentioned anywhere.
What this means is you can change Type=simple
to Type=notify
and add WatchdogSec=10
and then any time Google Cloud SQL proxy detects a connection error it will stop informing systemd that all is well and systemd will restart it.
This happens for example when Google Cloud SQL rotates SSL certificates. Which doesn't happen often, but it does happen every once in a while. Without using watchdog the service will just keep running but it can't connect anymore. With watchdog the service will be restarted and will reconnect using the new certificates.
Scratch that, it only notifies once started, it doesn't keep pinging to indicate it's still alive :(
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK