![GCP 資料庫服務 — 使用Terraform創建memory store — Redis](https://cdn-images-1.medium.com/max/800/1*6T04niauTTn8pmHnBgvigw.png)
1. Google 資料庫服務 — memory store的主要功能和用途
Google Cloud 的資料庫服務中,Memory Store 是一種受管式的記憶體資料庫服務,主要針對快速讀取和寫入的工作負載進行了優化。。以下是一些主要的功能和用途:
- 記憶體資料庫:Memorystore支援兩種資料庫引擎:Redis和Memcached,讓您可以根據應用程式和使用情境來選擇最適合的引擎,達到更高的效能和低延遲性。
- 完全托管的服務:Memorystore是完全托管的,這意味著您不需要管理任何伺服器或基礎架構。這樣可以大大減少您的維護成本和風險,同時提高您的開發效率和生產力。
- 快速和可擴展:由於Memorystore是基於記憶體的資料庫,因此它可以提供非常快速和低延遲的資料存取。此外,它還支援自動擴展,可以輕鬆地應對大流量的應用程式和工作負載。
- 高可用性和可靠性:Memorystore提供多個可用區域,以保證資料的高可用性和可靠性。它還提供了備份和還原功能,以防止資料丟失或損壞。
- 簡單易用:Memorystore易於設置和管理。您可以使用GCP控制台、命令列介面或API來操作Memorystore,並輕鬆地集成到您的應用程式中。
2.Google 資料庫服務 — memory store的使用情境
Google Cloud Platform 的資料庫服務 — memory store可在多種場景下使用,以下是一些常見的使用情境:
- 電子商務網站:在電子商務網站中,您需要存儲和緩存大量的產品和用戶資料,以提高網站的效能和用戶體驗。Memorystore可以提供快速和可擴展的資料存取能力,並且易於管理和維護。
- 多人遊戲:在多人遊戲中,您需要存儲和共享大量的遊戲狀性和玩家資料,以便在遊戲中快速且即時地呈現。Memorystore可以提供快速和可靠的記憶體資料庫解決方案,以支援遊戲中的高流量和低延遲性。
- 即時數據分析:在即時數據分析中,您需要快速地存儲和查詢大量的數據,以便在分析和決策過程中使用。Memorystore可以提供快速和可擴展的資料庫解決方案,並且支援常用的數據分析工具和平台。
- 醫療保健:在醫療保健領域中,您需要存儲和處理大量的病歷和醫療資料,以便提供高質量和高效率的醫療服務。Memorystore可以提供快速和可靠的記憶體資料庫解決方案,以支援醫療資料的存儲和查詢需求。
3. GCP 資料庫服務 — 使用Terraform創建memory store — redis
在這個章節中,我們將深入探討如何使用Terraform在Google Cloud Platform上創建redis。我們將依次進行以下步驟:
- 創建一個memory store 的 redis:這個步驟將確保我們有一個運行中的 Redis 服務,供後續的測試和連接使用。
- 創建一個用於redis forward的vm:這個 VM 將用於轉發 Redis 的連接。我們將設定 VM,使其能夠正確地轉發 Redis 請求。
- 使用ssh forward到個人電腦:使用 SSH Forward 將遠程 VM 上的 Redis 連接轉發到我們個人的電腦上。允許我們直接在本地測試和訪問 Redis 服務。
- 使用redis-gui來進行測試 (連結):介紹如何使用 Redis GUI 工具來測試我們創建的 Redis 服務。這將讓我們能夠輕鬆地查看、編輯和操作 Redis 中的資料。
- Terraform memory store 連結:可以到github參考對應的Terraform程式碼。
首先創建三個檔案,分別是 0-provider.tf, 1-variables.tf, 2-main.tf
0-provider.tf
##################################################################################
# CONFIGURATION
##################################################################################
terraform {
required_version = ">=1.0"
required_providers {
google = {
source = "hashicorp/google"
version = ">= 4.40.0"
}
}
}
provider "google" {
project = var.GCP_PROJECT
region = var.GCP_REGION
# zone = var.zone
}
這個檔案主要用於配置 Terraform 的提供者(provider),以確保 Terraform 可以正確地與 Google Cloud Platform(GCP)進行交互。
terraform
:這個區塊設定了 Terraform 的版本要求,確保使用的版本符合最低要求大於4.40.0版本。同時,它也定義了所需的提供者和版本。provider "google"
:這個區塊指定了要使用的 GCP 提供,指定了 GCP 專案 ID(由var.GCP_PROJECT
變數提供)。
1-variables.tf
variable "GCP_PROJECT" {
description = "GCP Project ID"
type = string
default = "terraform101-384507"
}
variable "GCP_REGION" {
type = string
default = "asia-northeast1"
}
variable "GCP_ZONE" {
type = string
default = "asia-northeast1-a"
}
variable "redis_name" {
type = string
default = "redis-tf-ch4-12-3"
}
這個檔案用於定義 Terraform 使用的變數,以實現更高度的可配置性和重用性。
variable "GCP_PROJECT"
:這是 GCP 專案 ID 的變數,它描述了 GCP 專案的 ID。它的預設值是 “terraform101-384507″,但可以在使用時指定不同的值。variable "GCP_REGION"
:這是定義網路服務所在位置(地區)的變數。variable "GCP_ZONE"
:這是定義網路服務所在位置(區域)的變數。variable "redis_name"
:這是用於定義 Google Cloud Redis 名稱的變數。
2-main.tf
##################################################################################
# RESOURCE
##################################################################################
resource "google_redis_instance" "cache" {
name = var.redis_name
display_name = "terraform 101 - ${var.redis_name}"
region = var.GCP_REGION
memory_size_gb = 1
tier = "BASIC"
redis_version = "REDIS_6_X"
persistence_config {
rdb_snapshot_period = "TWENTY_FOUR_HOURS"
}
}
這個檔案是主要的 Terraform 代碼,用於在 Google Cloud Platform 上創建一個 Redis 實例,讓我們逐一解釋這段代碼的意義:
resource "google_redis_instance" "cache"
:這行代碼定義了一個 Google Cloud Redis 實例的 Terraform 資源,這個資源會在代碼中被引用為cache
。name = var.redis_name
:這行指定了 Redis 實例的名稱,使用了一個變數redis_name
來命名。display_name = "terraform 101 - ${var.redis_name}"
:這行設定了 Redis 實例的顯示名稱,其中包含一個字串和變數redis_name
的組合。region = var.GCP_REGION
:這行指定了 Redis 實例所在的區域,使用了一個變數GCP_REGION
。memory_size_gb = 1
:這行指定了 Redis 實例的記憶體大小,此處為 1 GB。tier = "BASIC"
:這行指定了 Redis 實例的層級(或稱類型),這裡使用了基本層級。redis_version = "REDIS_6_X"
:這行指定了 Redis 的版本,此處為 Redis 6.x 版本。persistence_config
:這是一個區塊,用於設定持久性配置,即關於數據的持久性和備份。rdb_snapshot_period = "TWENTY_FOUR_HOURS"
:這行指定了 RDB 快照的備份週期,這裡設定為每 24 小時。
總之,這段代碼描述了如何使用 Google Cloud Provider 創建一個 Redis 實例。代碼中使用變數來設定名稱和區域,同時也指定了該實例的記憶體大小、版本、持久性配置等細節。
最後執行 terraform apply -auto-approve 來部署對應的資源到雲端架構上,就可以得到下列的結果。
terraform apply -auto-approve
![GCP 資料庫服務 — memory store redis](https://cdn-images-1.medium.com/max/800/1*Og7wOxtwsBa3U6k9_i_kjA.png)
Terraform tip:可以利用下列的 Terraform tip,來增進部署效率。
- 打開終端機中的 .bashrc or .zshrc 檔案
- 在文件最下方加入下列指令
- 執行 source ~/.zshrc 或是 source ~/.bashrc 讓下面的 alias 快捷鍵生效
alias tf="terraform"
alias tfv="terraform validate"
alias tfdp="terraform apply -auto-approve plan.out"
alias tfd="terraform apply -auto-approve"
alias tfr="terraform destroy -auto-approve"
alias tfp="terraform plan -out plan.out"
測試Redis連線:利用跳板機來連線Redis。
- 先記錄redis的內部ip,作為port fording遠方的連線ip
- 利用下方的cmd,更換成對應的專案、區域、虛擬機名稱、redis的內部ip
- 在terminal 執行ssh port forwding,並確認將遠方的reids port轉發到本地電腦上
- 下載安裝 Another Redis Desktop Manager ,開啟 Another Redis Desktop Manager 應用程式,並輸入下列資料:
Host: 127.0.0.1
port: 6379 預設
# gcloud compute ssh [VM名稱] --project [專案ID] --zone [區域] -- -L [本機端口]:[redis ip]]:[Redis端口]
gcloud compute ssh --zone "asia-northeast1-b" "redis-proxy" --project "terraform101-384507" -- -L 6379:10.12.243.27:6379
![memory store proxy VM (代理連線)](https://cdn-images-1.medium.com/max/800/1*NBridQjtXGBnx3g2d-K9BQ.png)
![memory store proxy VM — gcloud 指令(代理連線)](https://cdn-images-1.medium.com/max/800/1*e0ktgY1icUuP_hbi7x2I4A.png)
![memory store proxy VM — port forwarding](https://cdn-images-1.medium.com/max/800/1*dgFCWI3Oay9_jzlZHDT9-g.png)
![Another Redis Desktop Manager — 連線設定](https://cdn-images-1.medium.com/max/800/1*IatAdw1ou1vkyI_LB6bMEA.png)
![Another Redis Desktop Manager — 遠方Redis 連線成功](https://cdn-images-1.medium.com/max/800/1*k5nU-uuyZ1z6vKHMy8geeg.png)
課程連結
如果您覺得這篇文章對您有幫助,我誠摯地邀請您透過以下連結訂閱我的 Udemy 課程,進一步深入學習 Terraform 和 GCP 的知識:
![訂閱 Terraform 從零開始 — 10+實戰Lab打造GCP雲端自動化架構課程](https://cdn-images-1.medium.com/max/800/1*1e6Kj9yUjx6itnU2bEg_gw.png)