Перейти к основному содержанию

Обзор

Функция Обнаружение кластера в ClickHouse упрощает настройку кластера, позволяя узлам автоматически обнаруживать и регистрировать себя без необходимости явно задавать их в конфигурационных файлах. Это особенно полезно, когда ручное определение каждого узла становится слишком трудоёмким.
Обнаружение кластера — экспериментальная возможность, которая может быть изменена или удалена в будущих версиях. Чтобы включить её, добавьте параметр allow_experimental_cluster_discovery в конфигурационный файл:

Конфигурация удалённых серверов

Традиционная ручная настройка

Традиционно в ClickHouse каждый сегмент и каждая реплика в кластере должны были задаваться в конфигурации вручную:

Использование Обнаружения кластера

С Обнаружением кластера вместо явного определения каждого узла достаточно указать путь в ZooKeeper. Все узлы, зарегистрированные по этому пути в ZooKeeper, будут автоматически обнаружены и добавлены в кластер.
Если вы хотите указать номер сегмента для определённого узла, добавьте тег <shard> в раздел <discovery>: для node1 и node2:
для node3 и node4:

Режим наблюдателя

Узлы, настроенные в режиме наблюдателя, не будут регистрироваться как реплики. Они будут лишь отслеживать и обнаруживать другие активные реплики в кластере, не принимая в его работе активного участия. Чтобы включить режим наблюдателя, добавьте тег <observer/> в раздел <discovery>:

Обнаружение кластеров

Иногда может потребоваться добавлять и удалять не только хосты в кластерах, но и сами кластеры. Для этого можно использовать узел <multicluster_root_path> с корневым путём для нескольких кластеров:
В этом случае, когда какой-либо другой хост регистрируется по пути /clickhouse/discovery/some_new_cluster, будет добавлен кластер с именем some_new_cluster. Вы можете использовать оба механизма одновременно: хост может зарегистрироваться в кластере my_cluster и обнаруживать любые другие кластеры:
Ограничения:
  • Нельзя использовать одновременно <path> и <multicluster_root_path> в одном поддереве remote_servers.
  • <multicluster_root_path> можно использовать только с <observer/>.
  • Последняя часть path из Keeper используется как имя кластера, а при регистрации имя берётся из XML-тега.

Сценарии использования и ограничения

При добавлении или удалении узлов по указанному пути в ZooKeeper они автоматически обнаруживаются или исключаются из кластера без необходимости изменять конфигурацию или перезапускать сервер. Однако эти изменения затрагивают только конфигурацию кластера, но не данные и не существующие базы данных и таблицы. Рассмотрим следующий пример кластера из 3 узлов:
Затем мы добавляем в кластер новый узел, запуская его с той же записью в разделе remote_servers файла конфигурации:
Четвёртый узел входит в кластер, но таблица event_table по-прежнему существует только на первых трёх узлах:
Если вам нужно, чтобы таблицы реплицировались на всех узлах, вы можете использовать движок базы данных Replicated как альтернативу обнаружению кластера.
Последнее изменение 12 июня 2026 г.