Cloud Spanner مع Terraform

1. نظرة عامة

تاريخ آخر تعديل: 2020-07-23

ما هي خدمة Cloud Spanner؟

Google Cloud Spanner هي قاعدة بيانات موزّعة عالميًا ومتوافقة مع ACID تتعامل تلقائيًا مع النُسخ الاحتياطية وتقسيم البيانات ومعالجة المعاملات، ما يتيح لك توسيع نطاق قاعدة البيانات بسرعة لتلبية أي نمط استخدام وضمان نجاح منتجاتك.

الميزات الأساسية

  • قاعدة بيانات ارتباطية مصمَّمة لتوسيع النطاق: تتضمّن كل ما تتوقّعه من قاعدة بيانات ارتباطية، مثل المخططات واستعلامات SQL ومعاملات ACID، وقد تم اختبارها وهي جاهزة لتوسيع النطاق على مستوى العالم.
  • توفّر بنسبة% 99.999: يوفّر Cloud Spanner نسبة توفّر رائدة في المجال تبلغ% 99.999 للآلات الافتراضية المتعددة المناطق، أي أقل 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.

بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.

لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز أكثر من بضعة دولارات، ولكن قد تكون التكلفة أعلى إذا قررت استخدام المزيد من الموارد أو إذا تركتها قيد التشغيل (راجِع قسم "التنظيف" في نهاية هذا المستند).

يمكن للمستخدمين الجدد في Google Cloud Platform الاستفادة من فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

المصادقة

إذا لم يسبق لك إجراء ذلك، يُرجى تثبيت أداة سطر الأوامر gcloud. بعد تثبيت gcloud، فعِّل "بيانات الاعتماد التلقائية للتطبيق" من خلال تنفيذ الأمر التالي في الوحدة الطرفية:

$ gcloud auth application-default login

Terraform

إذا لم يسبق لك تثبيت Terraform، عليك تثبيت Terraform.

3- Google Cloud Terraform Provider

يوفّر Google Cloud Terraform Provider أربعة موارد Cloud Spanner:

في هذا الدرس التطبيقي حول الترميز، سننشئ مثيلات وقواعد بيانات 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 عُقد. من خلال تعديل ملف 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

مزيد من المعلومات