Конфигурирование логических кластеров в интерфейсе 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, добавляя необходимые элементы с помощью иконки plus one dark plus one light:

  1. Добавьте новый кластер и укажите его имя.

  2. Определите, сколько шардов должно быть в кластере — добавьте элементы в список shards.

    Для каждого шарда укажите значения параметров weight и internal_replication (подробнее об этих параметрах в статье Шардирование), а также добавьте хосты-реплики в список replicas.

    Конфигурирование логического кластера
    Конфигурирование логического кластера
  3. Нажмите 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>
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней