Изменение конфигурации кластера Greenplum®
После создания кластера вы можете:
- Изменить класс хостов.
- Изменить тип диска и увеличить размер хранилища.
- Расширить кластер: добавить хосты-сегменты или увеличить количество сегментов на хост.
- Изменить зону доступности кластера.
Изменить класс хостов
Вы можете изменить класс как хостов-мастеров, так и хостов-сегментов. При смене класса хостов в кластере сменится первичный хост-мастер.
Важно
Во время изменения класса хостов:
- Хосты кластера будут недоступны.
- Пользовательские сессии будут прерваны.
- Подключение по особому FQDN не гарантирует стабильность соединения с БД.
При изменении класса хостов-сегментов убедитесь, что нового объема памяти в хостах-сегментах достаточно для поддержания количества подключений, указанного в настройке Max connections.
Рекомендуется изменять класс хостов только во время отсутствия рабочей нагрузки на кластер.
Проверьте, что в облаке достаточно квот для изменения класса хостов. Откройте страницу Квоты
- Перейдите на страницу каталога и выберите сервис Managed Service for Greenplum.
- Выберите кластер и нажмите кнопку
Изменить на панели сверху. - В блоке Класс хоста выберите нужный класс для хостов-мастеров или хостов-сегментов Greenplum®.
- Нажмите кнопку Сохранить изменения.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
Чтобы изменить класс хостов для кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-greenplum cluster update --help
-
Запросите список доступных классов (в колонке
ZONE IDS
указаны зоны доступности, в которых можно выбрать соответствующий класс):-
для хостов-мастеров:
yc managed-greenplum resource-preset list master
-
для хостов-сегментов:
yc managed-greenplum resource-preset list segment
+-------------+--------------------------------+--------------------------------+-------+----------+--------------------+---------------------+ | ID | ZONE IDS | DISK TYPES | CORES | MEMORY | HOST COUNT DIVIDER | MAX SEGMENT IN HOST | +-------------+--------------------------------+--------------------------------+-------+----------+--------------------+---------------------+ | i2.2xlarge | ru-central1-a, ru-central1-b | local-ssd, | 16 | 128.0 GB | 1 | 0 | | | | network-ssd-nonreplicated | | | | | | ... | +-------------+--------------------------------+--------------------------------+-------+----------+--------------------+---------------------+
-
-
Укажите нужные классы в команде изменения кластера:
yc managed-greenplum cluster update <имя_или_идентификатор_кластера> \ --master-config resource-id=<идентификатор_класса_хостов-мастеров> \ --segment-config resource-id=<идентификатор_класса_хостов-сегментов>
Managed Service for Greenplum® запустит операцию изменения класса хостов для кластера.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
Как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for Greenplum® см. в документации провайдера Terraform
. -
Измените в описании кластера Managed Service for Greenplum® значение атрибута
resource_preset_id
в блокеmaster_subcluster.resources
илиsegment_subcluster.resources
:resource "yandex_mdb_greenplum_cluster" "<имя_кластера>" { ... master_subcluster { resources { resource_preset_id = "<класс_хоста>" ... } } segment_subcluster { resources { resource_preset_id = "<класс_хоста>" ... } } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Greenplum® 120 минутами.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts
, например:resource "yandex_mdb_greenplum_cluster" "<имя кластера>" { ... timeouts { create = "1h30m" # Полтора часа update = "2h" # 2 часа delete = "30m" # 30 минут } }
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-greenplum/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "masterConfig.resources.resourcePresetId,segmentConfig.resources.resourcePresetId", "masterConfig": { "resources": { "resourcePresetId": "<класс_хостов>" } }, "segmentConfig": { "resources": { "resourcePresetId": "<класс_хостов>" } } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
masterConfig.resources.resourcePresetId
,segmentConfig.resources.resourcePresetId
— новый класс хостов для хостов-мастеров и хостов-сегментов.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "master_config.resources.resource_preset_id", "segment_config.resources.resource_preset_id" ] }, "master_config": { "resources": { "resource_preset_id": "<класс_хостов>" } }, "segment_config": { "resources": { "resource_preset_id": "<класс_хостов>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.greenplum.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
. -
master_config.resources.resource_preset_id
,segment_config.resources.resource_preset_id
— новый класс хостов для хостов-мастеров и хостов-сегментов.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Изменить тип диска и увеличить размер хранилища
Проверьте, что в облаке достаточно квот для увеличения хранилища. Откройте страницу Квоты
Важно
Во время изменения типа диска и увеличения размера хранилища:
- Хосты кластера будут недоступны.
- Пользовательские сессии будут прерваны.
- Подключение по особому FQDN не гарантирует стабильность соединения с БД.
-
В консоли управления
перейдите в каталог с нужным кластером. -
Выберите сервис Managed Service for Greenplum.
-
Выберите нужный кластер.
-
В верхней части страницы нажмите кнопку Изменить.
-
В блоке Хранилище:
- Выберите тип диска.
- Укажите нужный размер диска.
-
Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>
. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name
или --folder-id
.
Чтобы увеличить размер хранилища для кластера:
-
Посмотрите описание команды CLI для изменения кластера:
yc managed-greenplum cluster update --help
-
Укажите нужный размер хранилища для хостов-мастеров или хостов-сегментов в команде изменения кластера (размер хранилища должен быть не меньше, чем значение
disk_size
в свойствах кластера):yc managed-mysql cluster update <имя_или_идентификатор_кластера> \ --master-config disk-size <размер_хранилища_в_гигабайтах> \ --segment-config disk-size <размер_хранилища_в_гигабайтах>
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
Как создать такой файл, см. в разделе Создание кластера.
Полный список доступных для изменения полей конфигурации кластера Managed Service for Greenplum® см. в документации провайдера Terraform
. -
Измените в описании кластера Managed Service for Greenplum® значения атрибутов
disk_type_id
иdisk_size
в блокеmaster_subcluster.resources
илиsegment_subcluster.resources
:resource "yandex_mdb_greenplum_cluster" "<имя_кластера>" { ... master_subcluster { resources { disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_в_гигабайтах> ... } } segment_subcluster { resources { disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_в_гигабайтах> ... } } }
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение всех операций с кластером Managed Service for Greenplum® 120 минутами.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок
timeouts
, например:resource "yandex_mdb_greenplum_cluster" "<имя кластера>" { ... timeouts { create = "1h30m" # Полтора часа update = "2h" # 2 часа delete = "30m" # 30 минут } }
-
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Воспользуйтесь методом Cluster.Update и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask
(одной строкой через запятую).curl \ --request PATCH \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-greenplum/v1/clusters/<идентификатор_кластера>' \ --data '{ "updateMask": "masterConfig.resources.diskTypeId,masterConfig.resources.diskSize,segmentConfig.resources.diskTypeId,segmentConfig.resources.diskSize", "masterConfig": { "resources": { "diskTypeId": "<тип_диска>", "diskSize": "<размер_хранилища_в_байтах>" } }, "segmentConfig": { "resources": { "diskTypeId": "<тип_диска>", "diskSize": "<размер_хранилища_в_байтах>" } } }'
Где:
-
updateMask
— перечень изменяемых параметров в одну строку через запятую. -
masterConfig.resources
,segmentConfig.resources
— параметры хранилища для хостов-мастеров и хостов-сегментов:diskTypeId
— тип диска.diskSize
— новый размер хранилища в байтах.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>"
-
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapi
Далее предполагается, что содержимое репозитория находится в директории
~/cloudapi/
. -
Воспользуйтесь вызовом ClusterService.Update и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask
(в виде массива строкpaths[]
).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/greenplum/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d '{ "cluster_id": "<идентификатор_кластера>", "update_mask": { "paths": [ "master_config.resources.disk_type_id", "master_config.resources.disk_size", "segment_config.resources.disk_type_id", "segment_config.resources.disk_size" ] }, "master_config": { "resources": { "disk_type_id": "<тип_диска>", "disk_size": "<размер_хранилища_в_байтах>" } }, "segment_config": { "resources": { "disk_type_id": "<тип_диска>", "disk_size": "<размер_хранилища_в_байтах>" } } }' \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.greenplum.v1.ClusterService.Update
Где:
-
update_mask
— перечень изменяемых параметров в виде массива строкpaths[]
. -
master_config.resources
,segment_config.resources
— параметры хранилища для хостов-мастеров и хостов-сегментов:disk_type_id
— тип диска.disk_size
— новый размер хранилища в байтах.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Расширить кластер
Вы можете добавить хосты-сегменты в кластер Managed Service for Greenplum®, выполнив процедуру расширения кластера. Количество добавляемых хостов не может быть меньше двух. Вы также можете увеличить количество сегментов на хост при расширении кластера.
Изменить зону доступности кластера
Все хосты кластера Managed Service for Greenplum® располагаются в одной зоне доступности Yandex Cloud. Перенести кластер в другую зону доступности нельзя. При необходимости сменить зону доступности восстановите кластер из резервной копии. При восстановлении из резервной копии укажите новую зону доступности в настройках нового кластера.
Для кластеров, хосты которых располагаются в зоне доступности ru-central1-d
, недоступно хранилище на локальных SSD-дисках при использовании платформы Intel Cascade Lake.
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.