Cloud Spanner с Terraform

1. Обзор

Последнее обновление: 23.07.2020

Что такое Cloud Spanner?

Google Cloud Spanner — это глобально распределенная база данных, соответствующая принципам ACID, которая автоматически обрабатывает реплики, шардинг и транзакции, позволяя быстро масштабировать систему в соответствии с любыми потребностями и обеспечивая успех ваших продуктов.

Основные характеристики

  • Реляционная база данных, созданная для масштабирования: все, что вы ожидаете от реляционной базы данных — схемы, SQL-запросы и ACID-транзакции — проверено в боевых условиях и готово к глобальному масштабированию.
  • Доступность 99,999%: Cloud Spanner обеспечивает лучшую в отрасли доступность 99,999% для многорегиональных экземпляров — в 10 раз меньше времени простоя, чем при использовании четырех девяток — и обеспечивает прозрачную синхронную репликацию между регионами и многорегиональными конфигурациями.
  • Автоматическое сегментирование: Cloud Spanner оптимизирует производительность, автоматически сегментируя данные в зависимости от нагрузки запросов и размера данных. В результате вы можете тратить меньше времени на масштабирование базы данных и вместо этого сосредоточиться на масштабировании своего бизнеса.

Просмотреть все функции

Что вы узнаете

  • Как использовать провайдер Google Cloud Terraform .
  • Использование Terraform для создания экземпляров Cloud Spanner и баз данных.
  • Использование Terraform для изменения ресурсов Cloud Spanner.
  • Удаление ресурсов Cloud Spanner с помощью Terraform.

2. Настройка и требования

Настройка среды для самостоятельного обучения

Если у вас еще нет учетной записи Google (Gmail или Google Apps), вам необходимо ее создать . Войдите в консоль Google Cloud Platform ( console.cloud.google.com ) и создайте новый проект:

50983ac3fdbbf8d0.png

ea581205026ca8e3.png

Запомните идентификатор проекта (Project ID) — уникальное имя для всех проектов Google Cloud (указанное выше имя уже занято и вам не подойдёт, извините!). В дальнейшем в этом практическом занятии оно будет обозначаться как PROJECT_ID .

Далее вам потребуется включить оплату в консоли Cloud, чтобы использовать ресурсы Google Cloud.

Выполнение этого практического задания не должно обойтись вам дороже нескольких долларов, но может стоить больше, если вы решите использовать дополнительные ресурсы или оставите их запущенными (см. раздел «очистка» в конце этого документа).

Новые пользователи Google Cloud Platform могут получить бесплатную пробную версию стоимостью 300 долларов .

Аутентификация

Если вы еще этого не сделали, пожалуйста, установите инструмент командной строки gcloud . После установки gcloud активируйте учетные данные приложения по умолчанию, выполнив следующую команду в терминале:

$ gcloud auth application-default login

Терраформирование

Если вы ранее не устанавливали Terraform, установите его .

3. Провайдер Google Cloud Terraform

Провайдер Google Cloud Terraform предоставляет четыре ресурса 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 . Обратите внимание, что региональные настройки невозможно изменить после создания экземпляра.

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.
  • Удаление ресурсов Cloud Spanner с помощью Terraform.

Узнать больше