Управление хостами ClickHouse®
Вы можете выполнить следующие действия над хостами ClickHouse®:
- получить список хостов в кластере;
- создать хост;
- изменить настройки ClickHouse® для хоста;
- перезагрузить хост;
- удалить хост.
О том, как перенести хосты ClickHouse® в другую зону доступности, читайте в инструкции.
Важно
Если вы создали кластер без поддержки ClickHouse® Keeper, то прежде чем добавлять новые хосты в любой из шардов, добавьте не менее трех хостов ZooKeeper.
Получить список хостов в кластере
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы получить список хостов в кластере, выполните команду:
yc managed-clickhouse host list \
--cluster-name=<имя_кластера>
+----------------------------+--------------+---------+--------+---------------+
| NAME | CLUSTER ID | ROLE | HEALTH | ZONE ID |
+----------------------------+--------------+---------+--------+---------------+
| rc1b...mdb.yandexcloud.kz | c9qp71dk1... | MASTER | ALIVE | kz1-b |
| rc1a...mdb.yandexcloud.kz | c9qp71dk1... | REPLICA | ALIVE | kz1-a |
+----------------------------+--------------+---------+--------+---------------+
Имя кластера можно запросить со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.ListHosts и выполните запрос, например, с помощью cURL
:curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts'Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.ListHosts и выполните запрос, например, с помощью gRPCurl
: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 '{ "cluster_id": "<идентификатор_кластера>" }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.ListHostsИдентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Создать хост
Количество хостов в кластерах Managed Service for ClickHouse® ограничено квотами на количество CPU и объем памяти, которые доступны кластерам БД в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
Вы можете создать сразу несколько хостов в кластере.
-
Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. -
Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
-
Нажмите кнопку Создать хосты ClickHouse.
-
Укажите параметры хоста:
- Зону доступности.
- Подсеть (если нужной подсети в списке нет, создайте ее).
- Имя шарда.
- Включите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
-
(Опционально) Нажмите кнопку Создать хост, чтобы добавить дополнительные хосты, и укажите их параметры.
-
В блоке Дополнительные настройки:
- Копировать схему данных — если схема данных одинакова на всех хостах-репликах кластера, включите эту опцию, чтобы скопировать схему со случайной реплики на новые хосты.
-
Нажмите кнопку Создать хосты, чтобы создать один или несколько хостов.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы создать один или несколько хостов:
-
Запросите список подсетей кластера, чтобы выбрать подсеть для нового хоста:
yc vpc subnet listРезультат:
+-----------+-----------+------------+---------------+------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +-----------+-----------+------------+---------------+------------------+ | b0cl69... | default-d | enp6rq7... | kz1-d | [172.16.0.0/20] | | e2lkj9... | default-b | enp6rq7... | kz1-b | [10.10.0.0/16] | | e9b0ph... | a-2 | enp6rq7... | kz1-a | [172.16.32.0/20] | | e9b9v2... | default-a | enp6rq7... | kz1-a | [172.16.16.0/20] | +-----------+-----------+------------+---------------+------------------+Если нужной подсети в списке нет, создайте ее.
-
Посмотрите описание команды CLI для создания хостов:
yc managed-clickhouse hosts add --help -
Выполните команду создания хостов.
Укажите в команде один или несколько параметров
--host: по одному параметру на каждый хост, который нужно создать.Команда для создания одного хоста имеет вид:
yc managed-clickhouse hosts add \ --cluster-name=<имя_кластера> \ --host zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети>,` `assign-public-ip=<публичный_доступ_к_хосту>,` `shard-name=<имя_шарда>,` `type=clickhouseГде
assign-public-ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.Чтобы скопировать схему данных со случайной реплики на новый хост, укажите необязательный параметр
--copy-schema.Managed Service for ClickHouse® запустит операцию создания хостов.
Идентификатор подсети необходимо указать, если в зоне доступности больше одной подсети, в противном случае Managed Service for ClickHouse® автоматически выберет единственную подсеть. Имя кластера можно запросить со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Добавьте к описанию кластера Managed Service for ClickHouse® один или несколько блоков
host: по одному блоку на каждый хост, который нужно создать.Единичный блок
hostимеет вид:resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... host { type = "CLICKHOUSE" zone = "<зона_доступности>" subnet_id = "<идентификатор_подсети>" assign_public_ip = <публичный_доступ_к_хосту> } }Где
assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер 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.AddHosts и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:batchCreate' \ --data '{ "hostSpecs": [ { "type": "CLICKHOUSE", "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>", "shardName": "<имя_шарда>", "assignPublicIp": <публичный_доступ_к_хосту> }, { <аналогичный_набор_настроек_для_создаваемого_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_создаваемого_хоста_N> } ], "copySchema": <копирование_схемы_данных> }'Где:
-
hostSpecs— массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:type— тип хоста, всегдаCLICKHOUSEдля хостов ClickHouse®.zoneId— зона доступности.subnetId— идентификатор подсети.shardName— имя шарда.assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.
-
copySchema— параметр, который определяет, копировать ли схему данных со случайной реплики на создаваемые хосты:trueилиfalse.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.AddHosts и выполните запрос, например, с помощью gRPCurl
: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 '{ "cluster_id": "<идентификатор_кластера>", "host_specs": [ { "type": "CLICKHOUSE", "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>", "shard_name": "<имя_шарда>", "assign_public_ip": <публичный_доступ_к_хосту> }, { <аналогичный_набор_настроек_для_создаваемого_хоста_2> }, { ... }, { <аналогичный_набор_настроек_для_создаваемого_хоста_N> } ], "copy_schema": <копировать_ли_схему_данных> }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.AddHostsГде:
-
host_specs— массив, содержащий настройки создаваемых хостов. Один элемент массива содержит настройки для одного хоста и имеет следующую структуру:type— тип хоста, всегдаCLICKHOUSEдля хостов ClickHouse®.zone_id— зона доступности.subnet_id— идентификатор подсети.shard_name— имя шарда.assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.
-
copy_schema— параметр, который определяет, копировать ли схему данных со случайной реплики на создаваемые хосты:trueилиfalse.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если после создания хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.
Используйте опцию копирования схемы данных только в том случае, когда схема одинакова на всех хостах-репликах кластера.
Изменить хост
Для каждого хоста в кластере Managed Service for ClickHouse® можно изменить настройки публичного доступа.
Важно
Чтобы повысить безопасность кластера с включенным публичным доступом к хостам, укажите в правилах группы безопасности кластера только доверенные IP-адреса или подсети. Подробнее см. в разделе Настройка групп безопасности.
Чтобы изменить параметры хоста в кластере:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- Нажмите на значок
в строке нужного хоста и выберите пункт Редактировать. - В открывшемся окне включите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы изменить параметры хоста, выполните команду:
yc managed-clickhouse host update <имя_хоста> \
--cluster-name=<имя_кластера> \
--assign-public-ip=<публичный_доступ_к_хосту>
Где assign-public-ip — доступность хоста из интернета по публичному IP-адресу: true или false.
Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
В блоке
hostнужного хоста добавьте параметрassign_public_ipили измените его значение.resource "yandex_mdb_clickhouse_cluster" "<имя_кластера>" { ... host { ... assign_public_ip = <публичный_доступ_к_хосту> } ... }Где
assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.UpdateHosts и выполните запрос, например, с помощью cURL
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
updateMask(одной строкой через запятую).curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:batchUpdate' \ --data '{ "updateHostSpecs": [ { "hostName": "<имя_хоста>", "updateMask": "assignPublicIp", "assignPublicIp": <публичный_доступ_к_хосту> } ] }'Где
updateHostSpecs[]— перечень хостов, которые надо изменить, и их параметров. Структура отдельного элемента:-
hostName— имя хоста, которое можно запросить со списком хостов в кластере. -
updateMask— перечень изменяемых параметров в одну строку через запятую.В данном случае указан только один параметр:
assignPublicIp. -
assignPublicIp— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.UpdateHosts и выполните запрос, например, с помощью gRPCurl
:Важно
Метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре
update_mask(в виде массива строкpaths[]).Формат перечисления настроек
"update_mask": { "paths": [ "<настройка_1>", "<настройка_2>", ... "<настройка_N>" ] }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 '{ "cluster_id": "<идентификатор_кластера>", "update_host_specs": [ { "host_name": "<имя_хоста>", "update_mask": { "paths": [ "assign_public_ip" ] }, "assign_public_ip": <публичный_доступ_к_хосту> }] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.UpdateHostsГде
update_host_specs[]— перечень хостов, которые надо изменить, и их параметров. Структура отдельного элемента:-
host_name— имя хоста, которое можно запросить со списком хостов в кластере. -
update_mask— перечень изменяемых параметров в виде массива строкpaths[].В данном случае указан только один параметр:
assign_public_ip. -
assign_public_ip— доступность хоста из интернета по публичному IP-адресу:trueилиfalse.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Важно
Если после изменения хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.
Перезагрузить хост
Перезагрузка хостов может понадобиться, если нужно экстренно устранить такие проблемы, как:
- перерасход ресурсов;
- утечка памяти;
- взаимоблокировка (deadlock) между запросами;
- зависание операций и внутренних процессов ClickHouse®.
Чтобы перезагрузить один хост:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- В строке нужного хоста нажмите на значок
и выберите пункт Перезагрузить. - В открывшемся окне включите опцию Я перезагружаю хост и нажмите кнопку Подтвердить.
Чтобы перезагрузить несколько хостов сразу:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- Выберите хосты, которые хотите перезагрузить, и нажмите Перезагрузить в нижней части экрана.
- В открывшемся окне нажмите кнопку Подтвердить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы перезагрузить один или несколько хостов, выполните команду, передав их имена. Используйте пробел в качестве разделителя.
Команда для перезагрузки одного хоста выглядит так:
yc managed-clickhouse host restart <имя_хоста> \
--cluster-name=<имя_кластера>
Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.RestartHosts и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:restartHosts' \ --data '{ "hostNames": [ <перечень_имен_хостов> ] }'Где
hostNames— массив строк. Каждая строка — имя хоста, который нужно перезагрузить. Имена хостов можно запросить со списком хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.RestartHosts и выполните запрос, например, с помощью gRPCurl
: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 '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ <перечень_имен_хостов> ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.RestartHostsГде
host_names— массив строк. Каждая строка — имя хоста, который нужно перезагрузить. Имена хостов можно запросить со списком хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Удалить хост
Важно
Нельзя удалить хост из кластера или шарда, если достигнут соответствующий лимит на минимальное количество хостов.
Нельзя удалить хосты, на которых размещается ClickHouse® Keeper, если при создании кластера была включена поддержка этого механизма репликации.
Нельзя удалить хосты разных типов (ClickHouse® и ZooKeeper) за один раз.
Чтобы удалить один хост:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- Нажмите на значок
в строке нужного хоста и выберите пункт Удалить. - В открывшемся окне включите опцию Я удаляю хост и нажмите кнопку Подтвердить.
Чтобы удалить несколько хостов сразу:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- Выберите хосты, которые хотите удалить, и нажмите Удалить в нижней части экрана.
- В открывшемся окне нажмите кнопку Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Чтобы удалить один или несколько хостов из кластера, выполните команду, передав нужные имена хостов. Используйте пробел в качестве разделителя.
Команда для удаления одного хоста имеет вид:
yc managed-clickhouse hosts delete --cluster-name=<имя_кластера> \
<имя_хоста>
Имена хостов можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, см. в разделе Создание кластера.
-
Удалите из описания кластера Managed Service for ClickHouse® один или несколько блоков
hostс типомCLICKHOUSE. -
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Введите слово
yesи нажмите Enter.-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Подробнее см. в документации провайдера Terraform.
Ограничения по времени
Провайдер 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.DeleteHosts и выполните запрос, например, с помощью cURL
:curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>/hosts:batchDelete' \ --data '{ "hostNames": [ <перечень_имен_хостов> ] }'Где
hostNames— массив строк. Каждая строка — имя хоста, который нужно удалить. Имена хостов можно запросить со списком хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.DeleteHosts и выполните запрос, например, с помощью gRPCurl
: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 '{ "cluster_id": "<идентификатор_кластера>", "host_names": [ <перечень_имен_хостов> ] }' \ mdb.api.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.DeleteHostsГде
host_names— массив строк. Каждая строка — имя хоста, который нужно удалить. Имена хостов можно запросить со списком хостов в кластере.Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc