Конфигурирование логических кластеров в интерфейсе ADCM
Чтобы организовать распределенное хранение и репликацию данных, а также выполнять распределенные запросы (ON CLUSTER
) на нескольких хостах ADQM, необходимо объединить хосты в логический кластер. Cконфигурировать логический кластер в рамках кластера ADQM можно через интерфейс ADCM — с помощью параметров в секции Cluster configuration на странице конфигурации сервиса ADQMDB.
Автоматическое создание логического кластера при установке ADQM
На этапе предварительной настройки ADQM (перед запуском установки кластера), укажите параметр Replication factor, чтобы автоматически сгруппировать хосты в логический кластер.

Топология кластера сформируется по следующей схеме:
-
Все хосты ADQM разбиваются на группы — шарды.
-
Каждый хост в шарде — это реплика. Количество реплик в шарде определяется значением параметра Replication factor.
-
Если общее количество хостов не делится ровно на указанное значение фактора репликации, то количество хостов-реплик в последнем шарде будет определяться как остаток от деления.
После установки кластера ADQM в секцию remote_servers
конфигурационного файла config.xml будет добавлен логический кластер default_cluster
— эта топология создается один раз и не изменяется при дальнейшей реконфигурации кластера.
Например, если в кластере ADQM 4 хоста (host-1, host-2, host-3, host-4) и параметр Replication factor установлен в 2
, на основе указанного фактора репликации будет сгенерирован логический кластер, включающий два шарда, в каждом из которых по два хоста-реплики:
<remote_servers>
<default_cluster>
<shard>
<internal_replication>true</internal_replication>
<weight>1</weight>
<replica>
<host>host-1</host>
<port>9000</port>
</replica>
<replica>
<host>host-2</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<weight>1</weight>
<replica>
<host>host-3</host>
<port>9000</port>
</replica>
<replica>
<host>host-4</host>
<port>9000</port>
</replica>
</shard>
</default_cluster>
</remote_servers>
Информация о кластере default_cluster
будет добавлена в системную таблицу system.clusters:
SELECT cluster, shard_num, replica_num, host_name FROM system.clusters;
┌─cluster─────────┬─shard_num─┬─replica_num─┬─host_name─┐ │ default_cluster │ 1 │ 1 │ host-1 │ │ default_cluster │ 1 │ 2 │ host-2 │ │ default_cluster │ 2 │ 1 │ host-3 │ │ default_cluster │ 2 │ 2 │ host-4 │ └─────────────────┴───────────┴─────────────┴───────────┘
При создании логического кластера в конфигурационный файл config.xml на каждом хосте также добавляется секция macros
с идентификаторами шарда и реплики для хоста. Например, макросы для host-4:
<macros>
<replica>2</replica>
<shard>2</shard>
</macros>
Макросы используются для автоматической подстановки идентификаторов шарда и реплики, соответствующих хосту, при создании реплицируемых таблиц на кластере (см. пример в статье Типовой кластер).
Конфигурирование дополнительных логических кластеров
Хосты ADQM можно комбинировать в несколько логических кластеров различных топологий (один хост может участвовать в разных логических кластерах).
Чтобы сконфигурировать логический кластер, используйте параметр Cluster Configuration, добавляя необходимые элементы с помощью иконки
:
-
Добавьте новый кластер и укажите его имя.
-
Определите, сколько шардов должно быть в кластере — добавьте элементы в список shards.
Для каждого шарда укажите значения параметров weight и internal_replication (подробнее об этих параметрах в статье Шардирование), а также добавьте хосты-реплики в список replicas.
Конфигурирование логического кластера -
Нажмите Save и выполните действие Reconfig and restart для сервиса ADQMDB, чтобы сохранить настройки.
Описание кластера появится в секции
remote_servers
файла config.xml:<remote_servers> <!-- default_cluster configuration is here --> <cluster_2x1> <shard> <internal_replication>true</internal_replication> <weight>1</weight> <replica> <host>host-1</host> <port>9000</port> </replica> </shard> <shard> <internal_replication>true</internal_replication> <weight>1</weight> <replica> <host>host-2</host> <port>9000</port> </replica> </shard> </cluster_2x1> </remote_servers>
Информация о кластере также будет добавлена в таблицу system.clusters:
SELECT cluster, shard_num, replica_num, host_name FROM system.clusters;
┌─cluster─────────┬─shard_num─┬─replica_num─┬─host_name─┐ │ cluster_2x1 │ 1 │ 1 │ host-1 │ │ cluster_2x1 │ 2 │ 1 │ host-2 │ │ default_cluster │ 1 │ 1 │ host-1 │ │ default_cluster │ 1 │ 2 │ host-2 │ │ default_cluster │ 2 │ 1 │ host-3 │ │ default_cluster │ 2 │ 2 │ host-4 │ └─────────────────┴───────────┴─────────────┴───────────┘
Макросы для всех кластеров кроме default_cluster
формируются с префиксом <cluster_name>_
. Например, для приведенного выше кластера cluster_2x1
в конфигурацию config.xml на хосте host-1 добавятся следующие макросы:
<macros>
<!-- default_cluster macros are here -->
<cluster_2x1_replica>1</cluster_2x1_replica>
<cluster_2x1_shard>1</cluster_2x1_shard>
</macros>