TDG Documentation portal logo
Помощь
Обновлена 22 июня 2026 г. в 15:31

Конфигурация кластера

В конфигурацию кластера можно добавить параметры топологии и авторизации, а также настройку времени ожидания сетевых вызовов при шардировании.

Параметры топологии

Топология кластера настраивается при помощи секций topology и vshard_groups.

Секция topology

Секция topology содержит три главных подраздела:

replicasets

Этот подраздел содержит информацию о том, как экземпляры организованы в наборы реплик.

Каждый набор реплик идентифицируется по своему номеру UUID. Для каждого приводятся следующие параметры:

  • weight - вес набора реплик. По умолчанию: 0 (подключен, но пока не принимает данные). При указанном весе 0 попытки шардирования будут приводить к ошибке на роутере (vshard-router).
  • master - UUID экземпляра-мастера в этом наборе реплик.
  • alias - человекопонятное имя набора реплик.
  • vshard_group - группа шардирования, к которой относится набор реплик. По умолчанию: default.
  • roles - список кластерных ролей, включенных (true) или выключенных (false) для набора реплик.
  • all_rw - являются ли все узлы в наборе реплик мастерами. По умолчанию: false.

Пример для одного набора реплик:

replicasets:  5e47bf8e-57f5-4166-96ba-e16f964fb82b: # UUID набора реплик    weight: 1    master:    - dee26aab-0190-461d-9121-56b96b881a59    alias: unnamed    vshard_group: default    roles:      tracing: true      ddl-manager: true      maintenance: true      watchdog: true      account_provider: true      metrics: true      common: true      core: true      failover-coordinator: true      storage: true      runner: true      vshard-router: true      connector: true      vshard-storage: true    all_rw: false

servers

В этом подразделе приведен список всех экземпляров Tarantool. Каждый из них идентифицируется по своему номеру UUID. Для каждого указаны следующие параметры:

  • uri - внутренний URI-адрес экземпляра.
  • disabled - выключен ли экземпляр. По умолчанию: false.
  • replicaset_uuid - UUID набора реплик, в котором состоит экземпляр.

Пример для одного экземпляра:

servers:  dee26aab-0190-461d-9121-56b96b881a59:    uri: localhost:3301    disabled: false    replicaset_uuid: 5e47bf8e-57f5-4166-96ba-e16f964fb82b

failover

В этом подразделе указываются настройки восстановления после сбоев, аналогичные соответствующим настройкам Cartridge.

Пример:

failover:  fencing_enabled: true  failover_timeout: 20  fencing_pause: 2  mode: eventual  fencing_timeout: 10

По умолчанию подраздел отключен:

failover: false

Секция vshard_groups

В этой секции указываются группы шардирования, или vshard-группы, к каждой из которых может принадлежать один или несколько наборов реплик. Внутри такой группы данные шардируются между входящими в нее наборами реплик.

В vshard-группе могут состоять только наборы реплик с ролью storage. Один набор реплик не может состоять в двух разных vshard-группах.

Параметры групп шардирования указываются так же, как при работе с Tarantool.

Значения по умолчанию:

default:  rebalancer_max_receiving: 100  bootstrapped: true  collect_lua_garbage: false  sync_timeout: 1  rebalancer_max_sending: 1  sched_ref_quota: 300  rebalancer_disbalance_threshold: 1  bucket_count: 30000  sched_move_quota: 1

См. также настройку времени ожидания сетевых вызовов при шардировании.

Параметры авторизации

Авторизация настраивается при помощи секций auth/auth_external, ldap.

Секция auth позволяет настроить существующую систему авторизации аналогично тому, как это делается в Tarantool Cartridge. Вместо этого можно в секции auth_external указать путь к файлу с Lua-кодом, где задана нестандартная логика для авторизации входящих запросов.

Кроме того, ниже рассматривается секция pepper, где можно задать переменную, с помощью которой будут хешироваться пароли.

Секция auth_external

В этой секции можно указать путь к файлу с Lua-кодом, где пользователь может самостоятельно задать логику для авторизации входящих запросов. Код должен вернуть таблицу с параметром auth, в котором лежит функция для проверки входящих запросов в формате HTTP. Функция вернет либо nil, если доступ запрещен, либо объект, содержащий аутентификационную информацию.

Пример. Укажем путь к файлу auth.lua с логикой для авторизации входящих запросов:

auth_external: {__file: auth.lua}

Содержание auth.lua определяется пользователем самостоятельно. Например, в файле может быть указана такая логика обработки:

– Функция авторизует пользователя по HTTP-заголовкуlocal function auth(request)local header = request.headers['custom_token']if header == nil then    return nil, "no header"endif header == 'error-injection' then    error('error-injection')endif header == 'invalid-answer' then    return 'invalid-answer'endif header == 'invalid-decision' then    return {        decision = 'invalid-decision',    }endif header == 'invalid-token' then    return {        decision = 'reject',        reason = 'invalid token',    }endif header == 'fallback-token' then    return {        decision = 'fallback',    }endif header == 'custom-response' then    return {        decision = 'reject',        status_code = 418,        reason = 'Hello, world!',        headers = {            ['custom'] = 'header',        }    }endreturn {    decision = 'accept',    account = {        is_user = true,        email = 'example@tarantool.org',        role_id = 1,    },}endreturn {    auth = auth,}

Секция ldap

В этой секции указываются параметры авторизации внешних пользователей и систем через LDAP:

  • domain - доменное имя, которое используется в доменном логине пользователя (user@domain).

  • organizational_units - названия организационных подразделений или групп пользователей. Параметр опциональный и будет пропущен, если для него не задано значение.

  • hosts - адрес подключения к серверу LDAP.

  • use_active_directory - параметр, определяющий использование Active Directory (служба каталогов Microsoft). Значение по умолчанию: false.

    Если установлено значение true, используйте адрес электронной почты для входа в систему и атрибут Active Directory userprincipalname=email в качестве фильтра, где email - адрес электронной почты пользователя. Часть с именем пользователя в email будет распознана одинаково независимо от регистра (aBc@mail.ru и AbC@mail.ru - это один и тот же пользователь).

  • use_tls - параметр, определяющий использование TLS. Значение по умолчанию: false.

  • search_timeout - время ожидания ответа от сервера LDAP в секундах. Значение по умолчанию: 2.

  • options - настройки LDAP. Параметр опционален. Доступные настройки:

    • LDAP_OPT_DEBUG_LEVEL - уровень отладки клиентской библиотеки.
    • LDAP_OPT_PROTOCOL_VERSION - версия протокола LDAP.
    • LDAP_OPT_X_TLS_CACERTDIR- путь к директории с корневыми сертификатами.
    • LDAP_OPT_X_TLS_CACERTFILE - полный путь к файлу корневого сертификата.
    • LDAP_OPT_X_TLS_NEWCTX - создание нового контекста библиотеки TLS.
    • LDAP_OPT_X_TLS_REQUIRE_CERT - стратегия проверки сертификатов. Принимает целое значение от 0 до 4, где:
      • 0 - LDAP_OPT_X_TLS_NEVER,
      • 1 - LDAP_OPT_X_TLS_HARD,
      • 2 - LDAP_OPT_X_TLS_DEMAND,
      • 3 - LDAP_OPT_X_TLS_ALLOW,
      • 4 - LDAP_OPT_X_TLS_TRY.

    Подробное описание этих настроек LDAP приведено на странице ldap_get_option().

  • roles - описание ролей, которые будут назначаться пользователю в зависимости от групп LDAP, в которых он состоит. Вложенные параметры:

    • role - роль, назначенная пользователю или внешнему приложению для авторизованного доступа и действий в системе (читать подробнее про роли).
    • domain_groups - LDAP-группы, которые соответствуют указанной выше роли. В параметрах групп указываются:
      • cn (common name) - общее имя.
      • ou (organization unit name) - организационное подразделение или группа пользователей.
      • dc (domain component) - компонент домена.

    Если пользователь состоит сразу в нескольких LDAP-группах, он получает разрешения на действия из всех ролей, назначенных для этих групп.

Пример

В примере заданы настройки для:

  • LDAP-группы tarantool с ролью admin;
  • LDAP-группы svcaccts с ролью supervisor.

Для них указаны основные параметры авторизации, отключен Active Directory и отключен TLS:

ldap:  - domain: 'my.domain.ru'    organizational_units: ['tarantool']    hosts:      - server.my.domain.ru:389    use_tls: false    use_active_directory: false    search_timeout: 2    options:      - LDAP_OPT_DEBUG_LEVEL: 3    roles:      - domain_groups:          - 'cn=tarantool,ou=groups,dc=my,dc=domain,dc=ru'        role: 'admin'  - domain: 'my.domain.ru'    organizational_units: ['svcaccts']    hosts:      - server.my.domain.ru:389    use_tls: false    use_active_directory: false    search_timeout: 2    roles:      - domain_groups:          - 'cn=svcaccts,ou=groups,dc=my,dc=domain,dc=ru'        role: 'supervisor'

Секция pepper

В этой секции указывается строка символов, которая в целях усиления безопасности добавляется к паролю перед его хешированием. Если данный параметр не указан в конфигурации, добавляется строка по умолчанию, определенная в коде системы.

Пример:

pepper: 2d60ec7f-e9f0-4018-b354-c54907b9423d

Настройка времени ожидания сетевых вызовов при шардировании

vshard-timeout - отдельная секция, где указывается время, в течение которого модуль vshard ожидает сетевые запросы. Это время в секундах передается в функциях vshard.router.callro() и vshard.router.callrw().

Значение по умолчанию - 2 секунды:

vshard-timeout: 2