ClickHouse Keeper
ClickHouse Keeper представляет собой полнофункциональную замену Apache ZooKeeper, разработанную специально для координации и управления кластерами ClickHouse®. Решение обеспечивает полную совместимость с клиентским протоколом ZooKeeper и использует ту же модель данных, предлагая при этом значительные улучшения в производительности и функциональности.
Упрощенная установка и эксплуатация
- Реализован на языке C++ вместо Java, что обеспечивает более эффективное использование ресурсов
- Может работать как встроенным в ClickHouse®, так и в автономном режиме.
- Использует меньше памяти для того же объема данных по сравнению с ZooKeeper.
Оптимизированное хранение данных
- Снимки состояния и логи занимают значительно меньше дискового пространства благодаря улучшенному сжатию.
- Отсутствует ограничение на размер пакета и данных узла по умолчанию — в ZooKeeper ограничение составляет 1 МБ.
- Нет проблемы переполнения ZXID, которая в ZooKeeper требует перезапуска каждые 2 миллиарда транзакций.
Повышенная производительность и надежность
- Более быстрое восстановление после сетевых разделений благодаря использованию улучшенного протокола распределенного консенсуса.
- Дополнительные гарантии консистентности: обеспечивает те же гарантии консистентности, что и ZooKeeper — линеаризуемые записи и строгий порядок операций в рамках одной сессии.
- Опционально предоставляет линеаризуемые чтения через настройку
quorum_reads.
Ключевые функции координации
ClickHouse Keeper выполняет критически важные функции в экосистеме ClickHouse®:
- Обеспечивает систему координации для репликации данных в самоуправляемых кластерах ClickHouse®.
- Осуществляет автоматическую дедупликацию вставок для реплицируемых таблиц семейства движков MergeTree на основе хеш-сумм блоков.
- Предоставляет консенсус относительно имен частей, назначения слияний частей и мутаций конкретным узлам кластера.
- Используется движком таблиц KeeperMap, который позволяет использовать Keeper как консистентное хранилище «ключ-значение».
- Отслеживает обработанные файлы в движке таблиц S3Queue.
- Хранит все метаданные движка Replicated Database.
- Координирует создание резервных копий с использованием конструкции ON CLUSTER.
- Служит хранилищем для пользовательских функций и информации контроля доступа.
- Используется как общее центральное хранилище для всех метаданных в ClickHouse Cloud.
ClickHouse Keeper представляет собой надежное и эффективное решение для координации распределенных систем, специально оптимизированное для работы с ClickHouse®.
-
Создайте облачную сеть и подсеть, в которой будет находиться виртуальная машина (ВМ).
-
Создайте группу безопасности для ВМ
vm-keeperв созданной облачной сети и настройте правила:Направление трафика Описание Диапазон портов Протокол Источник / Назначение CIDR-блоки ВходящийCH Keeper9181TCPCIDR0.0.0.0/0ВходящийSSH22TCPCIDR0.0.0.0/0ИсходящийAny Egress0-65535AnyCIDR0.0.0.0/0 -
Создайте группу безопасности для ВМ
vm-testв той же сети и настройте правила:Направление трафика Описание Диапазон портов Протокол Источник / Назначение CIDR-блоки ВходящийHTTP80TCPCIDR0.0.0.0/0ВходящийSSH22TCPCIDR0.0.0.0/0ИсходящийAny Egress0-65535AnyCIDR0.0.0.0/0 -
Получите пару SSH-ключей для подключения к ВМ.
-
Установите и настройте приложение.
-
В Marketplace найдите продукт ClickHouse Keeper и нажмите Создать ВМ.
-
В блоке Сетевые настройки укажите облачную сеть, подсеть и группу безопасности для ВМ
vm-keeper, созданные ранее. -
В блоке Доступ укажите имя пользователя и публичный SSH-ключ для подключения к ВМ.
-
В блоке Общая информация укажите имя ВМ —
vm-keeper. -
Завершите создание ВМ и нажмите Создать ВМ.
Дождитесь создания ВМ и установки приложения — это может занять 10 минут.
-
-
Узнайте публичный IP-адрес ВМ
vm-keeper. -
Подключитесь к ВМ
vm-keeperпо SSH. Для этого используйте имя пользователя, которое вы задали при создании ВМ, и закрытый SSH-ключ, созданный ранее. -
Добавьте в файл
/etc/clickhouse-keeper/keeper_config.xmlсразу после строки<clickhouse>:<listen_host>0.0.0.0</listen_host>В продакшн-среде не рекомендуется использовать адрес
0.0.0.0. -
Проверьте, что ClickHouse Keeper запущен:
sudo systemctl status clickhouse-keeperРезультат:
● clickhouse-keeper.service - ClickHouse Keeper - zookeeper compatible distributed coordination server Loaded: loaded (/usr/lib/systemd/system/clickhouse-keeper.service; enabled; preset: enabled) Active: active (running) since Wed 2026-03-04 19:15:51 UTC; 17min ago ...Если ClickHouse Keeper не запустился, запустите его вручную, выполнив команду:
sudo systemctl start clickhouse-keeper
-
-
Создайте и настройте ВМ для тестирования работы ClickHouse Keeper.
-
При создании ВМ укажите параметры:
- В блоке Образ загрузочного диска на вкладке Marketplace выберите образ Ubuntu или Debian, например
Ubuntu 24.04. - В блоке Сетевые настройки укажите облачную сеть, подсеть и группу безопасности для ВМ
vm-test, созданные ранее. - В блоке Доступ укажите имя пользователя и публичный SSH-ключ для подключения к ВМ.
- В блоке Общая информация укажите имя ВМ —
vm-test.
- В блоке Образ загрузочного диска на вкладке Marketplace выберите образ Ubuntu или Debian, например
-
Узнайте публичный IP-адрес ВМ
vm-test. -
Подключитесь к ВМ
vm-testпо SSH. Для этого используйте имя пользователя, которое вы задали при создании ВМ, и закрытый SSH-ключ, созданный ранее. -
Установите ClickHouse Server и ClickHouse Client, выполнив инструкцию Install ClickHouse on Debian/Ubuntu.
-
Создайте файл
/etc/clickhouse-server/config.d/zookeeper.xmlи добавьте в него следующий код:<clickhouse> <zookeeper> <node> <host>публичный_IP-адрес_ВМ</host> <port>9181</port> </node> </zookeeper> </clickhouse>В поле
hostукажите публичный IP-адресvm-keeper. -
Запустите сервер, выполнив команду:
sudo systemctl start clickhouse-server -
Включите режим выполнения SQL-запросов, выполнив команду:
clickhouse-client -
Выполните запрос:
SELECT hostname() AS clickhouse_server, zookeeperSessionUptime() AS keeper_session_secondsРезультат:
Query id: 040b6642-faf0-4a2b-9c79-50bb******** ┌─clickhouse_server─┬─keeper_session_seconds─┐ 1. │ vm-test │ 158 │ └───────────────────┴────────────────────────┘ 1 row in set. Elapsed: 0.002 sec.
-
-
Проверьте соединение.
-
Подключитесь к ВМ
vm-keeperпо SSH. -
Выполните команду:
sudo ss -anp | grep :9181Результат:
tcp LISTEN 0 64 *:9181 *:* users:(("clickhouse-keep",pid=806,fd=42)) tcp ESTAB 0 0 [::ffff:10.0.0.30]:9181 [::ffff:62.**.***.***]:58646 users:(("clickhouse-keep",pid=806,fd=37))Успешное выполнение команды означает, что ваш ClickHouse Server на
vm-testподключен к ClickHouse Keeper наvm-keeper.
-
- Координация репликации данных в кластерах ClickHouse®.
- Автоматическая дедупликация вставок для реплицируемых таблиц MergeTree.
- Реализация очередей задач с использованием движка таблиц KeeperMap.
- Обеспечение доставки exactly-once в Kafka Connect Sink.
- Отслеживание обработанных файлов в S3Queue.
- Хранение метаданных для Replicated Database.
- Координация создания резервных копий кластера.
- Хранение пользовательских функций и настроек контроля доступа.
- Центральное хранилище метаданных для ClickHouse Cloud.
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.