GCP Automatic Snapshots

Google Cloud Platform 自動快照腳本

Written by

Google Cloud Platform VM 快照功能,可以很容易的恢復一個 VM 執行個體,簡單來說,萬一你的 VM 主機崩潰救不回來了,這時可以使用「快照」來復原你的 VM 主機。

所以,快照也算是一個備份工具,詳細說明請參照 Creating Persistent Disk Snapshots 文檔。

https://cloud.google.com/compute/docs/disks/create-snapshots

目前這個快照功能,還是需要手動執行,非常不方便,如果太忙忘記做快照,主機的風險就會變大。既然可以拿來當作是一個備份主機的用途,當然是能自動製作快照是最好了。

執行自動快照腳本,先決條件是你的 VM 有足夠的權限,Compute Engine 這個功能必須是開啟的。

Snapshots 快照功能,讓您的 GCP 主機更有保障

所以當一開始建立一個 VM 個體時,「身分及 API 存取權」這一項目,建議選取「允許所有 Cloud API 的完整存取權」,如下圖:

Google Cloud Platform Disk Snapshots

進入 SSH 執行下面指令:

cd ~
wget https://raw.githubusercontent.com/jacksegal/google-compute-snapshot/master/gcloud-snapshot.sh
chmod +x gcloud-snapshot.sh
sudo mkdir -p /opt/google-compute-snapshot
sudo mv gcloud-snapshot.sh /opt/google-compute-snapshot/

手動測試執行一次快照製作:

sudo /opt/google-compute-snapshot/gcloud-snapshot.sh

你轉到網頁,可以看到快照已經開始工作了。

Google Cloud Platform Disk Snapshots

執行計畫腳本,每天 5 點開始執行快照:

crontab -e
0 5 * * * root /opt/google-compute-snapshot/gcloud-snapshot.sh >> /var/log/cron/snapshot.log 2>&1

EasyEngine 系統,請改成下面的指令

crontab -e
0 5 * * * sudo /opt/google-compute-snapshot/gcloud-snapshot.sh >> /var/log/cron/snapshot.log 2>&1

執行完快照程序後,並會產生一個 snapshot.log 日誌文件,用下面的方式來管理日誌:

sudo mkdir /var/log/cron 
sudo touch /var/log/cron/snapshot.log
sudo chgrp adm /var/log/cron/snapshot.log
sudo chmod 664 /var/log/cron/snapshot.log

管理日誌文件,不要讓它變得太大:

sudo nano /etc/logrotate.d/cron

修改 cron 將下面的指令加進去

/var/log/cron/*.log {
    daily
    missingok
    rotate 14
    compress
    notifempty
    create 664 root adm
    sharedscripts
}

這個自動腳本,可保存 7 日的快照,會自動將過期的快照刪除。

腳本內容,可參考這一篇:

https://github.com/jacksegal/google-compute-snapshot/issues/1

參考文件:

https://github.com/jacksegal/google-compute-snapshot

2019/04/29 補充說明:
今年 2 月 GCP 推出了「快照排程」的功能,用來自動排程對磁碟機建立快照,以達到備份的目的,頻率分為「每小時、每天、每週」,還能設定自動刪除舊的快照。

Compute Engine 永久磁盤的計劃快照介紹:

https://cloud.google.com/blog/products/compute/introducing-scheduled-snapshots-for-compute-engine-persistent-disk

hosted by kinsta

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance