Создание кластера ClickHouse®
Кластер ClickHouse® — это один или несколько хостов базы данных, между которыми можно настроить репликацию.
Роли для создания кластера
Для создания кластера Managed Service for ClickHouse® нужна роль vpc.user и роль managed-clickhouse.editor или выше.
Если вы хотите привязать сервисный аккаунт к кластеру (например, для работы с Yandex Object Storage), вашему аккаунту в Yandex Cloud нужна роль iam.serviceAccounts.user или выше.
О назначении ролей читайте в документации Yandex Identity and Access Management.
Создать кластер
-
Доступные типы диска зависят от выбранного класса хостов.
-
Количество хостов, которые можно создать вместе с кластером ClickHouse®, зависит от выбранного типа диска и класса хостов.
-
При использовании ClickHouse® Keeper конфигурация кластера зависит от выбранного режима:
- ClickHouse Keeper (встроенный) — ClickHouse® Keeper размещается на хостах ClickHouse®. Кластер должен состоять из трех или более хостов ClickHouse®.
- ClickHouse Keeper (на отдельных хостах) — ClickHouse® Keeper размещается на отдельных хостах. Кластер должен состоять из двух и более хостов ClickHouse®. Еще 3 хоста ClickHouse® Keeper будут добавлены в кластер автоматически.
-
При использовании ZooKeeper кластер может состоять из двух и более хостов. Еще 3 хоста ZooKeeper будут добавлены в кластер автоматически.
Минимальное количество ядер для одного хоста ZooKeeper зависит от суммарного количества ядер хостов ClickHouse®. Подробнее см. в разделе Репликация.
Важно
Хосты ClickHouse® Keeper и ZooKeeper учитываются в расчете использованной квоты ресурсов
Подключениями к БД кластера управляет сервис Connection Manager. Вместе с кластером автоматически создаются:
-
Подключение Connection Manager с информацией о соединении с БД.
-
Секрет Yandex Lockbox, в котором хранится пароль пользователя — владельца БД. Хранение паролей в сервисе Yandex Lockbox обеспечивает их безопасность.
Подключение и секрет создаются для каждого нового пользователя БД. Чтобы увидеть все подключения, на странице кластера выберите вкладку Подключения.
Для просмотра информации о подключении требуется роль connection-manager.viewer. Вы можете настраивать доступ к подключениям в Connection Manager.
Использование сервиса Connection Manager и секретов, созданных с его помощью, не тарифицируется.
Чтобы создать кластер Managed Service for ClickHouse®:
-
В консоли управления
выберите каталог, в котором нужно создать кластер БД. -
Перейдите в сервис Managed Service for ClickHouse.
-
Нажмите кнопку Создать кластер.
-
Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION— для стабильных версий ваших приложений.PRESTABLE— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию ClickHouse®, которую будет использовать кластер Managed Service for ClickHouse®, из выпадающего списка Версия. Для большинства кластеров рекомендуется выбрать самую новую LTS-версию.
-
В блоке Ресурсы:
-
Выберите платформу, тип виртуальной машины и класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе Классы хостов. При изменении класса хостов для кластера меняются характеристики всех уже созданных экземпляров.
-
Выберите тип диска.
Важно
Тип диска нельзя изменить после создания кластера.
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформ Intel Broadwell и Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ.
- Нереплицируемые SSD-диски и cверхбыстрые сетевые SSD-диски с тремя репликами — с шагом 93 ГБ.
-
Выберите размер диска, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, см. раздел Резервные копии.
-
(Опционально) Задайте настройки автоматического увеличения размера хранилища ClickHouse®:
- В поле Увеличивать размер выберите один или оба порога:
-
В окно обслуживания при заполненности более — порог для планового увеличения. При его достижении размер хранилища увеличивается во время ближайшего окна обслуживания.
Для планового увеличения необходимо настроить расписание окна обслуживания.
-
Незамедлительно при заполненности более — порог для незамедлительного увеличения. При его достижении размер хранилища увеличивается немедленно.
-
- Задайте пороговое значение (в процентах от общего размера хранилища). Если выбраны оба порога, значение для незамедлительного увеличения должно быть не меньше, чем для планового.
- Задайте Максимальный размер хранилища.
Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда.
- В поле Увеличивать размер выберите один или оба порога:
-
-
В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.
-
В блоке Хосты:
-
Укажите параметры хостов БД, создаваемых вместе с кластером. Чтобы изменить настройки хоста, нажмите на значок
в строке с его номером:-
Зона доступности — выберите зону доступности.
-
Подсеть — укажите подсеть в выбранной зоне доступности.
-
Публичный доступ — разрешите доступ к хосту из интернета.
-
Если для кластера включено шардирование и хостов больше, чем шардов, выберите шард.
Чтобы добавить хосты в кластер, нажмите кнопку Добавить хост.
-
-
(Опционально) Выберите сервис координации, который будет распределять запросы между хостами:
- ClickHouse® Keeper на хостах ClickHouse® (встроенный);
- ClickHouse® Keeper на отдельных хостах;
- ZooKeeper на отдельных хостах.
-
-
В зависимости от выбранного сервиса координации задайте следующие настройки:
-
Для сервиса координации ClickHouse Keeper (на отдельных хостах):
-
В блоке Ресурсы ClickHouse Keeper выберите платформу, тип виртуальной машины и класс хоста.
-
В блоке Размер хранилища ClickHouse Keeper выберите тип диска, размер хранилища и при необходимости задайте настройки автоматического увеличения размера хранилища ClickHouse® Keeper.
-
В блоке Хосты ClickHouse Keeper при необходимости измените настройки автоматически добавленных хостов ClickHouse® Keeper.
Чтобы изменить настройки хоста, нажмите на значок
в строке нужного хоста и укажите:- Зона доступности — выберите зону доступности.
- Подсеть — выберите подсеть в выбранной зоне доступности.
-
-
Для сервиса координации ZooKeeper (на отдельных хостах):
-
В блоке Класс хоста ZooKeeper выберите платформу, тип виртуальной машины и класс хоста.
-
В блоке Размер хранилища ZooKeeper выберите тип диска, размер хранилища и при необходимости задайте настройки автоматического увеличения размера хранилища ZooKeeper.
-
В блоке Хосты ZooKeeper при необходимости измените настройки автоматически добавленных хостов ZooKeeper.
Чтобы изменить настройки хоста, нажмите на значок
в строке нужного хоста и укажите:- Зона доступности — выберите зону доступности.
- Подсеть — выберите подсеть в выбранной зоне доступности.
-
-
-
В блоке Настройки СУБД:
-
Если вы хотите управлять пользователями кластера через SQL, в поле Управление пользователями через SQL выберите из выпадающего списка Включено и укажите пароль пользователя
admin. Управление пользователями через другие интерфейсы при этом станет недоступно.В противном случае выберите Выключено.
-
Если вы хотите управлять базами данных через SQL, в поле Управление базами данных через SQL выберите из выпадающего списка Включено. Управление базами данных через другие интерфейсы при этом станет недоступно. Поле неактивно, если управление пользователями через SQL выключено.
В противном случае выберите Выключено.
Важно
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
-
Укажите имя пользователя.
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
-
Укажите пароль пользователя:
-
Ввести вручную — выберите, чтобы ввести свой пароль. Длина пароля — от 8 до 128 символов.
-
Сгенерировать — выберите, чтобы сгенерировать пароль с помощью сервиса Connection Manager.
Чтобы увидеть пароль, после создания кластера выберите вкладку Пользователи и нажмите Посмотреть пароль в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется роль
lockbox.payloadViewer. -
-
Укажите имя БД. Имя базы может содержать латинские буквы, цифры и подчеркивание. Максимальная длина имени 63 символа. Запрещено создание базы данных с именем
default. -
Выберите движок базы данных:
-
Atomic(по умолчанию) — поддерживает неблокирующие операцииDROP TABLEиRENAME TABLE, а также атомарные операцииEXCHANGE TABLES. -
Replicated— поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.Доступен только в реплицированных кластерах.
Движок задается при создании базы данных и не может быть изменен для этой базы.
-
-
При необходимости включите для кластера гибридное хранилище.
Важно
Эту опцию невозможно выключить.
-
При необходимости задайте настройки СУБД. Их также можно задать позднее.
Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно установить настройки ClickHouse® на уровне запроса.
-
-
При необходимости задайте сервисные настройки кластера:
-
Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию —
22:00 - 23:00UTC. -
Срок хранения автоматических резервных копий, дней — время, в течение которого нужно хранить созданные автоматически резервные копии (в днях). Если для такой копии истекает срок хранения, то она удаляется. Значение по умолчанию — 7 дней. Подробнее см. в разделе Резервные копии.
Изменение срока хранения затрагивает как новые автоматические резервные копии, так и уже существующие. Например, изначальный срок хранения был 7 дней, оставшееся время жизни отдельной автоматической резервной копии — 1 день. При увеличении срока хранения до 9 дней оставшееся время жизни этой резервной копии будет уже 3 дня.
-
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Сервисный аккаунт — аккаунт, от имени которого пользовательские программы могут управлять кластером. Подробнее см. в документации Управление доступом в Managed Service for ClickHouse®.
-
Шифрование дисков — опция включает шифрование диска пользовательским ключом KMS. Задайте ключ одним из способов:
-
Чтобы создать новый ключ, нажмите кнопку Создать.
-
Чтобы использовать созданный ранее ключ, выберите его в поле Ключ KMS.
Подробнее о шифровании дисков см. в разделе Хранилище.
-
-
Доступ из DataLens — опция разрешает анализировать данные из кластера в сервисе Yandex DataLens.
-
Доступ из WebSQL — опция разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL.
-
Доступ из Метрики и AppMetrica — опция разрешает импортировать данные из AppMetrica
в кластер. -
Доступ из Serverless — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса Yandex Cloud Functions. Подробнее о настройке доступа см. в документации Cloud Functions.
-
Доступ из Yandex Query — включите эту опцию, чтобы разрешить доступ к кластеру из сервиса Yandex Query. Функциональность находится на стадии Preview.
-
Защита от удаления — управляет защитой кластера от непреднамеренного удаления.
Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
-
Нажмите кнопку Создать кластер.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать кластер Managed Service for ClickHouse®:
-
Проверьте, есть ли в каталоге подсети для хостов кластера:
yc vpc subnet listЕсли ни одной подсети в каталоге нет, создайте нужные подсети в сервисе VPC.
-
Посмотрите описание команды CLI для создания кластера:
yc managed-clickhouse cluster create --help -
Укажите параметры кластера в команде создания (в примере приведены не все доступные параметры):
yc managed-clickhouse cluster create \ --name <имя_кластера> \ --environment <окружение> \ --network-name <имя_сети> \ --host type=<тип_хоста>,` `zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети>,` `assign-public-ip=<публичный_доступ_к_хосту> \ --clickhouse-resource-preset <класс_хоста> \ --clickhouse-disk-type <network-hdd|network-ssd|network-ssd-nonreplicated|local-ssd> \ --clickhouse-disk-size <размер_хранилища_ГБ> \ --user name=<имя_пользователя>,password=<пароль_пользователя> \ --database name=<имя_базы_данных> \ --security-group-ids <список_идентификаторов_групп_безопасности> \ --websql-access=<true_или_false> \ --deletion-protectionИдентификатор подсети
subnet-idнеобходимо указывать, если в выбранной зоне доступности создано 2 и больше подсетей.Где:
-
--environment— окружение кластера:prestableилиproduction. -
--host— параметры хоста:-
type— тип хоста:clickhouseилиzookeeper. -
zone-id— зона доступности. -
assign-public-ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.Важно
Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее см. в разделе Настройка групп безопасности.
-
-
--clickhouse-disk-type— тип диска.Важно
Тип диска нельзя изменить после создания кластера.
-
--user— содержит имя (name) и пароль (password) пользователя ClickHouse®.Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
Длина пароля — от 8 до 128 символов.
Примечание
Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого измените команду и задайте параметры пользователя таким образом:
--user name=<имя_пользователя>,generate-password=trueЧтобы увидеть пароль, в консоли управления
выберите созданный кластер, перейдите на вкладку Пользователи и нажмите Посмотреть пароль в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется рольlockbox.payloadViewer. -
--websql-access— разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL. Значение по умолчанию —false. -
--deletion-protection— защита кластера от непреднамеренного удаления:trueилиfalse.Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
Пользователями и базами данных в кластере можно управлять через SQL.
Важно
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
-
Чтобы включить режим управления пользователями через SQL:
- задайте значение
trueдля параметра--enable-sql-user-management; - задайте пароль для пользователя
adminв параметре--admin-password.
yc managed-clickhouse cluster create \ ... --enable-sql-user-management true \ --admin-password "<пароль_пользователя_admin>" - задайте значение
-
Чтобы включить режим управления базами данных через SQL:
- задайте значение
trueдля параметров--enable-sql-user-managementи--enable-sql-database-management; - задайте пароль для пользователя
adminв параметре--admin-password.
yc managed-clickhouse cluster create \ ... --enable-sql-user-management true \ --enable-sql-database-management true \ --admin-password "<пароль_пользователя_admin>" - задайте значение
-
Чтобы зашифровать диск пользовательским ключом KMS, передайте параметр
--disk-encryption-key-id <идентификатор_ключа_KMS>.Подробнее о шифровании дисков см. в разделе Хранилище.
-
Чтобы разрешить доступ к кластеру из сервиса Yandex Cloud Functions, передайте параметр
--serverless-access. Подробнее о настройке доступа см. в документации Cloud Functions. -
Чтобы разрешить доступ к кластеру из сервиса Yandex Query, передайте параметр
--yandexquery-access=true. Функциональность находится на стадии Preview. -
Чтобы включить ClickHouse® Keeper в кластере, задайте значение
trueдля параметра--embedded-keeper.yc managed-clickhouse cluster create \ ... --embedded-keeper trueВнимание
ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
-
Чтобы задать настройки гибридного хранилища:
-
Включите гибридное хранилище, задав значение
trueдля параметра--cloud-storage.Примечание
Включенное однажды гибридное хранилище нельзя отключить.
-
Передайте настройки гибридного хранилища в соответствующих параметрах:
--cloud-storage-data-cache— разрешает временное хранение файлов в кластерном хранилище. По умолчанию —true(разрешено).--cloud-storage-data-cache-max-size— определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. По умолчанию —1073741824(1 ГБ).--cloud-storage-move-factor— устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение —0, максимальное —1, по умолчанию —0.01.--cloud-storage-prefer-not-to-merge— отключает слияние кусков данных в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значениеtrueили передайте параметр без значения. Чтобы оставить слияние включенным, укажите значениеfalseили не передавайте параметр в команде CLI при создании кластера.
yc managed-clickhouse cluster create \ ... --cloud-storage=true \ --cloud-storage-data-cache=<хранение_файлов> \ --cloud-storage-data-cache-max-size=<объем_памяти_в_байтах> \ --cloud-storage-move-factor=<доля_свободного_места> \ --cloud-storage-prefer-not-to-merge=<слияние_кусков_данных> ...Где:
--cloud-storage-data-cache— хранение файлов в кластерном хранилище:trueилиfalse.--cloud-storage-prefer-not-to-merge— отключает слияние кусков данных в кластерном и объектном хранилищах:trueилиfalse.
-
-
Чтобы задать автоматическое увеличение размера хранилища для ClickHouse® и ZooKeeper, используйте флаг
--disk-size-autoscaling:yc managed-clickhouse cluster create \ ... --disk-size-autoscaling clickhouse-disk-size-limit=<максимальный_размер_хранилища_ГБ>,` `clickhouse-planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,` `clickhouse-emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах>,` `zookeeper-disk-size-limit=<максимальный_размер_хранилища_ГБ>,` `zookeeper-planned-usage-threshold=<порог_для_планового_увеличения_в_процентах>,` `zookeeper-emergency-usage-threshold=<порог_для_незамедлительного_увеличения_в_процентах> ...Где
--disk-size-autoscaling— настройки автоматического увеличения размера хранилищ:-
clickhouse-disk-size-limit— максимальный размер хранилища ClickHouse®, в гигабайтах. -
clickhouse-planned-usage-threshold— порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
clickhouse-emergency-usage-threshold— порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
zookeeper-disk-size-limit— максимальный размер хранилища ZooKeeper, в гигабайтах. -
zookeeper-planned-usage-threshold— порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
zookeeper-emergency-usage-threshold— порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100.
Важно
-
Если заданы оба порога для ClickHouse®, значение
clickhouse-emergency-usage-thresholdдолжно быть не меньшеclickhouse-planned-usage-threshold. -
Если заданы оба порога для ZooKeeper, значение
zookeeper-emergency-usage-thresholdдолжно быть не меньшеzookeeper-planned-usage-threshold. -
При использовании параметров
clickhouse-planned-usage-thresholdиzookeeper-planned-usage-thresholdнеобходимо настроить окно технического обслуживания.
Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse® и не отображаются при выводе команды
yc managed-clickhouse cluster get.Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, используйте команду:
yc managed-clickhouse shards get <имя_шарда> --cluster-id <идентификатор_кластера>Идентификатор кластера можно получить со списком кластеров в каталоге.
Имя шарда можно получить со списком шардов в кластере.
-
-
Чтобы настроить окно технического обслуживания, используйте флаг
--maintenance-window:yc managed-clickhouse cluster create \ ... --maintenance-window type=<тип_технического_обслуживания>,` `hour=<час_дня>,` `day=<день_недели> ...Где
--maintenance-window— настройки окна технического обслуживания:-
type— тип окна технического обслуживания. Допустимые значения:anytime(по умолчанию) — в любое время.weekly— по расписанию. Для этого значения необходимо передать параметрыhourиday.
-
hour— час дня по UTC. Допустимые значения: от1до24. -
day— день недели. Допустимые значения:MON,TUE,WED,THU,FRI,SAT,SUN.
-
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Чтобы создать кластер Managed Service for ClickHouse®:
-
В командной строке перейдите в каталог, в котором будут расположены конфигурационные файлы 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 = ["<подсеть>"] } -
Создайте конфигурационный файл с описанием ресурсов кластера, которые необходимо создать:
-
Кластер базы данных — описание кластера и его хостов. Здесь же при необходимости:
-
Задайте настройки СУБД на уровне сервера. Их также можно указать позднее.
-
Включите защиту кластера от непреднамеренного удаления.
Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
-
База данных — описание БД кластера.
-
Пользователь — описание пользователя кластера. Здесь же при необходимости задайте настройки СУБД на уровне пользователя. Их также можно указать позднее.
Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно установить настройки ClickHouse® на уровне запроса.
Пример структуры конфигурационного файла, в котором описывается кластер из одного хоста:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { name = "<имя_кластера>" environment = "<окружение>" network_id = yandex_vpc_network.<имя_сети_в_Terraform>.id security_group_ids = ["<список_идентификаторов_групп_безопасности>"] deletion_protection = <защита_кластера_от_удаления> clickhouse { resources { resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } } host { type = "CLICKHOUSE" zone = "<зона_доступности>" subnet_id = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id assign_public_ip = <публичный_доступ_к_хосту> } lifecycle { ignore_changes = [database, user] } } resource "yandex_mdb_clickhouse_database" "<имя_БД>" { cluster_id = yandex_mdb_clickhouse_cluster.<имя_кластера>.id name = "<имя_БД>" } resource "yandex_mdb_clickhouse_user" "<имя_пользователя>" { cluster_id = yandex_mdb_clickhouse_cluster.<имя_кластера>.id name = "<имя_пользователя>" password = "<пароль_пользователя>" permission { database_name = yandex_mdb_clickhouse_database.<имя_БД>.name } settings { <имя_параметра_1> = <значение_1> <имя_параметра_2> = <значение_2> ... } }Где:
-
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse. -
assign_public_ip— публичный доступ к хосту:trueилиfalse.Важно
Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее см. в разделе Настройка групп безопасности.
-
lifecycle.ignore_changes— устраняет конфликты ресурсов при операциях с пользователями и базами данных, созданными с помощью отдельных ресурсов.
Для пользователя указываются:
-
nameиpassword— имя и пароль пользователя ClickHouse®.Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа.
Длина пароля — от 8 до 128 символов.
Примечание
Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо
password = "<пароль_пользователя>"укажитеgenerate_password = true.Чтобы увидеть пароль, в консоли управления
выберите созданный кластер, перейдите на вкладку Пользователи и нажмите Посмотреть пароль в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется рольlockbox.payloadViewer.
-
Чтобы разрешить доступ из других сервисов и выполнение SQL-запросов из консоли управления с помощью Yandex WebSQL, добавьте блок
accessс нужными вам настройками:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... access { data_lens = <доступ_из_DataLens> metrika = <доступ_из_Метрики_и_AppMetrika> serverless = <доступ_из_Cloud_Functions> yandex_query = <доступ_из_Yandex_Query> web_sql = <выполнение_SQL-запросов_из_консоли_управления> } ... }Где:
-
data_lens— доступ из DataLens:trueилиfalse. -
metrika— доступ из Метрики и AppMetrika:trueилиfalse. -
serverless— доступ из Cloud Functions:trueилиfalse. -
yandex_query— доступ из Yandex Query:trueилиfalse. -
web_sql— выполнение SQL-запросов из консоли управления:trueилиfalse.
-
-
Пользователями и базами данных в кластере можно управлять через SQL.
Важно
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
-
Чтобы включить режим управления пользователями через SQL, добавьте к описанию кластера поле
sql_user_managementсо значениемtrueи полеadmin_passwordс паролем пользователяadmin:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { name = "<имя_кластера>" ... admin_password = "<пароль_пользователя_admin>" sql_user_management = true ... } -
Чтобы включить режим управления базами данных через SQL, добавьте к описанию кластера поля
sql_user_managementиsql_database_managementсо значениемtrue, а также полеadmin_passwordс паролем пользователяadmin:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { name = "<имя_кластера>" ... admin_password = "<пароль_пользователя_admin>" sql_database_management = true sql_user_management = true ... }
-
-
Чтобы зашифровать диск пользовательским ключом KMS, добавьте параметр
disk_encryption_key_id:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... disk_encryption_key_id = <идентификатор_ключа_KMS> ... }Подробнее о шифровании дисков см. в разделе Хранилище.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера.
-
-
Проверьте корректность файлов конфигурации Terraform:
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Создайте кластер:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.Create и выполните запрос, например, с помощью cURL
:-
Создайте файл
body.jsonи добавьте в него следующее содержимое:Примечание
В примере приведены не все доступные параметры.
{ "folderId": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "networkId": "<идентификатор_сети>", "securityGroupIds": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "configSpec": { "version": "<версия_ClickHouse®>", "embeddedKeeper": <использование_ClickHouse®_Keeper>, "clickhouse": { "resources": { "resourcePresetId": "<класс_хостов_ClickHouse®>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "diskSizeAutoscaling": { "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>", "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>", "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>" } }, "zookeeper": { "resources": { "resourcePresetId": "<класс_хостов_ZooKeeper>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "diskSizeAutoscaling": { "plannedUsageThreshold": "<порог_для_планового_увеличения_в_процентах>", "emergencyUsageThreshold": "<порог_для_незамедлительного_увеличения_в_процентах>", "diskSizeLimit": "<максимальный_размер_хранилища_в_байтах>" } }, "access": { "dataLens": <доступ_из_DataLens>, "webSql": <выполнение_SQL-запросов_из_консоли_управления>, "metrika": <доступ_из_Метрики_и_AppMetrika>, "serverless": <доступ_из_Cloud_Functions>, "dataTransfer": <доступ_из_Data_Transfer>, "yandexQuery": <доступ_из_Yandex_Query> }, "cloudStorage": { "enabled": <использование_гибридного_хранилища>, "moveFactor": "<доля_свободного_места>", "dataCacheEnabled": <временное_хранение_файлов>, "dataCacheMaxSize": "<максимальный_объем_памяти_для_хранения_файлов>", "preferNotToMerge": <отключение_слияния_кусков_данных> }, "adminPassword": "<пароль_пользователя_admin>", "sqlUserManagement": <управление_пользователями_через_SQL>, "sqlDatabaseManagement": <управление_базами_данных_через_SQL> }, "databaseSpecs": [ { "name": "<имя_базы_данных>", "engine": "<движок_базы_данных>" }, { <аналогичный_набор_настроек_для_базы_данных_2> }, { ... }, { <аналогичный_набор_настроек_для_базы_данных_N> } ], "userSpecs": [ { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "databaseName": "<имя_базы_данных>" } ] }, { <аналогичный_набор_настроек_для_пользователя_2> }, { ... }, { <аналогичный_набор_настроек_для_пользователя_N> } ], "hostSpecs": [ { "zoneId": "<зона_доступности>", "type": "<тип_хоста>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <публичный_доступ_к_хосту>, "shardName": "<имя_шарда>" }, { <аналогичный_набор_настроек_для_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_хоста_N> } ], "deletionProtection": <защита_кластера_от_удаления>, "maintenanceWindow": { "weeklyMaintenanceWindow": { "day": "<день_недели>", "hour": "<час_дня>" } } }Где:
-
name— имя кластера. -
environment— окружение кластера:PRODUCTIONилиPRESTABLE. -
networkId— идентификатор сети, в которой будет размещен кластер. -
securityGroupIds— идентификаторы групп безопасности в виде массива строк. массив Каждая строка — идентификатор группы безопасности. -
configSpec— конфигурация кластера:-
version— версия ClickHouse®: 24.8, 25.3, 25.4, 25.5 или 25.6. -
embeddedKeeper— использовать ClickHouse® Keeper вместо ZooKeeper:trueилиfalse.Эта настройка определяет, как будет происходить управление репликацией в кластере из нескольких хостов ClickHouse®:
-
Если указано значение
true, то для управления репликацией будет использоваться ClickHouse® Keeper.Внимание
ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
-
Если значение не задано или равно
false, то для управления репликацией и распределением запросов будет использоваться ZooKeeper.
-
-
clickhouse— конфигурация ClickHouse®:-
resources.resourcePresetId— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list. -
resources.diskSize— размер диска в байтах. -
resources.diskTypeId— тип диска. -
diskSizeAutoscaling— настройки автоматического увеличения размера хранилища ClickHouse®:-
plannedUsageThreshold— порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
emergencyUsageThreshold— порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
diskSizeLimit— максимальный размер хранилища ClickHouse®, в байтах.
Важно
-
Если заданы оба порога, значение
emergencyUsageThresholdдолжно быть не меньшеplannedUsageThreshold. -
При использовании параметра
plannedUsageThresholdнеобходимо настроить окно технического обслуживания.
Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse®.
Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, воспользуйтесь методом Cluster.GetShard и передайте в запросе идентификатор кластера и имя шарда.
Идентификатор кластера можно получить со списком кластеров в каталоге.
Имя шарда можно получить со списком шардов в кластере.
-
-
-
zookeeper— конфигурация ZooKeeper:Важно
Если вы включили использование ClickHouse® Keeper с помощью настройки
embeddedKeeper: true, конфигурация ZooKeeper вconfigSpecне будет применена.-
resources.resourcePresetId— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list. -
resources.diskSize— размер диска в байтах. -
resources.diskTypeId— тип диска. -
diskSizeAutoscaling— настройки автоматического увеличения размера хранилища ZooKeeper:-
plannedUsageThreshold— порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
emergencyUsageThreshold— порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
diskSizeLimit— максимальный размер хранилища ZooKeeper, в байтах.
Важно
-
Если заданы оба порога, значение
emergencyUsageThresholdдолжно быть не меньшеplannedUsageThreshold. -
При использовании параметра
plannedUsageThresholdнеобходимо настроить окно технического обслуживания.
-
-
-
access— настройки, которые разрешают доступ к кластеру из других сервисов и выполнение SQL-запросов из консоли управления с помощью Yandex WebSQL:-
dataLens— разрешить доступ из DataLens:trueилиfalse. Значение по умолчанию —false. Подробнее о настройке подключения см. в разделе Подключение из DataLens. -
webSql— разрешить выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL:trueилиfalse. Значение по умолчанию —false. -
metrika— разрешить импорт данных из AppMetrika в кластер :trueилиfalse. Значение по умолчанию —false. -
serverless— разрешить доступ к кластеру из сервиса Yandex Cloud Functions:trueилиfalse. Значение по умолчанию —false. Подробнее о настройке доступа см. в документации Cloud Functions. -
dataTransfer— разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме:trueилиfalse. Значение по умолчанию —false.Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
-
yandexQuery— разрешить доступ к кластеру из сервиса Yandex Query:trueилиfalse. Функциональность находится на стадии Preview. Значение по умолчанию —false.
-
-
cloudStorage— настройки гибридного хранилища:-
enabled— включить гибридное хранилище в кластере, если оно выключено:trueилиfalse. Значение по умолчанию —false(выключено).Примечание
Включенное однажды гибридное хранилище нельзя отключить.
-
moveFactor— минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage.Минимальное значение —
0, максимальное —1, по умолчанию —0.01. -
dataCacheEnabled— разрешить временное хранение файлов в кластерном хранилище:trueилиfalse.По умолчанию —
true(разрешено). -
dataCacheMaxSize— максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов.По умолчанию —
1073741824(1 ГБ). -
preferNotToMerge— отключить слияние кусков данных в кластерном и объектном хранилищах:trueилиfalse.Чтобы отключить слияние, укажите значение
true. Чтобы оставить слияние включенным, укажите значениеfalse.
-
-
sql...иadminPassword— группа настроек для управления пользователями и базами данных через SQL:adminPassword— пароль пользователяadmin.sqlUserManagement— режим управления пользователями через SQL:trueилиfalse.sqlDatabaseManagement— режим управления базами данных через SQL:trueилиfalse. Необходимо, чтобы был включен режим управления пользователями через SQL.
Важно
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
-
-
databaseSpecs— настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной базе данных и имеет следующую структуру:-
name— имя базы данных. -
engine— движок базы данных. Возможные значения:-
DATABASE_ENGINE_ATOMIC(по умолчанию) — движок Atomic. Поддерживает неблокирующие операцииDROP TABLEиRENAME TABLE, а также атомарные операцииEXCHANGE TABLES. -
DATABASE_ENGINE_REPLICATED— движок Replicated. Поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.Доступен только в реплицированных кластерах.
-
DATABASE_ENGINE_UNSPECIFIED— для этого значения будет выбран движок по умолчаниюDATABASE_ENGINE_ATOMIC.
Движок задается при создании базы данных и не может быть изменен для этой базы.
-
-
-
userSpecs— настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:-
name— имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа. -
password— пароль пользователя. Длина пароля — от 8 до 128 символов.Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо
"password": "<пароль_пользователя>"укажите"generatePassword": true.Чтобы увидеть пароль, в консоли управления
выберите созданный кластер, перейдите на вкладку Пользователи и нажмите Посмотреть пароль в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется рольlockbox.payloadViewer. -
permissions— список БД, к которым пользователь должен иметь доступ.Список организован в виде массива параметров
databaseName. Один параметр содержит имя отдельной БД.
-
-
hostSpecs— настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
type— тип хоста:CLICKHOUSEилиZOOKEEPER.Если вы включили использование ClickHouse® Keeper с помощью настройки
embeddedKeeper: true, то вhostSpecsнужно указать только настройки хостов ClickHouse®. -
zoneId— зона доступности. -
subnetId— идентификатор подсети. -
shardName— имя шарда. Эта настройка имеет смысл только для хостов типаCLICKHOUSE. -
assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.Важно
Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее см. в разделе Настройка групп безопасности.
Если вы создаете кластер из нескольких хостов и не используете ClickHouse® Keeper, то для хостов ZooKeeper действуют следующие правила:
-
Если в облачной сети кластера есть подсети в каждой из зон доступности, а настройки хостов ZooKeeper не заданы, то в каждую подсеть будет автоматически добавлено по одному такому хосту.
-
Если подсети в сети кластера есть только в некоторых зонах доступности, то необходимо указать настройки хостов ZooKeeper явно.
-
-
deletionProtection— защита кластера от непреднамеренного удаления:trueилиfalse. Значение по умолчанию —false.Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
maintenanceWindow— настройки окна технического обслуживания:weeklyMaintenanceWindow.day— день недели. Допустимые значения:MON,TUE,WED,THU,FRI,SAT,SUN.weeklyMaintenanceWindow.hour— час дня по UTC. Допустимые значения: от1до24.
Идентификатор каталога можно запросить со списком каталогов в облаке.
-
-
Выполните запрос:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters' \ --data '@body.json'
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.Create и выполните запрос, например, с помощью gRPCurl
:-
Создайте файл
body.jsonи добавьте в него следующее содержимое:Примечание
В примере приведены не все доступные параметры.
{ "folder_id": "<идентификатор_каталога>", "name": "<имя_кластера>", "environment": "<окружение>", "network_id": "<идентификатор_сети>", "security_group_ids": [ "<идентификатор_группы_безопасности_1>", "<идентификатор_группы_безопасности_2>", ... "<идентификатор_группы_безопасности_N>" ], "config_spec": { "version": "<версия_ClickHouse®>", "embedded_keeper": <использование_ClickHouse® Keeper>, "clickhouse": { "resources": { "resource_preset_id": "<класс_хостов_ClickHouse®>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" }, "disk_size_autoscaling": { "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>", "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>", "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>" } }, "zookeeper": { "resources": { "resource_preset_id": "<класс_хостов_ZooKeeper>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" }, "disk_size_autoscaling": { "planned_usage_threshold": "<порог_для_планового_увеличения_в_процентах>", "emergency_usage_threshold": "<порог_для_незамедлительного_увеличения_в_процентах>", "disk_size_limit": "<максимальный_размер_хранилища_в_байтах>" } }, "access": { "data_lens": <доступ_из_DataLens>, "web_sql": <выполнение_SQL-запросов_из_консоли_управления>, "metrika": <доступ_из_Метрики_и_AppMetrika>, "serverless": <доступ_из_Cloud_Functions>, "data_transfer": <доступ_из_Data_Transfer>, "yandex_query": <доступ_из_Yandex_Query> }, "cloud_storage": { "enabled": <использование_гибридного_хранилища>, "move_factor": "<доля_свободного_места>", "data_cache_enabled": <временное_хранение_файлов>, "data_cache_max_size": "<максимальный_объем_памяти_для_хранения_файлов>", "prefer_not_to_merge": <отключение_слияния_кусков_данных> }, "admin_password": "<пароль_пользователя_admin>", "sql_user_management": <управление_пользователями_через_SQL>, "sql_database_management": <управление_базами_данных_через_SQL> }, "database_specs": [ { "name": "<имя_базы_данных>", "engine": "<движок_базы_данных>" }, { <аналогичный_набор_настроек_для_базы_данных_2> }, { ... }, { <аналогичный_набор_настроек_для_базы_данных_N> } ], "user_specs": [ { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "database_name": "<имя_базы_данных>" } ] }, { <аналогичный_набор_настроек_для_пользователя_2> }, { ... }, { <аналогичный_набор_настроек_для_пользователя_N> } ], "host_specs": [ { "zone_id": "<зона_доступности>", "type": "<тип_хоста>", "subnet_id": "<идентификатор_подсети>", "assign_public_ip": <публичный_доступ_к_хосту>, "shard_name": "<имя_шарда>" }, { <аналогичный_набор_настроек_для_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_хоста_N> } ], "deletion_protection": <защита_кластера_от_удаления>, "maintenance_window": { "weekly_maintenance_window": { "day": "<день_недели>", "hour": "<час_дня>" } }Где:
-
name— имя кластера. -
environment— окружение кластера:PRODUCTIONилиPRESTABLE. -
network_id— идентификатор сети, в которой будет размещен кластер. -
security_group_ids— идентификаторы групп безопасности в виде массива строк. массив Каждая строка — идентификатор группы безопасности. -
config_spec— конфигурация кластера:-
version— версия ClickHouse®: 24.8, 25.3, 25.4, 25.5 или 25.6. -
embedded_keeper— использовать ClickHouse® Keeper вместо ZooKeeper:trueилиfalse.Эта настройка определяет, как будет происходить управление репликацией в кластере из нескольких хостов ClickHouse®:
-
Если указано значение
true, то для управления репликацией будет использоваться ClickHouse® Keeper.Внимание
ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
-
Если значение не задано или равно
false, то для управления репликацией и распределением запросов будет использоваться ZooKeeper.
-
-
clickhouse— конфигурация ClickHouse®:-
resources.resource_preset_id— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list. -
resources.disk_size— размер диска в байтах. -
resources.disk_type_id— тип диска. -
disk_size_autoscaling— настройки автоматического увеличения размера хранилища ClickHouse®:-
planned_usage_threshold— порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
emergency_usage_threshold— порог заполнения хранилища ClickHouse® в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
disk_size_limit— максимальный размер хранилища ClickHouse®, в байтах.
Важно
-
Если заданы оба порога, значение
emergency_usage_thresholdдолжно быть не меньшеplanned_usage_threshold. -
При использовании параметра
planned_usage_thresholdнеобходимо настроить окно технического обслуживания.
Настройки автоматического увеличения размера хранилища, заданные для ClickHouse®, применяются ко всем существующим шардам. При добавлении нового шарда значения настройки берутся с самого старого шарда. Эти значения не сохраняются в конфигурации ClickHouse®.
Чтобы посмотреть информацию о конкретном шарде, включая настройки автоматического увеличения размера хранилища, воспользуйтесь методом ClusterService.GetShard и передайте в запросе идентификатор кластера и имя шарда.
Идентификатор кластера можно получить со списком кластеров в каталоге.
Имя шарда можно получить со списком шардов в кластере.
-
-
-
zookeeper— конфигурация ZooKeeper:Важно
Если вы включили использование ClickHouse® Keeper с помощью настройки
embeddedKeeper: true, конфигурация ZooKeeper вconfigSpecне будет применена.-
resources.resource_preset_id— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list. -
resources.disk_size— размер диска в байтах. -
resources.disk_type_id— тип диска. -
disk_size_autoscaling— настройки автоматического увеличения размера хранилища ZooKeeper:-
planned_usage_threshold— порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено в следующее окно обслуживания. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
emergency_usage_threshold— порог заполнения хранилища ZooKeeper в процентах, при достижении которого оно будет увеличено незамедлительно. По умолчанию —0(автоматическое увеличение отключено).Допустимые значения: от
0до100. -
disk_size_limit— максимальный размер хранилища ZooKeeper, в байтах.
Важно
-
Если заданы оба порога, значение
emergency_usage_thresholdдолжно быть не меньшеplanned_usage_threshold. -
При использовании параметра
planned_usage_thresholdнеобходимо настроить окно технического обслуживания.
-
-
-
access— настройки, которые разрешают доступ к кластеру из других сервисов и выполнение SQL-запросов из консоли управления с помощью Yandex WebSQL:-
data_lens— разрешить доступ из DataLens:trueилиfalse. Значение по умолчанию —false. Подробнее о настройке подключения см. в разделе Подключение из DataLens. -
web_sql— разрешить выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL:trueилиfalse. Значение по умолчанию —false. -
metrika— разрешить импорт данных из AppMetrika в кластер :trueилиfalse. Значение по умолчанию —false. -
serverless— разрешить доступ к кластеру из сервиса Yandex Cloud Functions:trueилиfalse. Значение по умолчанию —false. Подробнее о настройке доступа см. в документации Cloud Functions. -
data_transfer— разрешить доступ к кластеру из сервиса Yandex Data Transfer в Serverless-режиме:trueилиfalse. Значение по умолчанию —false.Это позволит через специальную сеть подключаться к Yandex Data Transfer, запущенному в Kubernetes. В результате будут быстрее выполняться, например, запуск и деактивация трансфера.
-
yandex_query— разрешить доступ к кластеру из сервиса Yandex Query:trueилиfalse. Функциональность находится на стадии Preview. Значение по умолчанию —false.
-
-
cloud_storage— настройки гибридного хранилища:-
enabled— включить гибридное хранилище в кластере, если оно выключено:trueилиfalse. Значение по умолчанию —false(выключено).Примечание
Включенное однажды гибридное хранилище нельзя отключить.
-
move_factor— минимальная доля свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage.Минимальное значение —
0, максимальное —1, по умолчанию —0.01. -
data_cache_enabled— разрешить временное хранение файлов в кластерном хранилище:trueилиfalse.По умолчанию —
true(разрешено). -
data_cache_max_size— максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов.По умолчанию —
1073741824(1 ГБ). -
prefer_not_to_merge— отключить слияние кусков данных в кластерном и объектном хранилищах:trueилиfalse.Чтобы отключить слияние, укажите значение
true. Чтобы оставить слияние включенным, укажите значениеfalse.
-
-
sql...иadmin_password— группа настроек для управления пользователями и базами данных через SQL:admin_password— пароль пользователяadmin.sql_user_management— режим управления пользователями через SQL:trueилиfalse.sql_database_management— режим управления базами данных через SQL:trueилиfalse. Необходимо, чтобы был включен режим управления пользователями через SQL.
Важно
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
-
-
database_specs— настройки баз данных в виде массива элементов. Каждый элемент соответствует отдельной базе данных и имеет следующую структуру:-
name— имя базы данных. -
engine— движок базы данных. Возможные значения:-
DATABASE_ENGINE_ATOMIC(по умолчанию) — движок Atomic. Поддерживает неблокирующие операцииDROP TABLEиRENAME TABLE, а также атомарные операцииEXCHANGE TABLES. -
DATABASE_ENGINE_REPLICATED— движок Replicated. Поддерживает репликацию метаданных таблиц между всеми репликами базы данных. При этом набор таблиц и их схемы будут одинаковыми для всех реплик.Доступен только в реплицированных кластерах.
-
DATABASE_ENGINE_UNSPECIFIED— для этого значения будет выбран движок по умолчаниюDATABASE_ENGINE_ATOMIC.
Движок задается при создании базы данных и не может быть изменен для этой базы.
-
-
-
user_specs— настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:-
name— имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. Максимальная длина имени — 32 символа. -
password— пароль пользователя. Длина пароля — от 8 до 128 символов.Пароль также можно сгенерировать с помощью сервиса Connection Manager. Для этого вместо
"password": "<пароль_пользователя>"укажите"generate_password": true.Чтобы увидеть пароль, в консоли управления
выберите созданный кластер, перейдите на вкладку Пользователи и нажмите Посмотреть пароль в строке нужного пользователя. Откроется страница секрета Yandex Lockbox, в котором хранится пароль. Для просмотра паролей требуется рольlockbox.payloadViewer. -
permissions— список БД, к которым пользователь должен иметь доступ.Список организован в виде массива параметров
database_name. Один параметр содержит имя отдельной БД.
-
-
host_specs— настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
type— тип хоста:CLICKHOUSEилиZOOKEEPER.Если вы включили использование ClickHouse® Keeper с помощью настройки
embedded_keeper: true, то вhost_specsнужно указать только настройки хостов ClickHouse®. -
zone_id— зона доступности. -
subnet_id— идентификатор подсети. -
shard_name— имя шарда. Эта настройка имеет смысл только для хостов типаCLICKHOUSE. -
assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.Важно
Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее см. в разделе Настройка групп безопасности.
Если вы создаете кластер из нескольких хостов и не используете ClickHouse® Keeper, то для хостов ZooKeeper действуют следующие правила:
-
Если в облачной сети кластера есть подсети в каждой из зон доступности, а настройки хостов ZooKeeper не заданы, то в каждую подсеть будет автоматически добавлено по одному такому хосту.
-
Если подсети в сети кластера есть только в некоторых зонах доступности, то необходимо указать настройки хостов ZooKeeper явно.
-
-
deletion_protection— защита кластера от непреднамеренного удаления:trueилиfalse. Значение по умолчанию —false.Включенная защита кластера от удаления не помешает удалить пользователя или базу данных, а также подключиться вручную и удалить содержимое базы данных.
-
maintenance_window— настройки окна технического обслуживания:weekly_maintenance_window.day— день недели. Допустимые значения:MON,TUE,WED,THU,FRI,SAT,SUN.weekly_maintenance_window.hour— час дня по UTC. Допустимые значения: от1до24.
Идентификатор каталога можно запросить со списком каталогов в облаке.
-
-
Выполните запрос:
grpcurl \ -format json \ -import-path ~/cloudapi/ \ -import-path ~/cloudapi/third_party/googleapis/ \ -proto ~/cloudapi/yandex/cloud/mdb/clickhouse/v1/cluster_service.proto \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ \ mdb.api.cloud.yandex.net:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.Create \ < body.json
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если вы указали идентификаторы групп безопасности при создании кластера, то для подключения к нему может потребоваться дополнительная настройка групп безопасности.
Создать копию кластера
Вы можете создать кластер ClickHouse®, который будет обладать настройками созданного ранее кластера. Для этого конфигурация исходного кластера ClickHouse® импортируется в Terraform. В результате вы можете либо создать идентичную копию, либо взять за основу импортированную конфигурацию и внести в нее изменения. Использовать импорт удобно, если исходный кластер ClickHouse® обладает множеством настроек и нужно создать похожий на него кластер.
Чтобы создать копию кластера ClickHouse®:
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
В той же рабочей директории разместите файл с расширением
.tfи содержимым:resource "yandex_mdb_clickhouse_cluster" "old" { } -
Запишите идентификатор первоначального кластера ClickHouse® в переменную окружения:
export CLICKHOUSE_CLUSTER_ID=<идентификатор_кластера>Идентификатор можно запросить вместе со списком кластеров в каталоге.
-
Импортируйте настройки первоначального кластера ClickHouse® в конфигурацию Terraform:
terraform import yandex_mdb_clickhouse_cluster.old ${CLICKHOUSE_CLUSTER_ID} -
Получите импортированную конфигурацию:
terraform show -
Скопируйте ее из терминала и вставьте в файл с расширением
.tf. -
Расположите файл в новой директории
imported-cluster. -
Измените скопированную конфигурацию так, чтобы из нее можно было создать новый кластер:
- Укажите новое имя кластера в строке
resourceи параметреname. - Удалите параметры
created_at,health,idиstatus. - В блоках
hostудалите параметрыfqdn. - Если в блоке
clickhouse.config.merge_treeдля параметровmax_bytes_to_merge_at_max_space_in_pool,max_parts_in_total,number_of_free_entries_in_pool_to_execute_mutationуказано значение0, удалите эти параметры. - В блоке
clickhouse.config.kafkaзадайте значение параметраsasl_passwordили удалите этот параметр. - В блоке
clickhouse.config.rabbitmqзадайте значение параметраpasswordили удалите этот параметр. - Если в блоке
maintenance_windowуказано значение параметраtype = "ANYTIME", удалите параметрhour. - Если есть блоки
user, удалите их. Пользователи БД добавляются с помощью отдельного ресурсаyandex_mdb_clickhouse_user. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
imported-clusterполучите данные для аутентификации. -
В этой же директории настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в директорию
imported-clusterи укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле. -
Проверьте корректность файлов конфигурации Terraform:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" {
...
timeouts {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Примеры
Создание кластера с одним хостом
Чтобы создать кластер с одним хостом, передайте один параметр --host.
Создайте кластер Managed Service for ClickHouse® с тестовыми характеристиками:
- Имя
mych. - Окружение
production. - Сеть
default. - Группа безопасности
enp6saqnq4ie********. - Один хост ClickHouse® класса
s2.microв подсетиb0rcctk2rvtr********, в зоне доступностиru-central1-a. - ClickHouse® Keeper.
- Хранилище на сетевых SSD-дисках (
network-ssd) размером 20 ГБ. - Один пользователь
user1с паролемuser1user1. - Одна база данных
db1. - Защита от непреднамеренного удаления.
Выполните следующую команду:
yc managed-clickhouse cluster create \
--name mych \
--environment=production \
--network-name default \
--clickhouse-resource-preset s2.micro \
--host type=clickhouse,zone-id=ru-central1-a,subnet-id=b0cl69g98qum******** \
--embedded-keeper true \
--clickhouse-disk-size 20 \
--clickhouse-disk-type network-ssd \
--user name=user1,password=user1user1 \
--database name=db1 \
--security-group-ids enp6saqnq4ie******** \
--deletion-protection
Создайте кластер Managed Service for ClickHouse® и сеть для него с тестовыми характеристиками:
-
Имя
mych. -
Окружение
PRESTABLE. -
Облако с идентификатором
b1gq90dgh25********. -
Каталог с идентификатором
b1gia87mbaom********. -
Новая облачная сеть
cluster-net. -
Новая группа безопасности по умолчанию
cluster-sg(в сетиcluster-net), разрешающая подключение к любому хосту кластера из любой сети (в том числе из интернета) по портам8443,9440. -
Один хост класса
s2.microв новой подсетиcluster-subnet-ru-central1-a.Параметры подсети:
- диапазон адресов —
172.16.1.0/24; - сеть —
cluster-net; - зона доступности —
ru-central1-a.
- диапазон адресов —
-
Хранилище на сетевых SSD-дисках (
network-ssd) размером 32 ГБ. -
Имя базы данных
db1. -
Пользователь
user1с паролемuser1user1.
Конфигурационные файлы для такого кластера выглядят так:
-
Конфигурационный файл с описанием настроек провайдера:
provider.tfterraform { required_providers { yandex = { source = "yandex-cloud/yandex" } } } provider "yandex" { token = "<OAuth_или_статический_ключ_сервисного_аккаунта>" cloud_id = "b1gq90dgh25********" folder_id = "b1gia87mbaom********" }Для получения токена OAuth или статического ключа доступа см. инструкции Yandex Identity and Access Management.
-
Конфигурационный файл с описанием облачной сети и подсети:
networks.tf
resource "yandex_vpc_network" "cluster-net" { name = "cluster-net" } resource "yandex_vpc_subnet" "cluster-subnet-a" { name = "cluster-subnet-ru-central1-a" zone = "ru-central1-a" network_id = yandex_vpc_network.cluster-net.id v4_cidr_blocks = ["172.16.1.0/24"] } -
Конфигурационный файл с описанием группы безопасности:
security-groups.tf
resource "yandex_vpc_default_security_group" "cluster-sg" { network_id = yandex_vpc_network.cluster-net.id ingress { description = "HTTPS (secure)" port = 8443 protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] } ingress { description = "clickhouse-client (secure)" port = 9440 protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] } egress { description = "Allow all egress cluster traffic" protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] } } -
Конфигурационный файл с описанием кластера и его хоста:
cluster.tf
resource "yandex_mdb_clickhouse_cluster" "mych" { name = "mych" environment = "PRESTABLE" network_id = yandex_vpc_network.cluster-net.id security_group_ids = [yandex_vpc_default_security_group.cluster-sg.id] clickhouse { resources { resource_preset_id = "s2.micro" disk_type_id = "network-ssd" disk_size = 32 } } host { type = "CLICKHOUSE" zone = "ru-central1-a" subnet_id = yandex_vpc_subnet.cluster-subnet-a.id } lifecycle { ignore_changes = [database, user] } } resource "yandex_mdb_clickhouse_database" "db1" { cluster_id = yandex_mdb_clickhouse_cluster.mych.id name = "db1" } resource "yandex_mdb_clickhouse_user" "user1" { cluster_id = yandex_mdb_clickhouse_cluster.mych.id name = "user1" password = "user1user1" permission { database_name = yandex_mdb_clickhouse_database.db1.name } }
Создание кластера из нескольких хостов
Создайте кластер Managed Service for ClickHouse® с тестовыми характеристиками:
-
Имя
mych. -
Окружение
PRESTABLE. -
Облако с идентификатором
b1gq90dgh25********. -
Каталог с идентификатором
b1gia87mbaom********. -
Новая облачная сеть
cluster-net. -
Три хоста ClickHouse® класса
s2.microи три хоста ZooKeeper классаb2.medium(для обеспечения работы репликации).По одному хосту каждого класса будет размещено в новых подсетях:
cluster-subnet-ru-central1-a:172.16.1.0/24, зона доступностиru-central1-a.cluster-subnet-ru-central1-b:172.16.2.0/24, зона доступностиru-central1-b.cluster-subnet-ru-central1-d:172.16.3.0/24, зона доступностиru-central1-d.
Эти подсети будут принадлежать сети
cluster-net. -
Новая группа безопасности по умолчанию
cluster-sg(в сетиcluster-net), разрешающая подключение к любому хосту кластера из любой сети (в том числе из интернета) по портам8443,9440. -
Хранилище на сетевых SSD-дисках (
network-ssd) размером 32 ГБ для каждого ClickHouse®-хоста кластера. -
Хранилище на сетевых SSD-дисках (
network-ssd) размером 10 ГБ для каждого ZooKeeper-хоста кластера. -
Имя базы данных
db1. -
Пользователь
user1с паролемuser1user1.
Конфигурационные файлы для такого кластера выглядят так:
-
Конфигурационный файл с описанием настроек провайдера:
provider.tfterraform { required_providers { yandex = { source = "yandex-cloud/yandex" } } } provider "yandex" { token = "<OAuth_или_статический_ключ_сервисного_аккаунта>" cloud_id = "b1gq90dgh25********" folder_id = "b1gia87mbaom********" }Для получения токена OAuth или статического ключа доступа см. инструкции Yandex Identity and Access Management.
-
Конфигурационный файл с описанием облачной сети и подсетей:
networks.tf
resource "yandex_vpc_network" "cluster-net" { name = "cluster-net" } resource "yandex_vpc_subnet" "cluster-subnet-a" { name = "cluster-subnet-ru-central1-a" zone = "ru-central1-a" network_id = yandex_vpc_network.cluster-net.id v4_cidr_blocks = ["172.16.1.0/24"] } resource "yandex_vpc_subnet" "cluster-subnet-b" { name = "cluster-subnet-ru-central1-b" zone = "ru-central1-b" network_id = yandex_vpc_network.cluster-net.id v4_cidr_blocks = ["172.16.2.0/24"] } resource "yandex_vpc_subnet" "cluster-subnet-d" { name = "cluster-subnet-ru-central1-d" zone = "ru-central1-d" network_id = yandex_vpc_network.cluster-net.id v4_cidr_blocks = ["172.16.3.0/24"] } -
Конфигурационный файл с описанием группы безопасности:
security-groups.tf
resource "yandex_vpc_default_security_group" "cluster-sg" { network_id = yandex_vpc_network.cluster-net.id ingress { description = "HTTPS (secure)" port = 8443 protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] } ingress { description = "clickhouse-client (secure)" port = 9440 protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] } egress { description = "Allow all egress cluster traffic" protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] } } -
Конфигурационный файл с описанием кластера и его хостов:
cluster.tf
resource "yandex_mdb_clickhouse_cluster" "mych" { name = "mych" environment = "PRESTABLE" network_id = yandex_vpc_network.cluster-net.id security_group_ids = [yandex_vpc_default_security_group.cluster-sg.id] clickhouse { resources { resource_preset_id = "s2.micro" disk_type_id = "network-ssd" disk_size = 32 } } host { type = "CLICKHOUSE" zone = "ru-central1-a" subnet_id = yandex_vpc_subnet.cluster-subnet-a.id } host { type = "CLICKHOUSE" zone = "ru-central1-b" subnet_id = yandex_vpc_subnet.cluster-subnet-b.id } host { type = "CLICKHOUSE" zone = "ru-central1-d" subnet_id = yandex_vpc_subnet.cluster-subnet-d.id } zookeeper { resources { resource_preset_id = "b2.medium" disk_type_id = "network-ssd" disk_size = 10 } } host { type = "ZOOKEEPER" zone = "ru-central1-a" subnet_id = yandex_vpc_subnet.cluster-subnet-a.id } host { type = "ZOOKEEPER" zone = "ru-central1-b" subnet_id = yandex_vpc_subnet.cluster-subnet-b.id } host { type = "ZOOKEEPER" zone = "ru-central1-d" subnet_id = yandex_vpc_subnet.cluster-subnet-d.id } lifecycle { ignore_changes = [database, user] } } resource "yandex_mdb_clickhouse_database" "db1" { cluster_id = yandex_mdb_clickhouse_cluster.mych.id name = "db1" } resource "yandex_mdb_clickhouse_user" "user1" { cluster_id = yandex_mdb_clickhouse_cluster.mych.id name = "user1" password = "user1user1" permission { database_name = yandex_mdb_clickhouse_database.db1.name } }
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc