在 Google Compute Engine(GCE) 部署資料庫,降低 GCP 開銷!
前言
GCP提供了 Cloud SQL 做為雲端資料庫,非常的方便、易用
開發者不必煩惱硬體層,可以將心力專注在服務開發上
但方便總是有代價的,每個月的帳單會告訴你代價有多少
若只是一個微小專案或著展示用的 Side Project,就會希望將開銷降至最低了!
本篇以 Postgresql 為例,並使用 Docker container,以最快速、簡單的方式將資料庫安裝至 GCE 裡!
前置說明
從Google Cloud 免費計畫(依網站為主)
截至發文時間(2022/08/31),可使用以下規格建立免費方案的VM
故後面截圖範例將以下列規格建立
- 奧勒岡州:
us-west1
< 地理位置離台灣最近,故選美西 - 30 GB 以內的標準永久磁碟
e2-micro
VM- PostgreSQL
1. 啟用 GCE、建立 VM
- 進入 GCE 頁面
- 點擊上面的
建立執行個體(CREAT INSTANCE)
- 依 free tier 方案設定區域
奧勒岡州
、機器e2-micro
2. 設定 postgresql Docker Container
2.1 尋找想使用的資料庫容器
- 至marketplace搜尋想使用的資料庫
- 此處以 postgres 為例 (目前最新版為14)
- 搜尋到指定版本、進入頁面後
- 點擊右下角的
存放區路徑
,接著複製完整的映象檔名稱
2.2 在 GCE 裡設定容器(CONTAINER)
- 回到 GCP 頁面
- 至
容器區塊
,點擊DEPLOY CONTAINER
- 貼上前面複製的容器位置
- 設定環境變數,增加
POSTGRES_DB
、POSTGRES_PASSWORD
,輸入想要的資料庫名與密碼。預設登入帳號是postgres
- 重要! 磁碟區掛接,要將容器裡的資料掛載出來。否則當VM重啟、暫停,資料會消失!
掛載路徑
是 CONTAINER 裡 DB的路徑主機路徑
是 VM OS裡的路徑
2.3 設定開機磁碟為標準永久磁碟
- 目前免費計畫是
30 GB 以內的標準永久磁碟
,但容器(CONTAINER)預設帶出來的是新的已平衡永久磁碟
,要點開來更改 - 版本則照容器(CONTAINER)帶出來的,選一樣即可。以我的為例,即
Container-optimized OS 97-16919.103.33 LTS
- 容量在 30 GB 以內即可,依自身需求調整
2.4 防火牆、安全性
- 防火牆的允許 HTTP流量、HTTPS流量 (不勾也無妨)
- 安全性可以都先勾起來
2.5 建立 VM
都設定完成後,拉到最下面建立
可以看到文字這個 VM 執行個體將會耗用免費試用額度
確定真的有使用FREE-TIER
接著按下建立
3. 增加防火牆路由、並套用在 VM 上
3.1 增加防火牆路由
- 於上方搜尋防火牆,進入功能頁面
- 左側選到
防火牆
,點擊上方建立防火牆規則
- 名稱:
allow-postgres
(或任何你想要的名字都可) - 目標標記(Target tags):
allow-postgres
- 來源IPv4範圍(Source IP ranges):
0.0.0.0/0
- 指定的通訊協定和埠(Specific protocols and ports): 勾選TCP,輸入
5432
- 點擊
建立
3.2 套用在 VM 上
- 回到 GCE 功能頁面
- 點擊剛剛建立的 VM,由名稱可點進
詳細資訊
- 點擊上方的
編輯
- 在
網路標記
(Target tags)增加剛剛建立的allow-postgres
- 按儲存
4. 使用資料庫工具連線測試 & 轉移資料
到這裡就算設定完成了!
可以直接使用資料庫工具(如DBeaver)或任何您熟悉的工具
輸入外部 IP 測試連線!
5. 建立一筆測試資料、重啟 VM
若是現有服務轉移,在真的移轉資料之前,先建立一些測試資料
重啟 VM,以確認資料真的有保存到VM上!
之後就可以將資料轉移進來、或建立 TABLE 了!
結論
免費方案的 GCE DB,相當於自己灌 DB 在 Server 上
自然是沒有像 Cloud SQL 那麼方便,可以點一點就直接擴增容量、提高效能、自動備份…等
經費是首要考量的小 Side Project,不失為一個方便的作法
若 DB 資料有其重要性,要記得在應用服務跑夜間批次作業定期備份出來
看是可以備在自己的 NAS 或著資料量不大的話,寫在 Google Sheet,亦不失為一種簡易的異地備援!