Обнаружение кластера
Обзор
Функция обнаружения кластера в ClickHouse упрощает конфигурацию кластера, позволяя узлам автоматически обнаруживать и регистрировать себя без необходимости явного определения в конфигурационных файлах. Это особенно полезно в случаях, когда ручное определение каждого узла становится обременительным.
Обнаружение кластера является экспериментальной функцией и может быть изменено или удалено в будущих версиях.
Чтобы включить его, добавьте настройку allow_experimental_cluster_discovery
в ваш файл конфигурации:
Конфигурация удаленных серверов
Традиционная ручная конфигурация
Традиционно в ClickHouse каждый шард и реплика в кластере должны были быть указаны вручную в конфигурации:
Использование обнаружения кластера
С помощью обнаружения кластера, вместо явного определения каждого узла, вы просто указываете путь в ZooKeeper. Все узлы, которые регистрируются под этим путем в ZooKeeper, будут автоматически обнаружены и добавлены в кластер.
Если вы хотите указать номер шарда для конкретного узла, вы можете включить тег <shard>
в разделе <discovery>
:
для node1
и node2
:
для node3
и node4
:
Режим наблюдателя
Узлы, настроенные в режиме наблюдателя, не будут регистрироваться как реплики. Они будут только наблюдать и обнаруживать другие активные реплики в кластере без активного участия.
Чтобы включить режим наблюдателя, добавьте тег <observer/>
в раздел <discovery>
:
Сценарии использования и ограничения
Поскольку узлы добавляются или удаляются из указанного пути ZooKeeper, они автоматически обнаруживаются или удаляются из кластера без необходимости в изменениях конфигурации или перезагрузке сервера.
Тем не менее, изменения затрагивают только конфигурацию кластера, а не данные или существующие базы данных и таблицы.
Рассмотрим следующий пример с кластером из 3 узлов:
Затем мы добавляем новый узел в кластер, запуская новый узел с той же записью в разделе remote_servers
в файле конфигурации:
Четвертый узел участвует в кластере, но таблица event_table
все еще существует только на первых трех узлах:
Если вам нужно, чтобы таблицы были реплицированы на всех узлах, вы можете использовать движок базы данных Replicated в качестве альтернативы обнаружению кластера.