Создание кластера Yandex MPP Analytics for PostgreSQL
Кластер Yandex MPP Analytics for PostgreSQL состоит из хостов-мастеров, которые принимают запросы от клиента, и хостов-сегментов, обеспечивающих обработку и хранение данных.
Подробнее см. в разделе Взаимосвязь ресурсов в Yandex MPP Analytics for PostgreSQL.
Создать кластер
Для создания кластера Yandex MPP Analytics for PostgreSQL нужна роль vpc.user и роль managed-greenplum.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.
Чтобы создать кластер Yandex MPP Analytics for PostgreSQL:
-
В консоли управления
выберите каталог, в котором нужно создать кластер баз данных. -
Перейдите в сервис Yandex MPP Analytics for PostgreSQL.
-
Нажмите кнопку Создать кластер.
-
Введите имя кластера. Оно должно быть уникальным в рамках каталога.
-
(Опционально) Введите описание кластера.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION— для стабильных версий ваших приложений.PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию СУБД.
-
(Опционально) Чтобы разместить хосты-мастеры или хосты-сегменты на выделенных хостах, выберите группы выделенных хостов. Можно назначить группы на один из видов хостов Yandex MPP Analytics for PostgreSQL либо сразу на оба.
Группа выделенных хостов должна быть предварительно создана в сервисе Yandex Compute Cloud.
Эту настройку нельзя изменить после создания кластера.
При использовании выделенных хостов стоимость использования кластера складывается из цены за вычислительные ресурсы Yandex Compute Cloud и наценки Yandex MPP Analytics for PostgreSQL.
-
В блоке Сетевые настройки выберите:
-
Облачную сеть для размещения кластера.
-
Группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.
-
Зону доступности и подсеть для размещения кластера. Чтобы создать новую подсеть, нажмите Создать подсеть в списке подсетей.
Важно
Выбранную для размещения кластера зону доступности нельзя будет изменить.
Для кластеров, хосты которых располагаются в зоне доступности
ru-central1-d, недоступно хранилище на локальных SSD-дисках при использовании платформы Intel Cascade Lake. -
Опцию Публичный доступ, чтобы подключаться к кластеру из интернета.
-
-
(Опционально) Включите опцию Гибридное хранилище.
Она включает гибридное хранилище. Гибридное хранилище нельзя отключить после сохранения настроек кластера.
Когда гибридное хранилище включено, с помощью расширения Yezzey можно переместить часть таблиц AO и AOCO из хранилища кластера в холодное хранилище и наоборот.
Холодное хранилище удобно, если данные таблиц нужно хранить долго, а работать с ними планируется редко. Так хранение будет дешевле.
Примечание
Функциональность находится на стадии Preview и не тарифицируется.
-
Укажите реквизиты пользователя-администратора. Это специальный пользователь, который необходим для управления кластером и не может быть удален. Подробнее см. в разделе Пользователи и роли.
-
Имя пользователя — может содержать латинские буквы, цифры, дефис и подчеркивание, но не может начинаться с дефиса. Длина от 1 до 32 символов.
Примечание
Имена
admin,gpadmin, mdb_admin,mdb_replication,monitor,none,postgres,public,replзарезервированы для собственных нужд Yandex MPP Analytics for PostgreSQL. Создавать пользователей с этими именами нельзя. -
Пароль — длина от 8 до 128 символов.
-
-
При необходимости задайте дополнительные настройки кластера:
-
Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию —
22:00 - 23:00UTC. -
Обслуживание — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт В любое время (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт По расписанию и укажите день недели и интервал времени по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Сервисный аккаунт — выберите существующий сервисный аккаунт для доступа к сервисам Yandex Cloud или создайте новый.
-
Запись логов — опция включает логирование операций в кластере. За хранение логов взимается плата в соответствии с тарифами Yandex Cloud Logging. Для записи логов назначьте выбранному сервисному аккаунту роль
logging.writer.Если вы включили опцию, настройте параметры логирования:
-
Укажите место записи логов:
- Каталог — логи будут записываться в лог-группу по умолчанию выбранного каталога.
- Группа — логи будут записываться в новую или выбранную из списка лог-группу.
-
Выберите, какие логи записывать:
- Логи командного центра — опция включает запись логов командного центра.
- Логи Greenplum — опция включает запись логов СУБД. Уровень логирования можно задать с помощью параметра Log min messages в блоке Настройки СУБД.
-
-
Доступ из DataLens — опция разрешает анализировать данные из кластера в сервисе Yandex DataLens.
-
Доступ из Yandex Query — опция разрешает выполнять YQL-запросы из сервиса Yandex Query к управляемой базе данных Yandex MPP Analytics for PostgreSQL.
-
Доступ из WebSQL — опция разрешает отправлять запросы к базам данных в кластере с помощью сервиса Yandex WebSQL.
-
Защита от удаления — управляет защитой кластера от непреднамеренного удаления.
Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
-
(Опционально) Задайте режим работы и параметры менеджера подключений в блоке Менеджер подключений:
- Режим —
SESSION(сессионный) илиTRANSACTION(транзакционный, по умолчанию). - Размер — количество клиентских соединений. По умолчанию —
0(не ограничено). - Тайм-аут ожидания клиента — время неактивности клиентского соединения в секундах, после которого соединение разрывается. По умолчанию —
28800. - Тайм-аут простоя в транзакции — время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается. По умолчанию —
0(не ограничено).
- Режим —
-
(Опционально) В блоке Управление фоновыми процессами измените параметры регламентных операций технического обслуживания:
- Время старта (UTC) — время, в которое начнется выполнение операции
VACUUM. По умолчанию —19:00 UTC. После завершения операцииVACUUMзапустится операцияANALYZE. - Таймаут VACUUM — максимальная длительность выполнения операции
VACUUM, в секундах. Возможные значения: от7200до86399, по умолчанию —36000. Когда указанное время истечет, операцияVACUUMбудет принудительно завершена. - Таймаут ANALYZE — максимальная длительность выполнения операции
ANALYZE, в секундах. Возможные значения: от7200до86399, по умолчанию —36000. Когда указанное время истечет, операцияANALYZEбудет принудительно завершена.
Суммарная длительность операций
VACUUMиANALYZEне может превышать 24 часа. - Время старта (UTC) — время, в которое начнется выполнение операции
-
Укажите параметры хостов-мастеров на вкладке Master. Рекомендуемую конфигурацию см. в разделе Расчет конфигурации кластера.
-
Класс хоста — определяет технические характеристики виртуальных машин, на которых будут развернуты хосты-мастеры кластера.
-
В блоке Хранилище выберите тип диска и укажите его размер. Доступные типы диска зависят от выбранного класса хостов.
Важно
- Тип диска нельзя изменить после создания кластера.
- Размер хранилища не может быть уменьшен после автоматического увеличения.
- Во время изменения размера хранилища хосты кластера будут недоступны.
-
-
Укажите параметры хостов-сегментов на вкладке Segment. Рекомендуемую конфигурацию см. в разделе Расчет конфигурации кластера.
-
Количество хостов-сегментов.
-
Количество сегментов на хост. Максимальное значение этого параметра зависит от класса хостов.
Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.
-
Класс хоста — определяет технические характеристики виртуальных машин, на которых будут развернуты хосты-сегменты кластера.
-
В блоке Хранилище выберите тип диска и укажите его размер. Доступные типы диска зависят от выбранного класса хостов.
Важно
- Тип диска нельзя изменить после создания кластера.
- Размер хранилища не может быть уменьшен после автоматического увеличения.
- Во время изменения размера хранилища хосты кластера будут недоступны.
- Выберите размер хранилища.
-
-
При необходимости задайте настройки СУБД уровня кластера.
-
Нажмите кнопку Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы создать кластер Yandex MPP Analytics for PostgreSQL:
-
Проверьте, есть ли в каталоге подсети для хостов кластера:
yc vpc subnet listЕсли ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.
-
Посмотрите описание команды CLI для создания кластера:
yc managed-greenplum cluster create --help -
Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):
yc managed-greenplum cluster create <имя_кластера> \ --greenplum-version=<версия_СУБД> \ --environment=<окружение> \ --network-name=<имя_сети> \ --user-name=<имя_пользователя> \ --user-password=<пароль_пользователя> \ --master-config resource-id=<класс_хоста>,` `disk-size=<объем_хранилища_ГБ>,` `disk-type=<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— версия СУБД: 6.28 или 6.29, Cloudberry 2. -
--environment— окружение:PRODUCTION— для стабильных версий ваших приложений.PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
--network-name— имя сети. -
--user-name— имя пользователя. Может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы, цифры или подчеркивания. Длина от 1 до 32 символов. -
--user-password— пароль. Длина от 8 до 128 символов. -
--master-configи--segment-config— конфигурация хостов-мастеров и хостов-сегментов:-
resource-id— класс хоста.Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.
-
disk-size— объем хранилища в гигабайтах. -
disk-type— тип диска:network-ssd(только для хостов-мастеров);local-ssd;network-ssd-nonreplicated.
-
-
--zone-id— зона доступности. -
--subnet-id— идентификатор подсети. Необходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей. -
--assign-public-ip— флаг, который указывается, если для хостов нужен публичный доступ:trueилиfalse. -
--security-group-ids— список идентификаторов групп безопасности. -
--deletion-protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
-
Чтобы задать время начала резервного копирования, передайте нужное значение в формате
HH:MM:SSв параметре--backup-window-start:yc managed-greenplum cluster create <имя_кластера> \ ... --backup-window-start=<время_начала_резервного_копирования> -
(Опционально) Чтобы создать кластер, размещенный на группах выделенных хостов, укажите через запятую их идентификаторы в параметрах
--master-host-group-idsи--segment-host-group-ids:yc managed-greenplum cluster create <имя_кластера> \ ... --master-host-group-ids=<идентификаторы_групп_выделенных_хостов_для_хостов-мастеров> \ --segment-host-group-ids=<идентификаторы_групп_выделенных_хостов_для_хостов-сегментов>Вы можете назначить группы на один из видов хостов Yandex MPP Analytics for PostgreSQL либо сразу на оба.
Группа выделенных хостов должна быть предварительно создана в сервисе Yandex Compute Cloud.
Эту настройку нельзя изменить после создания кластера.
При использовании выделенных хостов стоимость использования кластера складывается из цены за вычислительные ресурсы Yandex Compute Cloud и наценки Yandex MPP Analytics for PostgreSQL.
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), передайте нужное значение в параметре
--maintenance-windowпри создании кластера:yc managed-greenplum cluster create <имя_кластера> \ ... --maintenance-window type=<тип_технического_обслуживания>,` `day=<день_недели>,` `hour=<час_дня> \Где
type— тип технического обслуживания:anytime(по умолчанию) — в любое время.weekly— по расписанию. Для этого значения дополнительно укажите:-
day— день недели:MON,TUE,WED,THU,FRI,SATилиSUN. -
hour— порядковый номер часового интервала по UTC: от1до24.Например,
1соответствует интервалу с00:00до01:00,5— с04:00до05:00.
-
-
Чтобы разрешить доступ к кластеру из разных сервисов, передайте значение
trueв соответствующих параметрах при создании кластера:yc managed-greenplum cluster create <имя_кластера> \ ... --datalens-access=<разрешить_доступ_из_DataLens> \ --yandexquery-access=<разрешить_доступ_из_Yandex_Query> \ --websql-access=<разрешить_доступ_из_WebSQL>Доступные сервисы:
--datalens-access— Yandex DataLens;--yandexquery-access— Yandex Query;--websql-access— Yandex WebSQL.
-
Чтобы включить передачу логов в сервис Yandex Cloud Logging, укажите параметры при создании кластера:
yc managed-greenplum cluster create <имя_кластера> \ ... --service-account <идентификатор_сервисного_аккаунта> \ --log-enabled \ --log-command-center-enabled \ --log-greenplum-enabled \ --log-pooler-enabled \ --log-folder-id <идентификатор_каталога>Где:
-
--service-account— идентификатор сервисного аккаунта. -
--log-enabled— включает механизм передачи логов. Обязателен для работы других флагов, отвечающих за передачу конкретных логов, например,--log-greenplum-enabled. -
--log-command-center-enabled— передача логов командного центра. -
--log-greenplum-enabled— передача логов СУБД. -
--log-pooler-enabled— передача логов менеджера подключений. -
--log-folder-id— идентификатор каталога, лог-группу которого нужно использовать. -
--log-group-id— идентификатор лог-группы, в которую будут записываться логи.Укажите только одну из настроек:
--log-folder-idлибо--log-group-id.
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Чтобы создать кластер Yandex MPP Analytics for PostgreSQL:
-
В командной строке перейдите в каталог, в котором будут расположены конфигурационные файлы 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 = "<версия_СУБД>" 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— версия СУБД. -
master_host_count— количество хостов-мастеров: 2. -
segment_host_count— количество хостов-сегментов: от 2 до 32. -
segment_in_host— количество сегментов на хост. Максимальное значение этого параметра зависит от класса хостов.Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.
-
access.data_lens— доступ к кластеру из сервиса Yandex DataLens:trueилиfalse. -
access.yandex_query— доступ к кластеру из сервиса Yandex Query:trueилиfalse.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
-
(Опционально) Чтобы разместить хосты-мастеры или хосты-сегменты на выделенных хостах, укажите группы выделенных хостов:
resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" { ... master_host_group_ids = [<идентификаторы_групп_выделенных_хостов_для_хостов-мастеров>] segment_host_group_ids = [<идентификаторы_групп_выделенных_хостов_для_хостов-сегментов>] ... }Вы можете назначить группы на один из двух видов хостов Yandex MPP Analytics for PostgreSQL либо сразу на оба.
Группа выделенных хостов должна быть предварительно создана в сервисе Yandex Compute Cloud.
Эту настройку нельзя изменить после создания кластера.
При использовании выделенных хостов стоимость использования кластера складывается из цены за вычислительные ресурсы Yandex Compute Cloud и наценки Yandex MPP Analytics for PostgreSQL.
-
Чтобы включить передачу логов в сервис Yandex Cloud Logging, укажите параметры:
resource "yandex_mdb_greenplum_cluster" "<имя_кластера_в_Terraform>" { ... service_account_id="<идентификатор_сервисного_аккаунта>" logging { enabled = <включить_передачу_логов> command_center_enabled = <передавать_логи_Yandex_Command_Center> greenplum_enabled = <передавать_логи_СУБД> pooler_enabled = <передавать_логи_менеджера_подключений> folder_id = "<идентификатор_каталога>" } }Где:
-
service_account_id— идентификатор сервисного аккаунта. -
logging— настройки передачи логов:-
enabled— управляет механизмом передачи логов:trueилиfalse. Для работы параметров, отвечающих за передачу конкретных логов, передайте значениеtrue. -
command_center_enabled— передача логов командного центра:trueилиfalse. -
greenplum_enabled— передача логов СУБД:trueилиfalse. -
pooler_enabled— передача логов менеджера подключений:trueилиfalse. -
folder_id— идентификатор каталога, лог-группу которого нужно использовать. -
log_group_id— идентификатор лог-группы, в которую будут записываться логи.Укажите только одну из настроек:
folder_idлибоlog_group_id.
-
-
-
Проверьте корректность файлов конфигурации Terraform:
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "config": { "version": "<версия_СУБД>", "access": { "dataLens": <разрешить_доступ_из_DataLens>, "yandexQuery": <разрешить_доступ_из_Yandex_Query> }, "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <разрешить_публичный_доступ_к_хостам_кластера> }, "masterConfig": { "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" } }, "segmentConfig": { "resources": { "resourcePresetId": "<класс_хостов>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" } }, "masterHostCount": "<количество_хостов-мастеров>", "segmentHostCount": "<количество_хостов-сегментов>", "segmentInHost": "<количество_сегментов_на_хост>", "userName": "<имя_пользователя>", "userPassword": "<пароль_пользователя>", "networkId": "<идентификатор_сети>", "securityGroupIds": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "deletionProtection": <защитить_кластер_от_удаления>, "configSpec": { "pool": { "mode": "<режим_работы>", "size": "<количество_клиентских_соединений>", "clientIdleTimeout": "<время_ожидания_клиента>", "idleInTransactionTimeout": "<время_ожидания_клиента_в_транзакции>" } }, "cloudStorage": { "enable": <использовать_гибридное_хранилище> }, "masterHostGroupIds": [ "string" ], "segmentHostGroupIds": [ "string" ], "serviceAccountId": "<идентификатор_сервисного_аккаунта>", "logging": { "enabled": "<включить_передачу_логов>", "commandCenterEnabled": "<передавать_логи_Yandex_Command_Center>", "greenplumEnabled": "<передавать_логи_СУБД>", "poolerEnabled": "<передавать_логи_менеджера_подключений>", "folderId": "<идентификатор_каталога>" } }Где:
-
folderId— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение кластера:PRODUCTIONилиPRESTABLE. -
config— настройки кластера:-
version— версия СУБД. -
access— настройки доступа к кластеру из следующих сервисов Yandex Cloud:dataLens— Yandex DataLens:trueилиfalse.yandexQuery— Yandex Query:trueилиfalse.
-
zoneId— зона доступности. -
subnetId— идентификатор подсети. -
assignPublicIp— публичный доступ к хостам кластера:trueилиfalse.
-
-
masterConfig.resources,segmentConfig.resources— конфигурация хостов-мастеров и хостов-сегментов кластера:resourcePresetId— класс хостов;diskSize— размер диска в байтах;diskTypeId— тип диска.
-
masterHostCount— количество хостов-мастеров:1или2. -
segmentHostCount— количество хостов-сегментов: от2до32. -
segmentInHost— количество сегментов на хост. Максимальное значение этого параметра зависит от класса хостов.Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.
-
userName— имя пользователя. -
userPassword— пароль пользователя. -
networkId— идентификатор сети, в которой будет размещен кластер. -
securityGroupIds— идентификаторы групп безопасности. -
deletionProtection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
configSpec.pool— настройки менеджера подключений:mode— режим работы:SESSIONилиTRANSACTION.size— количество клиентских соединений.clientIdleTimeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается.idleInTransactionTimeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
-
cloudStorage.enable— использование гибридного хранилища. Установите значениеtrue, чтобы включить в кластере расширение Yezzey от Yandex Cloud. Оно применяется, чтобы выгрузить таблицы AO и AOCO с дисков кластера Yandex MPP Analytics for PostgreSQL в холодное хранилище Yandex Object Storage. Так данные хранятся в служебном бакете в сжатом и зашифрованном виде. Это более экономичный способ хранения.Гибридное хранилище нельзя отключить после сохранения настроек кластера.
Примечание
Функциональность находится на стадии Preview и не тарифицируется.
-
masterHostGroupIdsиsegmentHostGroupIds— (опционально) идентификаторы групп выделенных хостов для хостов-мастеров и хостов-сегментов.Группа выделенных хостов должна быть предварительно создана в сервисе Yandex Compute Cloud.
Эту настройку нельзя изменить после создания кластера.
При использовании выделенных хостов стоимость использования кластера складывается из цены за вычислительные ресурсы Yandex Compute Cloud и наценки Yandex MPP Analytics for PostgreSQL.
-
serviceAccountId— идентификатор сервисного аккаунта. -
logging— настройки передачи логов в сервис Yandex Cloud Logging:-
enabled— управляет механизмом передачи логов:trueилиfalse. Для работы параметров, отвечающих за передачу конкретных логов, передайте значениеtrue. -
commandCenterEnabled— передача логов командного центра:trueилиfalse. -
greenplumEnabled— передача логов СУБД:trueилиfalse. -
poolerEnabled— передача логов менеджера подключений:trueилиfalse. -
folderId— идентификатор каталога, лог-группу которого нужно использовать. -
logGroupId— идентификатор лог-группы, в которую будут записываться логи.Укажите только одну из настроек:
folderIdлибоlogGroupId.
-
-
-
Воспользуйтесь методом Cluster.Create и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-greenplum/v1/clusters' \ --data "@body.json" -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "config": { "version": "<версия_СУБД>", "access": { "data_lens": <разрешить_доступ_из_DataLens>, "yandex_query": <разрешить_доступ_из_Yandex_Query> }, "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "assign_public_ip": <разрешить_публичный_доступ_к_хостам_кластера> }, "master_config": { "resources": { "resource_preset_id": "<класс_хостов>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" } }, "segment_config": { "resources": { "resource_preset_id": "<класс_хостов>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" } }, "master_host_count": "<количество_хостов-мастеров>", "segment_host_count": "<количество_хостов-сегментов>", "segment_in_host": "<количество_сегментов_на_хост>", "user_name": "<имя_пользователя>", "user_password": "<пароль_пользователя>", "network_id": "<идентификатор_сети>", "security_group_ids": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "deletion_protection": <защитить_кластер_от_удаления> "config_spec": { "pool": { "mode": "<режим_работы>", "size": "<количество_клиентских_соединений>", "client_idle_timeout": "<время_ожидания_клиента>", "idle_in_transaction_timeout": "<время_ожидания_клиента_в_транзакции>" } }, "cloud_storage": { "enable": <использовать_гибридное_хранилище> }, "master_host_group_ids": [ "string" ], "segment_host_group_ids": [ "string" ], "service_account_id": "<идентификатор_сервисного_аккаунта>", "logging": { "enabled": "<включить_передачу_логов>", "command_center_enabled": "<передавать_логи_Yandex_Command_Center>", "greenplum_enabled": "<передавать_логи_СУБД>", "pooler_enabled": "<передавать_логи_менеджера_подключений>", "folder_id": "<идентификатор_каталога>" } }Где:
-
folder_id— идентификатор каталога. Его можно запросить со списком каталогов в облаке. -
name— имя кластера. -
environment— окружение кластера:PRODUCTIONилиPRESTABLE. -
config— настройки кластера:-
version— версия СУБД. -
access— настройки доступа кластера к следующим сервисам Yandex Cloud:data_lens— Yandex DataLens:trueилиfalse.yandex_query— Yandex Query:trueилиfalse.
-
zone_id— зона доступности. -
subnet_id— идентификатор подсети. -
assign_public_ip— публичный доступ к хостам кластера:trueилиfalse.
-
-
master_config.resources,segment_config.resources— конфигурация хостов-мастеров и хостов-сегментов кластера:resource_preset_id— класс хостов;disk_size— размер диска в байтах;disk_type_id— тип диска.
-
master_host_count— количество хостов-мастеров:1или2. -
segment_host_count— количество хостов-сегментов: от2до32. -
segment_in_host— количество сегментов на хост. Максимальное значение этого параметра зависит от класса хостов.Класс хостов-сегментов и количество сегментов на хост влияют на максимальный объем памяти, выделенный на каждый серверный процесс Yandex MPP Analytics for PostgreSQL. Если выбран класс хостов с небольшим объемом оперативной памяти и указано большое число сегментов, то может возникнуть ошибка.
-
user_name— имя пользователя. -
user_password— пароль пользователя. -
network_id— идентификатор сети, в которой будет размещен кластер. -
security_group_ids— идентификаторы групп безопасности. -
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает подключиться к нему вручную и удалить данные.
-
config_spec.pool— настройки менеджера подключений:mode— режим работы:SESSIONилиTRANSACTION.size— количество клиентских соединений.client_idle_timeout— время неактивности клиентского соединения в секундах, после которого соединение разрывается.idle_in_transaction_timeout— время неактивности клиентского соединения с открытой транзакцией в секундах, после которого соединение разрывается.
-
cloud_storage.enable— использование гибридного хранилища. Установите значениеtrue, чтобы включить в кластере расширение Yezzey от Yandex Cloud. Оно применяется, чтобы выгрузить таблицы AO и AOCO с дисков кластера Yandex MPP Analytics for PostgreSQL в холодное хранилище Yandex Object Storage. Так данные хранятся в служебном бакете в сжатом и зашифрованном виде. Это более экономичный способ хранения.Гибридное хранилище нельзя отключить после сохранения настроек кластера.
Примечание
Функциональность находится на стадии Preview и не тарифицируется.
-
master_host_group_idsиsegment_host_group_ids— (опционально) идентификаторы групп выделенных хостов для хостов-мастеров и хостов-сегментов.Группа выделенных хостов должна быть предварительно создана в сервисе Yandex Compute Cloud.
Эту настройку нельзя изменить после создания кластера.
При использовании выделенных хостов стоимость использования кластера складывается из цены за вычислительные ресурсы Yandex Compute Cloud и наценки Yandex MPP Analytics for PostgreSQL.
-
service_account_id— идентификатор сервисного аккаунта. -
logging— настройки передачи логов в сервис Yandex Cloud Logging:-
enabled— управляет механизмом передачи логов:trueилиfalse. Для работы параметров, отвечающих за передачу конкретных логов, передайте значениеtrue. -
command_center_enabled— передача логов командного центра:trueилиfalse. -
greenplum_enabled— передача логов СУБД:trueилиfalse. -
pooler_enabled— передача логов менеджера подключений:trueилиfalse. -
folder_id— идентификатор каталога, лог-группу которого нужно использовать. -
log_group_id— идентификатор лог-группы, в которую будут записываться логи.Укажите только одну из настроек:
folder_idлибоlog_group_id.
-
-
-
Воспользуйтесь вызовом ClusterService.Create и выполните запрос, например, с помощью gRPCurl
: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 @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.greenplum.v1.ClusterService.Create \ < body.json -
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать копию кластера
Вы можете создать кластер Yandex MPP Analytics for PostgreSQL, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера Yandex MPP Analytics for PostgreSQL импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер Yandex MPP Analytics for PostgreSQL обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера Yandex MPP Analytics for PostgreSQL:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tfи содержимым:resource "yandex_mdb_greenplum_cluster" "old" { } -
Запишите идентификатор первоначального кластера Yandex MPP Analytics for PostgreSQL в переменную окружения:
export GREENPLUM_CLUSTER_ID=<идентификатор_кластера>Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера Yandex MPP Analytics for PostgreSQL в конфигурацию 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 -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Примеры
Создание кластера
Создайте кластер Yandex MPP Analytics for PostgreSQL с тестовыми характеристиками:
-
С именем
gp-cluster. -
Версии
6.29. -
В окружении
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.29 \
--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® являются зарегистрированными товарными знаками или товарными знаками Broadcom Inc в США и/или других странах.