Конфигурация кластера | Tdb
Руководство пользователя Конфигурация кластера

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

Tarantool позволяет настроить полную топологию кластера, определить параметры для отдельных экземпляров и задать клиентский код миграций. Каждый экземпляр использует эту конфигурацию при запуске, чтобы организовать кластер. Конфигурация кластера определяет топологию кластера, восстановление после сбоев (failover), параметры шардирования, настройки модулей, настройки аутентификации, управление списками контроля доступа (ACL), а также настройки, заданные пользователем. В конфигурации также можно задать параметры для конкретного экземпляра, например настройки подключения, память, рабочие каталоги и параметры снимков данных (snapshots).

Доступны два способа хранения конфигурации:

  • Централизованная конфигурация. Данные конфигурации хранятся в едином месте – в хранилище на базе etcd или Tarantool, все изменения конфигурации экземпляры кластера получают из этого централизованного хранилища;

  • Локальная конфигурация в YAML-файле для каждого экземпляра в составе кластера. Такой способ предполагает, что все экземпляры кластера используют идентичные файлы конфигурации. Копия конфигурации хранится на каждом экземпляре кластера, а сам кластер автоматически синхронизирует эти копии.

Узнать больше о способах настройки конфигурации можно в документации Tarantool.

Содержание:

Представление кластерной конфигурации

Представить кластерную конфигурацию можно двумя способами:

  • Единый YAML-файл – заданные секции конфигурации собраны в одном файле config.yml. Секции конфигурации представлены в виде соответствующих блоков внутри файла. Это представление конфигурации компактно, его удобно использовать для хранения и передачи данных.

  • Несколько YAML-файлов – конфигурация разбита на несколько файлов. Вместе эти файлы составляют единую конфигурацию кластера. Этот подход можно использовать, чтобы организовать конфигурацию в большом кластере. В веб-интерфейсе TCM все файлы, которые формируют конфигурацию кластера, отображаются в списке на вкладке Configuration.

Пример единого файла конфигурации config.yml:

credentials:
  users:
    admin:
      password: 'secret-cluster-cookie'
      roles: [super]
    client:
      password: 'secret'
      roles: [super]
    replicator:
      password: 'secret'
      roles: [replication]
    storage:
      password: 'secret'
      roles: [sharding]

iproto:
  advertise:
    peer:
      login: replicator
    sharding:
      login: storage

sharding:
  bucket_count: 30000

roles_cfg:
  roles.metrics-export:
    http:
    - endpoints:
      - format: prometheus
        path: /metrics
      listen: 8081

groups:
  routers:
    replication:
      failover: manual
    sharding:
      roles: [router]
    roles:
      - roles.crud-router
      - roles.metrics-export
      - roles.dictionary-router
    roles_cfg:
      roles.crud-router:
        stats: true
        stats_driver: metrics
        stats_quantiles: true
        stats_quantile_tolerated_error: 0.001
        stats_quantile_age_buckets_count: 5
        stats_quantile_max_age_time: 180
    replicasets:
      router-msk:
        leader: router-msk
        instances:
          router-msk:
            iproto:
              listen:
                - uri: tarantool-router-msk:3301
              advertise:
                client: tarantool-router-msk:3301
      router-spb:
        leader: router-spb
        instances:
          router-spb:
            iproto:
              listen:
                - uri: tarantool-router-spb:3301
              advertise:
                client: tarantool-router-spb:3301
  storages:
    replication:
      failover: election
    sharding:
      roles: [storage]
    roles:
      - roles.crud-storage
      - roles.metrics-export
      - roles.dictionary-storage
    roles_cfg:
      roles.expirationd: [ ]
    replicasets:
      storage-1:
        instances:
          storage-1-msk:
            iproto:
              listen:
                - uri: tarantool-storage-1-msk:3301
              advertise:
                client: tarantool-storage-1-msk:3301
          storage-1-spb:
            iproto:
              listen:
                - uri: tarantool-storage-1-spb:3301
              advertise:
                client: tarantool-storage-1-spb:3301
          storage-1-brn:
            iproto:
              listen:
                - uri: tarantool-storage-1-brn:3301
              advertise:
                client: tarantool-storage-1-brn:3301
      storage-2:
        instances:
          storage-2-msk:
            iproto:
              listen:
                - uri: tarantool-storage-2-msk:3301
              advertise:
                client: tarantool-storage-2-msk:3301
          storage-2-spb:
            iproto:
              listen:
                - uri: tarantool-storage-2-spb:3301
              advertise:
                client: tarantool-storage-2-spb:3301
          storage-2-brn:
            iproto:
              listen:
                - uri: tarantool-storage-2-brn:3301
              advertise:
                client: tarantool-storage-2-brn:3301

Загрузка конфигурации кластера

Загрузить новую конфигурацию кластера или обновить уже существующую можно двумя способами:

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

Перед изменением конфигурации кластера:

  1. Приостановите любые DML-операции (insert, update, delete) во всех компонентах системы.

  2. Выполните масштабирование или инициируйте ребалансировку.

  3. Дождитесь полного завершения процесса миграции бакетов.

  4. На всех роутерах выполните сброс маршрутов:

    vshard.router._route_map_clear()
    
  5. Возобновите выполнение DML-операций.

После этого вы можете выполнить изменение конфигурации кластера.

Важно

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

Загрузка конфигурации через веб-интерфейс

Чтобы обновить конфигурацию через TCM, выполните следующие шаги:

  1. В TCM перейдите на вкладку Configuration.

  2. При необходимости скачайте текущую версию конфигурационного файла. Для этого выберите нужный файли и нажмите на кнопку Download в появившемся меню.

  3. Внесите необходимые изменения в конфигурационный файл.

  4. Чтобы сохранить черновик конфигурации без отправки в централизованное хранилище конфигурации, нажмите Save. Чтобы применить обновленный файл конфигурации и загрузить его в централизованное хранилище, нажмите Apply. Кластер проверяет изменения, отклоняя неприемлемые, а затем распространяет новую конфигурацию по всем узлам кластера. Если файл обновлен успешно, появится соответствующее сообщение в нижней части экрана. Если при попытке применить новые настройки возникла проблема, появится сообщение об ошибке.

Загрузка конфигурации через tt CLI

Обновить конфигурацию через утилиту tt можно следующим образом:

  1. Перейдите в директорию, где хранится файл конфигурации config.yaml.

  2. Загрузите конфигурацию кластера в централизованное хранилище из YAML-файла, используя команду tt cluster publish:

    tt cluster publish http://etcd1:2379/tdb config.yml
    

    Здесь:

    • http://etcd1:2379/tdb – адрес одного из узлов ETCD;

    • config.yml – публикуемый файл конфигурации.

Пример работы с кластерной конфигурацией

В конфигурации кластера можно хранить данные и параметры для конкретной роли. Гибкость конфигурации кластера позволяет изменять систему под различные потребности, в том числе под требования конкретных ролей. В примере добавлены роли crud, которые позволяют выполнять на кластере CRUD-операции (создание, чтение, обновление, удаление) через IPROTO API.

Чтобы добавить роль crud в запущенный кластер через TCM:

  1. В TCM перейдите на вкладку Configuration.

  2. Создайте файл crud.yml. В нем будут храниться настройки роли crud.

  3. Укажите в файле такую конфигурацию:

    roles:
      - roles.crud-router
      - roles.crud-storage
    roles_cfg:
        roles.crud-router:
            crud:
                stats: true
                stats_driver: metrics
                stats_quantiles: false
                stats_quantile_tolerated_error: 0.001
                stats_quantile_age_buckets_count: 5
                stats_quantile_max_age_time: 180
    

    Здесь:

Узнать больше: Включение и настройка ролей. Подробное описание опций crud можно прочитать в справочнике конфигурации.

  1. Нажмите кнопку Apply.

вкладка Configuration

Через TCM можно менять состояние работы статистики и другие параметры в реальном времени без перезапуска кластера или экземпляров. Для этого поменяйте значение параметра и нажмите кнопку Apply.

Found what you were looking for?
Feedback