Изменение сервиса координации со встроенного ClickHouse® Keeper на ClickHouse® Keeper на отдельных хостах
Если в качестве сервиса координации используется встроенный ClickHouse® Keeper, вы можете изменить его на ClickHouse® Keeper на отдельных хостах. После включения ClickHouse® Keeper на отдельных хостах его нельзя выключить или переключить обратно на встроенный ClickHouse® Keeper.
Важно
Хосты ClickHouse® Keeper учитываются в расчете использованной квоты ресурсов
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
Чтобы изменить сервис координации:
-
Посмотрите описание команды:
yc managed-clickhouse cluster add-zookeeper --help -
Укажите параметры хоста в команде:
yc managed-clickhouse cluster add-zookeeper \ --name <имя_кластера> \ --resource-preset <класс_хоста> \ --disk-type <тип_диска> \ --disk-size <размер_хранилища> \ --host type=keeper,` `zone-id=<зона_доступности>,` `subnet-id=<идентификатор_подсети> \ --convert-tables-to-replicated <конвертировать_таблицы>Где:
-
--resource-preset— класс хоста. -
--disk-type— тип диска. -
--disk-size— размер хранилища в байтах. -
--host— параметры хоста:-
type— тип хоста:keeper. -
zone-id— зона доступности. -
subnet-id— идентификатор подсети. Его необходимо указывать, если в выбранной зоне доступности создано две и более подсетей.
Вы можете добавить сразу несколько хостов. Для каждого хоста необходимо указать отдельный флаг
--host. -
-
--convert-tables-to-replicated— преобразовать нереплицируемые таблицы в реплицируемые.
Имя кластера можно запросить со списком кластеров в каталоге.
-
Чтобы изменить сервис координации:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Воспользуйтесь методом Cluster.AddZookeeper и выполните запрос, например с помощью cURL
:-
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "resources": { "resourcePresetId": "<класс_хоста>", "diskSize": "<размер_хранилища>", "diskTypeId": "<тип_диска>" }, "hostSpecs": [ { "zoneId": "<зона_доступности>", "type": "KEEPER", "subnetId": "<идентификатор_подсети>" } ], "convertTablesToReplicated": <конвертировать_таблицы> }Где:
-
resources— конфигурация хоста:resourcePresetId— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePreset.list.diskSize— размер хранилища в байтах.diskTypeId— тип диска.
-
hostSpecs— настройки хостов в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
zoneId— зона доступности. -
type— тип хоста:KEEPER. -
subnetId— идентификатор подсети.
-
-
convertTablesToReplicated— преобразовать нереплицируемые таблицы в реплицируемые.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Выполните запрос:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --header "Content-Type: application/json" \ --url 'https://mdb.api.cloud.yandex.net/managed-clickhouse/v1/clusters/<идентификатор_кластера>:addZookeeper' \ --data '@body.json'
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
Чтобы изменить сервис координации:
-
Получите IAM-токен для аутентификации в API и поместите токен в переменную среды окружения:
export IAM_TOKEN="<IAM-токен>" -
Клонируйте репозиторий cloudapi
:cd ~/ && git clone --depth=1 https://github.com/yandex-cloud/cloudapiДалее предполагается, что содержимое репозитория находится в директории
~/cloudapi/. -
Воспользуйтесь вызовом ClusterService.AddZookeeper и выполните запрос, например с помощью gRPCurl
:-
Создайте файл
body.jsonи добавьте в него следующее содержимое:{ "cluster_id": "<идентификатор_кластера>", "resources": { "resource_preset_id": "<класс_хоста>", "disk_size": "<размер_хранилища>", "disk_type_id": "<тип_диска>" }, "host_specs": [ { "zone_id": "<зона_доступности>", "type": "KEEPER", "subnet_id": "<идентификатор_подсети>", } ], "convert_tables_to_replicated": <конвертировать_таблицы> }Где:
-
resources— конфигурация хоста:resource_preset_id— идентификатор класса хостов. Список доступных классов хостов с их идентификаторами можно запросить с помощью метода ResourcePresetService.List.disk_size— размер хранилища в байтах.disk_type_id— тип диска.
-
host_specs— настройки хостов в виде массива элементов. Каждый элемент соответствует отдельному хосту и имеет следующую структуру:-
zone_id— зона доступности. -
type— тип хоста:KEEPER. -
subnet_id— идентификатор подсети.
-
-
convertTablesToReplicated— преобразовать нереплицируемые таблицы в реплицируемые.
Идентификатор кластера можно запросить со списком кластеров в каталоге.
-
-
Выполните запрос:
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.addZookeeper \ < body.json
-
-
Убедитесь, что запрос был выполнен успешно, изучив ответ сервера.
ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc