Конфигурация кластера | Tdg
Reference Конфигурация Tarantool Data Grid Конфигурация кластера

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

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

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

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

Note

Рекомендуется создать и настроить эти секции в отдельных файлах: topology.yml и vshard_groups.yml, поместив эти файлы в папку config в корне проекта.

Секция 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"
end

if header == 'error-injection' then
    error('error-injection')
end

if header == 'invalid-answer' then
    return 'invalid-answer'
end

if header == 'invalid-decision' then
    return {
        decision = 'invalid-decision',
    }
end

if header == 'invalid-token' then
    return {
        decision = 'reject',
        reason = 'invalid token',
    }
end

if header == 'fallback-token' then
    return {
        decision = 'fallback',
    }
end

if header == 'custom-response' then
    return {
        decision = 'reject',
        status_code = 418,
        reason = 'Hello, world!',
        headers = {
            ['custom'] = 'header',
        }
    }
end

return {
    decision = 'accept',
    account = {
        is_user = true,
        email = 'example@tarantool.org',
        role_id = 1,
    },
}
end

return {
    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, где:

      • 0LDAP_OPT_X_TLS_NEVER,

      • 1LDAP_OPT_X_TLS_HARD,

      • 2LDAP_OPT_X_TLS_DEMAND,

      • 3LDAP_OPT_X_TLS_ALLOW,

      • 4LDAP_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
Found what you were looking for?
Feedback