Создание кластера 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 или выше.
Если вы хотите привязать сервисный аккаунт к кластеру (например, для работы с Yandex Object Storage), вашему аккаунту в Yandex Cloud нужна роль iam.serviceAccounts.user или выше.
О назначении ролей читайте в документации Yandex 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 распространяется под лицензией 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 = <размер_хранилища_ГБ> } } 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 минут
}
}
-
Получите 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": "<тип_диска>" } }, "zookeeper": { "resources": { "resourcePresetId": "<класс_хостов_ZooKeeper>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" } }, "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": "<имя_базы_данных>" }, { <аналогичный_набор_настроек_для_базы_данных_2> }, { ... }, { <аналогичный_набор_настроек_для_базы_данных_N> } ], "userSpecs": [ { "name": "<имя_пользователя>", "password": "<пароль_пользователя>", "permissions": [ { "databaseName": "<имя_базы_данных>" } ] }, { <аналогичный_набор_настроек_для_пользователя_2> }, { ... }, { <аналогичный_набор_настроек_для_пользователя_N> } ], "hostSpecs": [ { "zoneId": "<зона_доступности>", "type": "<тип_хоста>", "subnetId": "<идентификатор_подсети>", "assignPublicIp": <публичный_доступ_к_хосту>, "shardName": "<имя_шарда>" }, { <аналогичный_набор_настроек_для_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_хоста_N> } ], "deletionProtection": <защита_от_удаления> }
Где:
-
name
— имя кластера. -
environment
— окружение кластера:PRODUCTION
илиPRESTABLE
. -
networkId
— идентификатор сети, в которой будет размещен кластер. -
securityGroupIds
— идентификаторы групп безопасности в виде массива строк. массив Каждая строка — идентификатор группы безопасности. -
configSpec
— конфигурация кластера:-
version
— версия ClickHouse®: 23.8, 24.3, 24.4 или 24.5. -
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
— тип диска.
-
zookeeper
— конфигурация ZooKeeper:resources.resourcePresetId
— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list.resources.diskSize
— размер диска в байтах.resources.diskTypeId
— тип диска.
Если вы включили использование ClickHouse® Keeper с помощью настройки
embeddedKeeper: true
, то необязательно указывать конфигурацию ZooKeeper вconfigSpec
: эта конфигурация не будет применена. -
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
. Один параметр содержит имя отдельной БД. -
userSpecs
— настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:-
name
— имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. -
password
— пароль пользователя. Длина пароля от 8 до 128 символов. -
permissions
— список БД, к которым пользователь должен иметь доступ.Список организован в виде массива параметров
databaseName
. Один параметр содержит имя отдельной БД.
-
-
hostSpecs
— настройки хостов кластера в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
type
— тип хоста:CLICKHOUSE
илиZOOKEEPER
.Если вы включили использование ClickHouse® Keeper с помощью настройки
embeddedKeeper: true
, то вhostSpecs
нужно указать только настройки хостов ClickHouse®. -
zoneId
— зона доступности. -
subnetId
— идентификатор подсети. -
shardName
— имя шарда. Эта настройка имеет смысл только для хостов типаCLICKHOUSE
. -
assignPublicIp
— доступность хоста из интернета по публичному IP-адресу:true
илиfalse
.
Если вы создаете кластер из нескольких хостов и не используете ClickHouse® Keeper, то для хостов ZooKeeper действуют следующие правила:
-
Если в облачной сети кластера есть подсети в каждой из зон доступности, а настройки хостов ZooKeeper не заданы, то в каждую подсеть будет автоматически добавлено по одному такому хосту.
-
Если подсети в сети кластера есть только в некоторых зонах доступности, то необходимо указать настройки хостов ZooKeeper явно.
-
-
deletionProtection
— защитить кластер, его базы данных и пользователей от непреднамеренного удаления:true
илиfalse
. Значение по умолчанию —false
.Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
Идентификатор каталога можно запросить со списком каталогов в облаке.
-
-
Выполните запрос:
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": "<тип_диска>" } }, "zookeeper": { "resources": { "resource_preset_id": "<класс_хостов_ZooKeeper>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" } }, "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": "<имя_базы_данных>" }, { <аналогичный_набор_настроек_для_базы_данных_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": <защита_от_удаления> }
Где:
-
name
— имя кластера. -
environment
— окружение кластера:PRODUCTION
илиPRESTABLE
. -
network_id
— идентификатор сети, в которой будет размещен кластер. -
security_group_ids
— идентификаторы групп безопасности в виде массива строк. массив Каждая строка — идентификатор группы безопасности. -
config_spec
— конфигурация кластера:-
version
— версия ClickHouse®: 23.8, 24.3, 24.4 или 24.5. -
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
— тип диска.
-
zookeeper
— конфигурация ZooKeeper:resources.resource_preset_id
— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list.resources.disk_size
— размер диска в байтах.resources.disk_type_id
— тип диска.
Если вы включили использование ClickHouse® Keeper с помощью настройки
embedded_keeper: true
, то необязательно указывать конфигурацию ZooKeeper вconfig_spec
: эта конфигурация не будет применена. -
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
. Один параметр содержит имя отдельной БД. -
user_specs
— настройки пользователей в виде массива элементов. Каждый элемент соответствует отдельному пользователю и имеет следующую структуру:-
name
— имя пользователя. Оно может содержать латинские буквы, цифры, дефис и подчеркивание, но должно начинаться с буквы или подчеркивания. -
password
— пароль пользователя. Длина пароля от 8 до 128 символов. -
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
.
Если вы создаете кластер из нескольких хостов и не используете ClickHouse® Keeper, то для хостов ZooKeeper действуют следующие правила:
-
Если в облачной сети кластера есть подсети в каждой из зон доступности, а настройки хостов ZooKeeper не заданы, то в каждую подсеть будет автоматически добавлено по одному такому хосту.
-
Если подсети в сети кластера есть только в некоторых зонах доступности, то необходимо указать настройки хостов ZooKeeper явно.
-
-
deletion_protection
— защитить кластер, его базы данных и пользователей от непреднамеренного удаления:true
илиfalse
. Значение по умолчанию —false
.Включенная защита от удаления не помешает подключиться вручную и удалить содержимое базы данных.
Идентификатор каталога можно запросить со списком каталогов в облаке.
-
-
Выполните запрос:
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_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