Изменение сервиса координации с ZooKeeper на ClickHouse® Keeper на отдельных хостах
Вы можете перейти с сервиса координации ZooKeeper на ClickHouse® Keeper на отдельных хостах. Обратный переход с ClickHouse® Keeper на ZooKeeper не поддерживается.
Важно
-
На время выполнения операции кластер будет работать в режиме read-only.
-
Хосты ClickHouse® Keeper учитываются в расчете использованной квоты ресурсов
в облаке и в расчете стоимости кластера.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы изменить сервис координации с ZooKeeper на ClickHouse® Keeper:
-
Посмотрите описание команды:
yc managed-clickhouse cluster migrate-to-keeper --help -
Измените сервис координации:
yc managed-clickhouse cluster migrate-to-keeper <имя_или_идентификатор_кластера> \ --resource-preset <класс_хоста> \ --disk-type <тип_диска> \ --disk-size <размер_хранилища_ГБ> \ --host zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети> \ --allow-degradation-to-read-onlyГде:
-
<имя_или_идентификатор_кластера>— имя или идентификатор кластера, которые можно получить со списком кластеров в каталоге. -
--resource-preset— класс хоста. -
--disk-type— тип диска. -
--disk-size— размер хранилища в гигабайтах. -
--host— настройки хоста. Параметр задается для каждого хоста отдельно и имеет следующую структуру:zone-id— зона доступности.subnet-id— идентификатор подсети.
-
--allow-degradation-to-read-only— переход кластера в режим read-only на время изменения сервиса координации. Обязательный параметр.
-
Terraform
Terraform распространяется под лицензией Business Source License
Подробная информация о ресурсах провайдера в документации на сайте Terraform
Чтобы изменить сервис координации с ZooKeeper на ClickHouse® Keeper:
-
Откройте актуальный конфигурационный файл Terraform с планом инфраструктуры.
О том, как создать такой файл, в разделе Создание кластера.
-
В описание ресурса кластера внесите следующие изменения:
- Добавьте параметр
allow_degradation_to_read_only = true, чтобы разрешить переход кластера в режим read-only на время изменения сервиса координации. Иначе операция не будет выполнена. - Замените хосты ZooKeeper на хосты ClickHouse® Keeper.
- Измените конфигурацию хостов в блоке
zookeeper.resources.
Пример конфигурационного файла:
resource "yandex_mdb_clickhouse_cluster_v2" "<локальное_имя_кластера>" { ... allow_degradation_to_read_only = true zookeeper = { resources = { resource_preset_id = "<класс_хоста>" disk_type_id = "<тип_диска>" disk_size = <размер_хранилища_ГБ> } } hosts = { ... <имя_хоста_1> = { type = "KEEPER" zone = "kz1-a" subnet_id = yandex_vpc_subnet.<имя_подсети_в_зоне_kz1-a>.id } <имя_хоста_2> = { type = "KEEPER" zone = "kz1-b" subnet_id = yandex_vpc_subnet.<имя_подсети_в_зоне_kz1-b>.id } <имя_хоста_3> = { type = "KEEPER" zone = "kz1-d" subnet_id = yandex_vpc_subnet.<имя_подсети_в_зоне_kz1-d>.id } } }Подробнее о ресурсе в документации провайдера Terraform.
- Добавьте параметр
-
Проверьте корректность настроек.
-
В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.
-
Выполните команду:
terraform validateЕсли в файлах конфигурации есть ошибки, Terraform на них укажет.
-
-
Подтвердите изменение ресурсов.
-
Выполните команду для просмотра планируемых изменений:
terraform planЕсли конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply -
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
-
Ограничения по времени
Провайдер Terraform ограничивает время на выполнение операций с кластером Managed Service for ClickHouse®:
- создание, в т. ч. путем восстановления из резервной копии, — 60 минут;
- изменение — 90 минут;
- удаление — 30 минут.
Операции, длящиеся дольше указанного времени, прерываются.
Как изменить эти ограничения?
Добавьте к описанию кластера блок timeouts, например:
resource "yandex_mdb_clickhouse_cluster_v2" "<имя_кластера>" {
...
timeouts = {
create = "1h30m" # Полтора часа
update = "2h" # 2 часа
delete = "30m" # 30 минут
}
}
Чтобы изменить сервис координации с ZooKeeper на ClickHouse® Keeper:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.MigrateToKeeper и выполните запрос, например с помощью cURL
:-
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "resources": { "resourcePresetId": "<класс_хоста>", "diskSize": "<размер_хранилища_в_байтах>", "diskTypeId": "<тип_диска>" }, "hostSpecs": [ { "type": "KEEPER", "zoneId": "<зона_доступности>", "subnetId": "<идентификатор_подсети>" } ], "allowDegradationToReadOnly": true }Где:
-
resources— конфигурация хостов:resourcePresetId— класс хоста. Список доступных классов хостов можно получить с помощью метода ResourcePreset.list.diskSize— размер хранилища в байтах.diskTypeId— тип диска.
-
hostSpecs— настройки хостов в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
type— тип хоста:KEEPER. -
zoneId— зона доступности. -
subnetId— идентификатор подсети.
-
-
allowDegradationToReadOnly— переход кластера в режим read-only на время изменения сервиса координации:true. Обязательный параметр.
-
-
Выполните запрос:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.yandexcloud.kz/managed-clickhouse/v1/clusters/<идентификатор_кластера>:migrateToKeeper' \ --data '@body.json'Идентификатор кластера можно получить со списком кластеров в каталоге.
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Чтобы изменить сервис координации с ZooKeeper на ClickHouse® Keeper:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.MigrateToKeeper и выполните запрос, например с помощью gRPCurl
:-
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "cluster_id": "<идентификатор_кластера>", "resources": { "resource_preset_id": "<класс_хоста>", "disk_size": "<размер_хранилища_в_байтах>", "disk_type_id": "<тип_диска>" }, "host_specs": [ { "type": "KEEPER", "zone_id": "<зона_доступности>", "subnet_id": "<идентификатор_подсети>" } ], "allow_degradation_to_read_only": true }Где:
-
cluster_id— идентификатор кластера, который можно получить со списком кластеров в каталоге. -
resources— конфигурация хостов:resource_preset_id— класс хоста. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePresetService.List.disk_size— размер хранилища в байтах.disk_type_id— тип диска.
-
host_specs— настройки хостов в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
type— тип хоста:KEEPER. -
zone_id— зона доступности. -
subnet_id— идентификатор подсети.
-
-
allow_degradation_to_read_only— переход кластера в режим read-only на время изменения сервиса координации:true. Обязательный параметр.
-
-
Выполните запрос:
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.yandexcloud.kz:443 \ yandex.cloud.mdb.clickhouse.v1.ClusterService.MigrateToKeeper \ < body.json
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc