Cloud Spanner กับ terform

1. ภาพรวม

อัปเดตล่าสุด: 23-07-2020

Cloud Spanner คืออะไร

Google Cloud Spanner เป็นฐานข้อมูลที่กระจายอยู่ทั่วโลกซึ่งเป็นไปตามข้อกำหนดของ ACID และจัดการสำเนา การแบ่งส่วน และการประมวลผลธุรกรรมโดยอัตโนมัติ คุณจึงปรับขนาดได้อย่างรวดเร็วเพื่อให้ตรงกับรูปแบบการใช้งานและรับประกันความสำเร็จของผลิตภัณฑ์

ฟีเจอร์หลัก

  • ฐานข้อมูลเชิงสัมพันธ์ที่สร้างขึ้นเพื่อการปรับขนาด: ทุกสิ่งที่คุณคาดหวังจากฐานข้อมูลเชิงสัมพันธ์ ไม่ว่าจะเป็นสคีมา คำค้นหา SQL และธุรกรรม ACID ได้รับการทดสอบอย่างเข้มงวดและพร้อมที่จะปรับขนาดทั่วโลก
  • ความพร้อมใช้งาน 99.999%: Cloud Spanner มีความพร้อมใช้งาน 99.999% ชั้นนำของอุตสาหกรรมสำหรับอินสแตนซ์แบบหลายภูมิภาค ซึ่งมีเวลาหยุดทำงานน้อยกว่า 4 หลัก 10 เท่า และมีการจำลองแบบพร้อมกันแบบโปร่งใสในการกำหนดค่าแบบภูมิภาคและแบบหลายภูมิภาค
  • การแบ่งข้อมูลอัตโนมัติ: Cloud Spanner เพิ่มประสิทธิภาพด้วยการแบ่งข้อมูลโดยอัตโนมัติตามภาระงานของคำขอและขนาดของข้อมูล ด้วยเหตุนี้ คุณจึงใช้เวลาในการกังวลเรื่องการปรับขนาดฐานข้อมูลน้อยลง และหันไปมุ่งเน้นที่การขยายธุรกิจแทน

ดูฟีเจอร์ทั้งหมด

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ผู้ให้บริการ Terraform ของ Google Cloud
  • การใช้ Terraform เพื่อสร้างอินสแตนซ์และฐานข้อมูล Cloud Spanner
  • การใช้ Terraform เพื่อแก้ไขทรัพยากร Cloud Spanner
  • การใช้ Terraform เพื่อลบทรัพยากร Cloud Spanner

2. การตั้งค่าและข้อกำหนด

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

หากยังไม่มีบัญชี Google (Gmail หรือ Google Apps) คุณต้องสร้างบัญชี ลงชื่อเข้าใช้คอนโซล Google Cloud Platform ( console.cloud.google.com) แล้วสร้างโปรเจ็กต์ใหม่โดยทำดังนี้

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนมีผู้ใช้แล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากรของ Google Cloud

การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป (ดูส่วน "การล้างข้อมูล" ที่ท้ายเอกสารนี้)

ผู้ใช้ใหม่ของ Google Cloud Platform มีสิทธิ์รับช่วงทดลองใช้ฟรีมูลค่า$300

การตรวจสอบสิทธิ์

หากยังไม่เคยติดตั้ง โปรดติดตั้งเครื่องมือบรรทัดคำสั่ง gcloud เมื่อติดตั้ง gcloud แล้ว ให้เปิดใช้งานข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันโดยเรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล

$ gcloud auth application-default login

Terraform

หากยังไม่ได้ติดตั้ง Terraform ก่อนหน้านี้ ให้ติดตั้ง Terraform

3. ผู้ให้บริการ Terraform ของ Google Cloud

ผู้ให้บริการ Terraform ของ Google Cloud มีทรัพยากร Cloud Spanner 4 รายการ ได้แก่

ในโค้ดแล็บนี้ เราจะสร้างและจัดการอินสแตนซ์และฐานข้อมูล Cloud Spanner

สภาพแวดล้อม

สร้างไดเรกทอรีใหม่สำหรับไฟล์การกำหนดค่า Terraform ในสภาพแวดล้อมการพัฒนา

$ mkdir ~/terraform-spanner
$ cd ~/terraform-spanner

จากนั้นสร้างไฟล์ชื่อ "main.tf" ที่มีเนื้อหาต่อไปนี้ และแทนที่ PROJECT_ID ด้วยรหัสโปรเจ็กต์ Google Cloud ของคุณเอง

$ cat >> main.tf <<'EOF'
provider "google" {
  project = "PROJECT_ID"
}
EOF

ในส่วนที่เหลือของโค้ดแล็บนี้ เราจะแก้ไขไฟล์นี้และใช้การเปลี่ยนแปลง

4. การสร้างอินสแตนซ์และฐานข้อมูล

แก้ไข main.tf ด้วยเนื้อหาต่อไปนี้เพื่อเพิ่มอินสแตนซ์ Cloud Spanner ใหม่

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

เรียกใช้คำสั่งต่อไปนี้เพื่อใช้การเปลี่ยนแปลง

$ terraform apply
# ...
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes
# ...
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

หลังจากใช้การเปลี่ยนแปลงแล้ว คุณจะเห็นอินสแตนซ์ใน Google Cloud Console โปรดทราบว่าคุณจะแก้ไขการกำหนดค่าระดับภูมิภาคไม่ได้หลังจากสร้างอินสแตนซ์แล้ว

48b67416982fa152.png

หลังจากสร้างอินสแตนซ์แล้ว เราจะสร้างฐานข้อมูลในขั้นตอนถัดไป แก้ไข main.tf ด้วยเนื้อหาต่อไปนี้

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 3
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

อีกครั้ง ให้ใช้คำสั่งต่อไปนี้เพื่อใช้การเปลี่ยนแปลง

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

เมื่อสร้างสำเร็จ my-first-database จะพร้อมใช้งานภายใต้อินสแตนซ์

9962a71c6b2a3aff.png

5. การแก้ไขอินสแตนซ์

ดังที่ระบุไว้ในส่วนก่อนหน้า คุณสมบัติบางอย่างของอินสแตนซ์จะแก้ไขไม่ได้ แต่คุณสามารถเพิ่ม/ลดจำนวนโหนดเพื่อปรับทรัพยากรที่อินสแตนซ์ใช้ได้ อินสแตนซ์ที่สร้างมี 3 โหนด เราจะเพิ่มจำนวนโหนดเป็น 5 โดยการแก้ไขไฟล์ main.tf ดังนี้

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}

resource "google_spanner_database" "database" {
  instance = google_spanner_instance.main.name
  name     = "my-first-database"
}

ขั้นตอนถัดไปคือการใช้การเปลี่ยนแปลง โดยทำดังนี้

$ terraform apply
# ...
Apply complete! Resources: 0 added, 1 changed, 0 destroyed.

เมื่อสำเร็จแล้ว อินสแตนซ์จะใช้ 5 โหนด

6. การลบฐานข้อมูล

คุณสามารถลบฐานข้อมูลอย่างถาวรได้เมื่อไม่ต้องการใช้งานแล้ว เพียงนำฐานข้อมูลออกจาก main.tf แล้วใช้การเปลี่ยนแปลง

provider "google" {
  project = "PROJECT_ID"
}

resource "google_spanner_instance" "main" {
  config       = "regional-us-central1"
  display_name = "first-terraform-instance"
  num_nodes    = 5
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

เมื่อดำเนินการสำเร็จแล้ว ระบบจะลบฐานข้อมูลอย่างถาวร

7. การลบอินสแตนซ์

คุณสามารถลบอินสแตนซ์อย่างถาวรได้เมื่อไม่ต้องการใช้อีกต่อไป เพียงนำอินสแตนซ์ออกจาก main.tf แล้วใช้การเปลี่ยนแปลง

provider "google" {
  project = "PROJECT_ID"
}
$ terraform apply
# ...
Apply complete! Resources: 0 added, 0 changed, 1 destroyed.

เมื่อลบสำเร็จแล้ว ระบบจะลบอินสแตนซ์อย่างถาวร

8. ยินดีด้วย

คุณได้สร้าง แก้ไข และลบทรัพยากร Cloud Spanner โดยใช้ Terraform

สิ่งที่เราได้พูดถึง

  • วิธีใช้ผู้ให้บริการ Terraform ของ Google Cloud
  • การใช้ Terraform เพื่อสร้างอินสแตนซ์และฐานข้อมูล Cloud Spanner
  • การใช้ Terraform เพื่อแก้ไขทรัพยากร Cloud Spanner
  • การใช้ Terraform เพื่อลบทรัพยากร Cloud Spanner

ดูข้อมูลเพิ่มเติม