Создание кластера ClickHouse®
Кластер ClickHouse® — это один или несколько хостов базы данных, между которыми можно настроить репликацию.
Примечание
- Количество хостов, которые можно создать вместе с кластером ClickHouse®, зависит от выбранного типа диска и класса хостов.
- Доступные типы диска зависят от выбранного класса хостов.
Выбранный механизм обеспечения работы репликации также влияет на количество хостов в кластере из нескольких хостов:
-
Кластер, использующий для управления репликацией и отказоустойчивостью ClickHouse® Keeper, должен состоять из трех или более хостов — отдельные хосты для запуска ClickHouse® Keeper не требуются. Создать такой кластер можно только с помощью CLI и API.
Эта функциональность находится на стадии Preview. Доступ к ClickHouse® Keeper предоставляется по запросу. Обратитесь в техническую поддержку
или к вашему аккаунт-менеджеру. -
При использовании ZooKeeper кластер может состоять из двух и более хостов. Еще 3 хоста ZooKeeper будут добавлены в кластер автоматически.
Минимальное количество ядер для одного хоста ZooKeeper зависит от суммарного количества ядер хостов ClickHouse®. Подробнее см. в разделе Репликация.
Внимание
Эти хосты учитываются в расчете использованной квоты ресурсов
в облаке и в расчете стоимости кластера.
Создать кластер
Для создания кластера Managed Service for ClickHouse® нужна роль vpc.user и роль managed-clickhouse.editor или выше. О том, как назначить роль, см. документацию Identity and Access Management.
Чтобы создать кластер Managed Service for ClickHouse®:
-
В консоли управления
выберите каталог, в котором нужно создать кластер БД. -
Выберите сервис Managed Service for ClickHouse.
-
Нажмите кнопку Создать кластер.
-
Введите имя кластера в поле Имя кластера. Имя кластера должно быть уникальным в рамках каталога.
-
Выберите окружение, в котором нужно создать кластер (после создания кластера окружение изменить невозможно):
PRODUCTION
— для стабильных версий ваших приложений.PRESTABLE
— для тестирования. Prestable-окружение аналогично Production-окружению и на него также распространяется SLA, но при этом на нем раньше появляются новые функциональные возможности, улучшения и исправления ошибок. В Prestable-окружении вы можете протестировать совместимость новых версий с вашим приложением.
-
Выберите версию ClickHouse®, которую будет использовать кластер Managed Service for ClickHouse®, из выпадающего списка Версия. Для большинства кластеров рекомендуется выбрать самую новую LTS-версию.
-
Если вы планируете использовать данные из бакета Object Storage с ограниченным доступом, то выберите сервисный аккаунт из выпадающего списка или создайте новый. Подробнее о настройке сервисного аккаунта см. в разделе Настройка доступа к Object Storage.
-
В блоке Ресурсы:
-
Выберите платформу, тип виртуальной машины и класс хостов — он определяет технические характеристики виртуальных машин, на которых будут развернуты хосты БД. Все доступные варианты перечислены в разделе Классы хостов. При изменении класса хостов для кластера меняются характеристики всех уже созданных экземпляров.
-
Выберите тип диска.
Важно
Тип диска нельзя изменить после создания кластера.
От выбранного типа зависит, с каким шагом можно будет изменить размер диска:
- Сетевые HDD- и SSD-диски — с шагом 1 ГБ.
- Локальные SSD-диски:
- для платформ Intel Broadwell и Intel Cascade Lake — с шагом 100 ГБ;
- для платформы Intel Ice Lake — с шагом 368 ГБ.
- Нереплицируемые SSD-диски — с шагом 93 ГБ.
-
Выберите размер диска, который будет использоваться для данных и резервных копий. Подробнее о том, как занимают пространство резервные копии, см. раздел Резервные копии.
-
-
В блоке Хосты:
- Если вы хотите создать дополнительные хосты базы данных, нажмите Добавить хост. После добавления второго хоста появится кнопка Настроить ZooKeeper. Измените настройки ZooKeeper в блоках Класс хоста ZooKeeper, Размер хранилища ZooKeeper и Хосты ZooKeeper при необходимости.
- Укажите параметры хостов базы, создаваемых вместе с кластером. Чтобы изменить добавленный хост, наведите курсор на строку хоста и нажмите на значок
. - Чтобы к хосту можно было подключаться из интернета, включите настройку Публичный доступ.
-
В блоке Настройки СУБД:
-
Если вы хотите управлять пользователями кластера через SQL, в поле Управление пользователями через SQL выберите из выпадающего списка Включено и укажите пароль пользователя
admin
. Управление пользователями через другие интерфейсы при этом станет недоступно.В противном случае выберите Выключено.
-
Если вы хотите управлять базами данных через SQL, в поле Управление базами данных через SQL выберите из выпадающего списка Включено. Управление базами данных через другие интерфейсы при этом станет недоступно. Поле неактивно, если управление пользователями через SQL выключено.
В противном случае выберите Выключено.
Внимание
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
-
Имя пользователя и пароль.
Примечание
Имя пользователя может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания.
Длина пароля от 8 до 128 символов.
-
Имя БД. Имя базы может содержать латинские буквы, цифры и подчеркивание. Максимальная длина имени 63 символа. Запрещено создание базы данных с именем
default
. -
При необходимости включите для кластера гибридное хранилище.
Внимание
Эту опцию невозможно выключить.
-
При необходимости задайте настройки СУБД. Их также можно задать позднее.
Через интерфейсы Yandex Cloud можно управлять ограниченным набором настроек. С помощью SQL-запросов можно установить настройки ClickHouse® на уровне запроса.
-
-
В блоке Сетевые настройки выберите облачную сеть для размещения кластера и группы безопасности для сетевого трафика кластера. Может потребоваться дополнительная настройка групп безопасности для того, чтобы можно было подключаться к кластеру.
-
В блоке Хосты укажите параметры хостов БД, создаваемых вместе с кластером. Чтобы изменить настройки хоста, нажмите на значок
в строке с его номером:- Зона доступности — выберите зону доступности.
- Подсеть — укажите подсеть в выбранной зоне доступности.
- Публичный доступ — разрешите доступ к хосту из интернета.
Чтобы добавить хосты в кластер, нажмите кнопку Добавить хост.
-
При необходимости задайте сервисные настройки кластера:
-
Начало резервного копирования (UTC) — промежуток времени, в течение которого начинается резервное копирование кластера. Время указывается по UTC в 24-часовом формате. По умолчанию —
22:00 - 23:00
UTC. -
Окно обслуживания — настройки времени технического обслуживания:
- Чтобы разрешить проведение технического обслуживания в любое время, выберите пункт произвольное (по умолчанию).
- Чтобы указать предпочтительное время начала обслуживания, выберите пункт по расписанию и укажите нужные день недели и час дня по UTC. Например, можно выбрать время, когда кластер наименее загружен.
Операции по техническому обслуживанию проводятся для включенных и выключенных кластеров. Они могут включать в себя: обновление СУБД, применение патчей и так далее.
-
Доступ из 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. Вы можете указать другой каталог с помощью параметра --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
.
-
--clickhouse-disk-type
— тип диска.Важно
Тип диска нельзя изменить после создания кластера.
-
--websql-access
— разрешает выполнять SQL-запросы к базам данных кластера из консоли управления Yandex Cloud с помощью сервиса Yandex WebSQL. Значение по умолчанию —false
. -
--deletion-protection
— защита от удаления кластера.
Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
Пользователями и базами данных в кластере можно управлять через 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>"
- задайте значение
-
Чтобы разрешить доступ к кластеру из сервиса 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
.
-
-
Примечание
По умолчанию при создании кластера устанавливается режим технического обслуживания anytime
— в любое время. Вы можете установить конкретное время обслуживания при изменении настроек кластера.
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций 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 = <размер_хранилища_ГБ> } } database { name = "<имя_базы_данных>" } user { name = "<имя_пользователя_БД>" password = "<пароль>" permission { database_name = "<имя_БД_в_которой_создается_пользователь>" } } host { type = "CLICKHOUSE" zone = "<зона_доступности>" subnet_id = yandex_vpc_subnet.<имя_подсети_в_Terraform>.id assign_public_ip = <публичный_доступ_к_хосту> } }
Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
-
Чтобы настроить время технического обслуживания (в т. ч. для выключенных кластеров), добавьте к описанию кластера блок
maintenance_window
:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... maintenance_window { type = <тип_технического_обслуживания> day = <день_недели> hour = <час_дня> } ... }
Где:
type
— тип технического обслуживания. Принимает значения:ANYTIME
— в любое время.WEEKLY
— по расписанию.
day
— день недели для типаWEEKLY
в форматеDDD
. Например,MON
.hour
— час дня по UTC для типаWEEKLY
в форматеHH
. Например,21
.
-
Чтобы разрешить доступ из других сервисов и выполнение 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 ... }
-
Более подробную информацию о ресурсах, которые вы можете создать с помощью 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 минут
}
}
Чтобы создать кластер Managed Service for ClickHouse®, воспользуйтесь методом REST API create для ресурса Cluster или вызовом gRPC API ClusterService/Create и передайте в запросе:
-
Идентификатор каталога, в котором должен быть размещен кластер, в параметре
folderId
. -
Имя кластера в параметре
name
. -
Окружение кластера в параметре
environment
. -
Конфигурацию кластера в параметре
configSpec
. -
Конфигурацию хостов кластера в одном или нескольких параметрах
hostSpecs
. -
Идентификатор сети в параметре
networkId
. -
Идентификаторы групп безопасности в параметре
securityGroupIds
. -
Настройки доступа из других сервисов в параметре
configSpec.access
.
Чтобы разрешить подключение к хостам кластера из интернета, передайте значение true
в параметре hostSpecs.assignPublicIp
.
При необходимости включите управление пользователями и базами данных через SQL:
configSpec.sqlUserManagement
— задайте значениеtrue
для включения режима управления пользователями через SQL.configSpec.sqlDatabaseManagement
— задайте значениеtrue
для включения режима управления базами данных через SQL. Необходимо, чтобы был включен режим управления пользователями через SQL.configSpec.adminPassword
— задайте пароль пользователяadmin
, с помощью которого осуществляется управление.
Внимание
Включенные настройки управления пользователями и базами данных через SQL невозможно выключить. При необходимости их можно включить позже при изменении настроек кластера.
Чтобы задать настройки гибридного хранилища:
-
Включите гибридное хранилище, передав значение
true
в параметреconfigSpec.cloudStorage.enabled
. -
Передайте настройки гибридного хранилища в параметрах
configSpec.cloudStorage
:configSpec.cloudStorage.dataCacheEnabled
— разрешает временное хранение файлов в кластерном хранилище. По умолчанию —true
(разрешено).configSpec.cloudStorage.dataCacheMaxSize
— определяет максимальный объем памяти (в байтах), выделяемый в кластерном хранилище для временного хранения файлов. По умолчанию —1073741824
(1 ГБ).configSpec.cloudStorage.moveFactor
— устанавливает минимальную долю свободного места в кластерном хранилище. Если доля свободного места меньше этого значения, данные переносятся в Yandex Object Storage. Минимальное значение —0
, максимальное —1
, по умолчанию —0.01
.configSpec.cloudStorage.preferNotToMerge
— отключает слияние кусков данных в кластерном и объектном хранилищах. Чтобы отключить слияние, укажите значениеtrue
. Чтобы оставить слияние включенным, укажите значениеfalse
или не передавайте параметр в запросе API при создании кластера.
При создании кластера из нескольких хостов:
-
Если для параметра
embeddedKeeper
указано значениеtrue
, для управления репликацией будет использоваться ClickHouse® Keeper.Внимание
ClickHouse® Keeper невозможно выключить после создания кластера. Использование хостов ZooKeeper также станет недоступно.
-
Если значение параметра
embeddedKeeper
не задано или равноfalse
, для управления репликацией и распределением запросов будет использоваться ZooKeeper.Если в облачной сети кластера есть подсети в каждой из зон доступности, а настройки хостов ZooKeeper не заданы, в каждую подсеть будет автоматически добавлено по одному такому хосту.
Если подсети в сети кластера есть только в некоторых зонах доступности, укажите настройки хостов ZooKeeper явно.
Важно
Если вы указали идентификаторы групп безопасности при создании кластера, то для подключения к нему может потребоваться дополнительная настройка групп безопасности.
Создать копию кластера
Вы можете создать кластер 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_parts_in_total = 0
, удалите этот параметр. - Если в блоке
maintenance_window
указано значение параметраtype = "ANYTIME"
, удалите параметрhour
. - Если есть блоки
user
, добавьте в них параметрыname
иpassword
. - (Опционально) Внесите дополнительные изменения, если вам нужна не идентичная, а кастомизированная копия.
- Укажите новое имя кластера в строке
-
В директории
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.tf
terraform { 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 } database { name = "db1" } user { name = "user1" password = "user1user1" permission { database_name = "db1" } } }
Создание кластера из нескольких хостов
Создайте кластер 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.tf
terraform { 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 } database { name = "db1" } user { name = "user1" password = "user1user1" permission { database_name = "db1" } } }
Управление параметрами подключения к базе данных с Connection Manager
Если вашему облаку или каталогу предоставлен доступ к Public Preview сервиса Connection Manager, то после создания кластера в вашем каталоге появится новая сущность — подключение для управления параметрами подключения к базам данных.
Пароли и другая чувствительная информация будет храниться в секрете Yandex Lockbox. Чтобы посмотреть, какие секреты хранят информацию о подключениях вашего кластера, выберите в вашем каталоге в списке сервисов Lockbox. На странице Секреты в колонке зависимостей секретов будет указан идентификатор вашего кластера.
Вы также можете настраивать доступ к подключениям в Connection Manager.
Чтобы настроить интеграцию с Connection Manager, обратитесь в техническую поддержку
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc