Управление хостами кластера ClickHouse®
Вы можете выполнить следующие действия над хостами ClickHouse®:
- получить список хостов в кластере;
- добавить хост;
- изменить настройки ClickHouse® для хоста;
- перезапустить хост;
- удалить хост.
О том, как перенести хосты ClickHouse® в другую зону доступности, читайте в инструкции.
Важно
Если вы создали кластер без поддержки ClickHouse® Keeper, то прежде чем добавлять новые хосты в любой из шардов, включите отказоустойчивость с использованием хостов ZooKeeper.
Получить список хостов в кластере
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера, затем выберите вкладку Хосты.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы получить список хостов в кластере, выполните команду:
yc managed-clickhouse host list \
--cluster-name=<имя_кластера>
+----------------------------+--------------+---------+--------+---------------+
| NAME | CLUSTER ID | ROLE | HEALTH | ZONE ID |
+----------------------------+--------------+---------+--------+---------------+
| rc1b...mdb.yandexcloud.net | c9qp71dk1... | MASTER | ALIVE | ru-central1-b |
| rc1a...mdb.yandexcloud.net | c9qp71dk1... | REPLICA | ALIVE | ru-central1-a |
+----------------------------+--------------+---------+--------+---------------+
Имя кластера можно запросить со списком кластеров в каталоге.
Чтобы получить список хостов в кластере, воспользуйтесь методом REST API listHosts для ресурса Cluster или вызовом gRPC API ClusterService/ListHosts и передайте в запросе идентификатор кластера в параметре clusterId
.
Чтобы узнать идентификатор кластера, получите список кластеров в каталоге.
Добавить хост
Количество хостов в кластерах Managed Service for ClickHouse® ограничено квотами на количество CPU и объем памяти, которые доступны кластерам БД в вашем облаке. Чтобы проверить используемые ресурсы, откройте страницу Квоты
-
Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. -
Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
-
Нажмите кнопку
Добавить хост. -
Укажите параметры хоста:
- Зону доступности.
- Подсеть (если нужной подсети в списке нет, создайте ее).
- Выберите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
- Имя шарда.
- Выберите опцию Копировать схему данных, чтобы скопировать схему со случайной реплики на новый хост.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы добавить хост в кластер:
-
Запросите список подсетей кластера, чтобы выбрать подсеть для нового хоста:
yc vpc subnet list
Результат:
+-----------+-----------+------------+---------------+------------------+ | ID | NAME | NETWORK ID | ZONE | RANGE | +-----------+-----------+------------+---------------+------------------+ | b0cl69... | default-d | enp6rq7... | ru-central1-d | [172.16.0.0/20] | | e2lkj9... | default-b | enp6rq7... | ru-central1-b | [10.10.0.0/16] | | e9b0ph... | a-2 | enp6rq7... | ru-central1-a | [172.16.32.0/20] | | e9b9v2... | default-a | enp6rq7... | ru-central1-a | [172.16.16.0/20] | +-----------+-----------+------------+---------------+------------------+
Если нужной подсети в списке нет, создайте ее.
-
Посмотрите описание команды CLI для добавления хостов:
yc managed-clickhouse host add --help
-
Выполните команду добавления хоста:
yc managed-clickhouse host 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
.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 минут
}
}
Чтобы добавить хост, воспользуйтесь методом REST API addHosts для ресурса Cluster или вызовом gRPC API ClusterService/AddHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Настройки нового хоста в одном или нескольких параметрах
hostSpecs
.
Чтобы скопировать схему данных со случайной реплики на новый хост, передайте в запросе параметр copySchema
со значением true
.
Важно
Если после добавления хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.
Используйте опцию копирования схемы данных только в том случае, когда схема одинакова на всех хостах-репликах кластера.
Изменить хост
Для каждого хоста в кластере Managed Service for ClickHouse® можно изменить настройки публичного доступа.
Чтобы изменить параметры хоста в кластере:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Хосты.
- Нажмите на значок
в строке нужного хоста и выберите пункт Редактировать. - Включите опцию Публичный доступ, если хост должен быть доступен извне Yandex Cloud.
- Нажмите кнопку Сохранить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --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
Чтобы изменить параметры хоста, воспользуйтесь методом REST API updateHosts для ресурса Cluster или вызовом gRPC API ClusterService/UpdateHosts и передайте в запросе:
- Идентификатор кластера, в котором нужно изменить хост, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя хоста, который нужно изменить, в параметре
updateHostSpecs.hostName
. Чтобы узнать имя, получите список хостов в кластере. - Настройки публичного доступа к хосту в параметре
updateHostSpecs.assignPublicIp
. - Список полей конфигурации кластера, подлежащих изменению (в данном случае —
assignPublicIp
), в параметреupdateMask
.
Важно
Этот метод API переопределит все параметры изменяемого объекта, которые не были явно переданы в запросе, на значения по умолчанию. Чтобы избежать этого, перечислите настройки, которые вы хотите изменить, в параметре updateMask
(одной строкой через запятую).
Важно
Если после изменения хоста к нему невозможно подключиться, убедитесь, что группа безопасности кластера настроена корректно для подсети, в которую помещен хост.
Перезапустить хост
Перезапуск хостов может понадобиться, если нужно экстренно устранить такие проблемы, как:
- перерасход ресурсов;
- утечка памяти;
- взаимоблокировка (deadlock) между запросами;
- зависание операций и внутренних процессов ClickHouse®.
Чтобы перезапустить хост:
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и перейдите на вкладку Хосты.
- В строке нужного хоста нажмите на значок
и выберите пункт Перезагрузить. - Подтвердите перезагрузку хоста.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы перезапустить хост, выполните команду:
yc managed-clickhouse host restart <имя_хоста> \
--cluster-name=<имя_кластера>
Имя хоста можно запросить со списком хостов в кластере, имя кластера — со списком кластеров в каталоге.
Чтобы перезапустить хост, воспользуйтесь методом REST API restartHosts для ресурса Cluster или вызовом gRPC API ClusterService/RestartHosts и передайте в запросе:
- Идентификатор кластера, в котором нужно изменить хост, в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя хоста, который надо перезапустить, в параметре
hostNames
. Чтобы узнать имя хоста, получите список хостов в кластере.
Удалить хост
Вы можете удалить хост из кластера ClickHouse®, если кластер состоит из трех и более хостов.
Примечание
Кластер, созданный с поддержкой механизма репликации ClickHouse® Keeper, должен состоять из трех или более хостов.
- Перейдите на страницу каталога
и выберите сервис Managed Service for ClickHouse. - Нажмите на имя нужного кластера и выберите вкладку Хосты.
- Нажмите на значок
в строке нужного хоста и выберите пункт Удалить.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
Чтобы удалить хост из кластера, выполните команду:
yc managed-clickhouse host 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 минут
}
}
Чтобы удалить хост, воспользуйтесь методом REST API deleteHosts для ресурса Cluster или вызовом gRPC API ClusterService/DeleteHosts и передайте в запросе:
- Идентификатор кластера в параметре
clusterId
. Чтобы узнать идентификатор, получите список кластеров в каталоге. - Имя или массив имен удаляемых хостов в параметре
hostNames
.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc