Создание кластера Greenplum®
Кластер Managed Service for Greenplum® состоит из хостов-мастеров, которые принимают запросы от клиента, и хостов-сегментов, обеспечивающих обработку и хранение данных.
Доступные типы диска зависят от выбранного класса хостов.
Подробнее см. в разделе Взаимосвязь ресурсов сервиса.
Создать кластер
Для создания кластера Managed Service for Greenplum® нужна роль vpc.user и роль managed-greenplum.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.
Чтобы создать кластер Managed Service for Greenplum®:
-
В консоли управления
выберите каталог, в котором нужно создать кластер баз данных. -
Выберите сервис Managed Service for Greenplum.
-
Нажмите кнопку Создать кластер.
-
Введите имя кластера. Оно должно быть уникальным в рамках каталога.
-
(Опционально) Введите описание кластера.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию Greenplum®.
-
(Опционально) Выберите группы выделенных хостов, на которых будет размещен кластер.
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
-
В блоке Сетевые настройки:
-
Выберите облачную сеть для размещения кластера.
-
В параметре Группы безопасности укажите группу безопасности, которая содержит правила, разрешающие любой исходящий и входящий трафик по любому протоколу с любых IP-адресов.
Внимание
Для корректной работы кластера Managed Service for Greenplum® необходимо, чтобы хотя бы в одной из его групп безопасности были правила, разрешающие любой входящий и исходящий трафик с любых IP-адресов.
-
Выберите зону доступности и подсеть для размещения кластера. Чтобы создать новую подсеть, нажмите кнопку Создать новую рядом с нужной зоной доступности.
-
Выберите опцию Публичный доступ, чтобы подключаться к кластеру из интернета.
-
-
(Опционально) Для кластера с версией Greenplum® 6.25 и выше включите опцию Гибридное хранилище.
Она активирует расширение Yezzey
от Yandex Cloud. Оно применяется, чтобы выгрузить таблицы AO и AOCO с дисков кластера Managed Service for Greenplum® в холодное хранилище Object Storage. Так данные хранятся в служебном бакете в сжатом и зашифрованном виде. Это более экономичный способ хранения.Эту опцию нельзя отключить после сохранения настроек кластера.
Примечание
Функциональность находится на стадии Preview и не тарифицируется.
-
Укажите настройки пользователя-администратора. Это специальный пользователь, который необходим для управления кластером и не может быть удален. Подробнее см. в разделе Пользователи и роли.
-
Имя пользователя — может содержать латинские буквы, цифры, дефис и подчеркивание, но не может начинаться с дефиса. Длина от 1 до 32 символов.
Примечание
Имена
admin
,gpadmin
, mdb_admin,mdb_replication
,monitor
,none
,postgres
,public
,repl
зарезервированы для собственных нужд Managed Service for Greenplum®. Создавать пользователей с этими именами нельзя. -
Пароль — длина от 8 до 128 символов.
-
-
При необходимости задайте дополнительные настройки кластера:
-
Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию —
22:00 - 23:00
UTC. -
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Доступ из DataLens — опция разрешает анализировать данные из кластера в сервисе Yandex DataLens.
-
Доступ из Yandex Query — опция разрешает выполнять YQL-запросы из сервиса Yandex Query к управляемой базе данных Managed Service for Greenplum®.
-
Защита от удаления — управляет защитой кластера, его баз данных и пользователей от непреднамеренного удаления.
Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
-
-
(Опционально) Задайте режим работы и параметры менеджера подключений в блоке Менеджер подключений:
- Режим —
SESSION
(сессионный, по умолчанию) илиTRANSACTION
(транзакционный). - Размер — количество клиентских соединений.
- Тайм-аут ожидания клиента — время неактивности клиентского соединения (в миллисекундах), после которого соединение разрывается.
- Режим —
-
(Опционально) В блоке Управление фоновыми процессами измените параметры регламентных операций технического обслуживания:
- Время старта (UTC) — время, в которое начнется выполнение операции
VACUUM
. По умолчанию —19:00 UTC
. После завершения операцииVACUUM
запустится операцияANALYZE
. - Таймаут VACUUM — максимальная длительность выполнения операции
VACUUM
, в секундах. Возможные значения: от7200
до86399
, по умолчанию —36000
. Когда указанное время истечет, операцияVACUUM
будет принудительно завершена. - Таймаут ANALYZE — максимальная длительность выполнения операции
ANALYZE
, в секундах. Возможные значения: от7200
до86399
, по умолчанию —36000
. Когда указанное время истечет, операцияANALYZE
будет принудительно завершена.
Суммарная длительность операций
VACUUM
иANALYZE
не может превышать 24 часа. - Время старта (UTC) — время, в которое начнется выполнение операции
-
Укажите параметры хостов-мастеров на вкладке Master. Рекомендуемую конфигурацию см. в разделе Расчет конфигурации кластера.
-
Класс хоста — определяет технические характеристики виртуальных машин, на которых будут развернуты хосты-мастеры кластера.
-
В блоке Хранилище:
-
Выберите тип диска.
Важно
Тип диска нельзя изменить после создания кластера.
От выбранного типа зависит, с каким шагом можно будет изменить размер хранилища:
- хранилище на нереплицируемых SSD-дисках — с шагом 93 ГБ;
- хранилище на локальных SSD-дисках:
- для платформы Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ;
- хранилища на сетевых SSD- и HDD-дисках — с шагом 1 ГБ.
-
-
-
Укажите параметры хостов-сегментов на вкладке Segment. Рекомендуемую конфигурацию см. в разделе Расчет конфигурации кластера.
- Количество хостов-сегментов.
- Количество сегментов на хост. Максимальное значение этого параметра зависит от класса хостов.
- Класс хоста — определяет технические характеристики виртуальных машин, на которых будут развернуты хосты-сегменты кластера.
- В блоке Хранилище:
-
Выберите тип диска.
От выбранного типа зависит, с каким шагом можно будет изменить размер хранилища:
- хранилище на нереплицируемых SSD-дисках — с шагом 93 ГБ;
- хранилище на локальных SSD-дисках:
- для платформы Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ;
- хранилища на сетевых SSD- и HDD-дисках — с шагом 1 ГБ.
-
-
При необходимости задайте настройки СУБД уровня кластера.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы создать кластер Managed Service for Greenplum®:
-
Проверьте, есть ли в каталоге подсети для хостов кластера:
yc vpc subnet list
Если ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.
-
Посмотрите описание команды CLI для создания кластера:
yc managed-greenplum cluster create --help
-
Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):
yc managed-greenplum cluster create <имя_кластера> \ --greenplum-version=<версия_Greenplum> \ --environment=<окружение> \ --network-name=<имя_сети> \ --user-name=<имя_пользователя> \ --user-password=<пароль_пользователя> \ --master-config resource-id=<класс_хоста>,` `disk-size=<объем_хранилища_ГБ>,` `disk-type=<network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \ --segment-config resource-id=<класс_хоста>,` `disk-size=<объем_хранилища_ГБ>,` `disk-type=<network-ssd-nonreplicated|local-ssd> \ --zone-id=<зона_доступности> \ --subnet-id=<идентификатор_подсети> \ --assign-public-ip=<публичный_доступ_к_хостам> \ --security-group-ids=<список_идентификаторов_групп_безопасности> \ --deletion-protection
Примечание
Имя кластера должно быть уникальным в каталоге. Оно может содержать латинские буквы, цифры, дефис и подчеркивание. Максимальная длина имени 63 символа.
Где:
-
--greenplum-version
— версия Greenplum®: 6.22 или 6.25. -
--environment
— окружение:PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
--network-name
— имя сети. -
--user-name
— имя пользователя. Может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания. Длина от 1 до 32 символов. -
--user-password
— пароль. Длина от 8 до 128 символов. -
--master-config
и--segment-config
— конфигурация хостов-мастеров и хостов-сегментов:resource-id
— класс хоста.disk-size
— объем хранилища в гигабайтах.disk-type
— тип диска:network-hdd
(только для хостов-мастеров);network-ssd
(только для хостов-мастеров);local-ssd
;network-ssd-nonreplicated
.
-
--zone-id
— зона доступности. -
--subnet-id
— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей. -
--assign-public-ip
— флаг, который указывается, если для хостов нужен публичный доступ:true
илиfalse
. -
--security-group-ids
— список идентификаторов групп безопасности. -
--deletion-protection
— защита от удаления кластера.Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
-
-
Чтобы задать время начала резервного копирования, передайте нужное значение в формате
HH:MM:SS
в параметре--backup-window-start
:yc managed-greenplum cluster create <имя_кластера> \ ... --backup-window-start=<время_начала_резервного_копирования>
-
Чтобы создать кластер, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметре
--host-group-ids
:yc managed-greenplum cluster create <имя_кластера> \ ... --host-group-ids=<идентификаторы_групп_выделенных_хостов>
Внимание
Эту настройку нельзя изменить после создания кластера. Использование выделенных хостов существенно влияет на тарификацию кластера.
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), передайте нужное значение в параметре
--maintenance-window
при создании кластера:yc managed-greenplum cluster create <имя_кластера> \ ... --maintenance-window type=<тип_технического_обслуживания>,` `day=<день_недели>,` `hour=<час_дня> \
Где
type
— тип технического обслуживания:anytime
(по умолчанию) — в любое время.weekly
— по расписанию. При задании этого значения укажите день недели и час дня:day
— день недели в форматеDDD
:MON
,TUE
,WED
,THU
,FRI
,SAT
илиSUN
.hour
— час дня по UTC в форматеHH
: от1
до24
.
-
Чтобы разрешить доступ к кластеру из разных сервисов, передайте значение
true
в соответствующих параметрах при создании кластера:yc managed-greenplum cluster create <имя_кластера> \ ... --datalens-access=<доступ_из_DataLens> \ --yandexquery-access=<доступ_из_Yandex_Query>
Доступные сервисы:
--datalens-access
— Yandex DataLens;--yandexquery-access
— Yandex Query.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Чтобы создать кластер Managed Service for Greenplum®:
-
В командной строке перейдите в каталог, в котором будут расположены конфигурационные файлы Terraform с планом инфраструктуры. Если такой директории нет — создайте ее.
-
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Создайте конфигурационный файл с описанием облачной сети и подсетей.
Кластер размещается в облачной сети. Если подходящая сеть у вас уже есть, описывать ее повторно не нужно.
Хосты кластера размещаются в подсетях выбранной облачной сети. Если подходящие подсети у вас уже есть, описывать их повторно не нужно.
Пример структуры конфигурационного файла, в котором описывается облачная сеть с одной подсетью:
resource "yandex_vpc_network" "<имя_сети_в_Terraform>" { name = "<имя_сети>" } resource "yandex_vpc_subnet" "<имя_подсети_в_Terraform>" { name = "<имя_подсети>" zone = "<зона_доступности>" network_id = yandex_vpc_network.<имя_сети_в_Terraform>.id v4_cidr_blocks = ["<подсеть>"] }
-
Создайте конфигурационный файл с описанием кластера и его хостов.
Пример структуры конфигурационного файла:
resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" { name = "<имя_кластера>" environment = "<окружение>" network_id = yandex_vpc_network.<имя_сети_в_Terraform>.id zone = "<зона_доступности>" subnet_id = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id assign_public_ip = <публичный_доступ_к_хостам_кластера> deletion_protection = <защита_от_удаления_кластера> version = "<версия_Greenplum>" master_host_count = <количество_хостов_мастеров> segment_host_count = <количество_хостов_сегментов> segment_in_host = <количество_сегментов_на_хост> master_subcluster { resources { resource_preset_id = "<класс_хоста>" disk_size = <объем_хранилища_ГБ> disk_type_id = "<тип_диска>" } } segment_subcluster { resources { resource_preset_id = "<класс_хоста>" disk_size = <объем_хранилища_ГБ> disk_type_id = "<тип_диска>" } } access { data_lens = <доступ_из_DataLens> yandex_query = <доступ_из_Yandex_Query> } user_name = "<имя_пользователя>" user_password = "<пароль>" security_group_ids = ["<список_идентификаторов_групп_безопасности>"] }
Где:
-
assign_public_ip
— публичный доступ к хостам кластера:true
илиfalse
. -
deletion_protection
— защита от удаления кластера:true
илиfalse
.Включенная защита от удаления кластера не помешает подключиться вручную и удалить содержимое базы данных.
-
version
— версия Greenplum®. -
master_host_count
— количество хостов-мастеров: 1 или 2. -
segment_host_count
— количество хостов-сегментов: от 2 до 32. -
segment_in_host
— количество сегментов на хост. Максимальное значение этого параметра зависит от класса хостов. -
access.data_lens
— доступ к кластеру из сервиса Yandex DataLens:true
илиfalse
. -
access.yandex_query
— доступ к кластеру из сервиса Yandex Query:true
илиfalse
.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
-
Проверьте корректность файлов конфигурации Terraform:
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Чтобы создать кластер Managed Service for Greenplum®, воспользуйтесь методом REST API create для ресурса Cluster или вызовом gRPC API ClusterService/Create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластер, в параметре
folderId
. -
Имя кластера в параметре
name
. -
Окружение кластера в параметре
environment
. -
Версию Greenplum® в параметре
config.version
. -
Имя пользователя в параметре
userName
. -
Пароль пользователя в параметре
userPassword
. -
Идентификатор сети в параметре
networkId
. -
Идентификаторы групп безопасности в параметре
securityGroupIds
. -
Конфигурацию хостов-мастеров в параметре
masterConfig
. -
Конфигурацию хостов-сегментов в параметре
segmentConfig
.
При необходимости передайте дополнительные настройки кластера:
-
Публичный доступ в параметре
assignPublicIp
. -
Окно резервного копирования в параметре
config.backupWindowStart
. -
Доступ к кластеру из сервиса Yandex DataLens в параметре
config.access.dataLens
. -
Доступ к кластеру из сервиса Yandex Query в параметре
config.access.yandexQuery
. -
Время технического обслуживания (в т. ч. для выключенных кластеров) в параметре
maintenanceWindow
. -
Настройки СУБД в параметре
configSpec.greenplumConfig_<версия>
. -
Регламентные операции технического обслуживания в параметре
configSpec.backgroundActivities.analyzeAndVacuum
. -
Защиту от удаления кластера в параметре
deletionProtection
.Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
Создать копию кластера
Вы можете создать кластер Greenplum®, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Greenplum® импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Greenplum® обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера Greenplum®:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tf
и содержимым:resource "yandex_mdb_greenplum_cluster" "old" { }
-
Запишите идентификатор первоначального кластера Greenplum® в переменную окружения:
export GREENPLUM_CLUSTER_ID=<идентификатор_кластера>
Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера Greenplum® в конфигурацию Terraform:
terraform import yandex_mdb_greenplum_cluster.old ${GREENPLUM_CLUSTER_ID}
-
Получите импортированную конфигурацию:
terraform show
-
Скопируйте ее из терминала и вставьте в файл с расширением
.tf
. -
Расположите файл в новой директории
imported-cluster
. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:
- Укажите новое имя кластера в строке
resource
и параметреname
. - Удалите параметры
created_at
,health
,id
,status
,master_hosts
иsegment_hosts
. - Добавьте параметр
user_password
. - Если в блоке
maintenance_window
указано значение параметраtype = "ANYTIME"
, удалите параметрhour
. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
imported-cluster
получите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-cluster
и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Примеры
Создание кластера
Создайте кластер Managed Service for Greenplum® с тестовыми характеристиками:
-
С именем
gp-cluster
. -
Версии
6.25
. -
В окружении
PRODUCTION
. -
В сети
default
. -
С пользователем
user1
. -
С паролем
user1user1
. -
С хостами-мастерами и хостами-сегментами:
- Класса
s2.medium
. - С хранилищем на локальных SSD-дисках (
local-ssd
) объемом 100 ГБ.
- Класса
-
В зоне доступности
ru-central1-a
, в подсетиb0rcctk2rvtr********
. -
С публичным доступом к хостам.
-
В группе безопасности
enp6saqnq4ie********
. -
С защитой от случайного удаления кластера.
Выполните следующую команду:
yc managed-greenplum cluster create \
--name=gp-cluster \
--greenplum-version=6.25 \
--environment=PRODUCTION \
--network-name=default \
--user-name=user1 \
--user-password=user1user1 \
--master-config resource-id=s2.medium,`
`disk-size=100,`
`disk-type=local-ssd \
--segment-config resource-id=s2.medium,`
`disk-size=100,`
`disk-type=local-ssd \
--zone-id=ru-central1-a \
--subnet-id=b0rcctk2rvtr******** \
--assign-public-ip=true \
--security-group-ids=enp6saqnq4ie******** \
--deletion-protection
Greenplum® и Greenplum Database® являются зарегистрированными товарными знаками или товарными знаками VMware, Inc в США и/или других странах.