Cloud Spanner กับ terform

1. ภาพรวม

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

Cloud Spanner คืออะไร

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

ฟีเจอร์หลัก

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

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

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

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

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

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

$ gcloud auth application-default login

เทอร์ราฟอร์ม

หากคุณยังไม่ได้ติดตั้ง Terraform ให้ติดตั้ง Terraform

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

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

ใน Codelab นี้ เราจะสร้างและจัดการอินสแตนซ์และฐานข้อมูลของ 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

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

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.

เมื่อประสบความสำเร็จ ฐานข้อมูลแรกของฉันจะพร้อมใช้งานภายใต้อินสแตนซ์ต่อไปนี้

9962a71c6b2a3aff.png

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

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

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

หัวข้อที่ครอบคลุม

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

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