VK Docs logo
Помощь
Обновлена 27 ноября 2025 г. в 14:21

Настройка хранилища конфигурации и состояния TCF

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

В примерах, приведённых в этом разделе и далее (при настройке кластеров и межкластерных репликаторов данных, используется связка Tarantool DB (TDB) версии 2.2.0+ и TCF.

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

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

Настройка хранилища конфигурации на основе Tarantool

Хранилище конфигурации на основе Tarantool – это хранилище, состоящее из экземпляров хранилища Tarantool.

Чтобы настроить хранилище конфигурации:

  1. Перейдите в интерфейс командной строки, создайте директорию config-env для хранилища конфигурации TCF и создайте в ней новое окружение для консольной утилиты tt CLI. Директория config-env должна быть создана в домашней директории на одном уровне с директорией tarantooldb.
$ mkdir config-env$ cd config-env/$ tt init
  1. Перейдите в директорию instances.enabled, создайте внутри директорию configstorage, а затем перейдите в нее.
$ cd instances.enabled/$ mkdir configstorage$ cd configstorage/
  1. В директории configstorage подготовьте файл source.yaml с конфигурацией хранилища конфигурации на основе Tarantool. Пример конфигурации для набора реплик с 3 экземплярами хранилища, экземпляры в этой конфигурации принимают входящие запросы на порты 3301–3303:

В файле конфигурации в секции credentials.users заданы следующие пользователи:

  • replicator – пользователь для соединения узлов хранилища конфигурации друг с другом;
  • dbadmin – администратор TCF;
  • tarantool_config_storage – пользователь для подключения экземпляров кластера TCF к узлам хранилища конфигурации.

Для работы набора реплик replicaset001 в качестве хранилища конфигурации в конфигурационном файле задана следующая роль:

roles: [config.storage]
  1. В директории configstorage подготовьте файл instances.yaml, содержащий список узлов (экземпляров хранилища). Для примера конфигурации выше список будет таким:
instance001:instance002:instance003:
  1. Запустите настроенные узлы хранилища конфигурации:
tt start configstorage

Вывод работы команды должен выглядеть следующим образом:

• Starting an instance [configstorage:instance001]...• Starting an instance [configstorage:instance002]...• Starting an instance [configstorage:instance003]...
  1. Проверьте состояние запущенных узлов c помощью tt:
tt status configstorage

Вывод работы команды может выглядеть следующим образом:

INSTANCE                           STATUS   PID     MODE  CONFIG   BOX    UPSTREAMconfigstorage:instance001          RUNNING  269163   RO   ready   running    --       configstorage:instance002          RUNNING  269164   RO   ready   running    --       configstorage:instance003          RUNNING  269165   RW   ready   running    --

Указанные параметры для каждого узла должны иметь следующие значения:

  • параметр STATUS должен иметь значение RUNNING;
  • параметр CONFIG должен иметь значение ready;
  • параметры BOX должен иметь значение running;
  • параметр MODE одного из узлов должен иметь значение RW.
  1. Определите, какой из экземпляров, запущенных ранее, является master-узлом. Это можно определить, выполнив команду tt status. В примере экземпляр instance003 работает в режиме RW – чтения и записи (см. параметр узлов MODE). Это означает, что instance003 является master-узлом.
tt status configstorageINSTANCE                           STATUS   PID     MODE  CONFIG   BOX     UPSTREAMconfigstorage:instance001         RUNNING  269163    RO   ready   running     --       configstorage:instance002         RUNNING  269164    RO   ready   running     --       configstorage:instance003         RUNNING  269165    RW   ready   running     --

Настройка хранилища конфигурации etcd

TCF позволяет хранить конфигурацию кластера с помощью хранилища etcd.

etcd – это распределенное хранилище ключ-значение для любого типа данных, используемых в распределенных системах. В этом разделе описано, как настроить и запустить etcd. Подробнее про etcd читайте в официальной документации.

Запуск и первичная настройка

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

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

Если etcd запущен не на локальной машине или использует нестандартный адрес/порт, укажите адрес и порт в командах через флаг --endpoints, например:

etcdctl --endpoints=http://192.168.1.100:2379 user add root:topsecret`
  1. Запустите etcd.

Команда для запуска etcd локально:

etcd

Команда для запуска etcd с указанием конфигурации:

etcd --name my-etcd \     --data-dir /tmp/etcd-data \     --listen-client-urls http://localhost:2379 \     --advertise-client-urls http://localhost:2379
  1. Проверьте, работает ли etcd:
etcdctl endpoint health

Пример успешного ответа:

http://localhost:2379 is healthy: successfully committed proposal: took = 1.234ms

Пример неудачного ответа (если etcd не запущен или недоступен):

http://localhost:2379 is unhealthy: failed to commit proposal: context deadline exceeded

или

failed to check the health of endpoint http://localhost:2379 (context deadline exceeded)Error: unhealthy cluster
  1. Создайте администратора (root) для управления etcd:
etcdctl user add root:topsecret
  1. Создайте роль для доступа к конфигурациям:
etcdctl role add myapp_config_manager
  1. Назначьте разрешения этой роли.

Доступ на чтение и запись ко всем ключам, начинающимся с /myapp/:

etcdctl role grant-permission myapp_config_manager --prefix=true readwrite /myapp/
  1. Создайте пользователя, который будет аутентифицироваться при доступе к etcd, если включена авторизация:
etcdctl user add sampleuser:123456
  1. Назначьте пользователю соответствующую роль:
etcdctl user grant-role sampleuser myapp_config_manager
  1. Включите механизм авторизации в etcd:
etcdctl auth enable

Настройка подключения

Подключение к etcd настраивается в секции config.etcd конфигурации кластеров.

Пример конфигурации:

config:  etcd:    endpoints:      - http://localhost:2379    prefix: /myapp    username: sampleuser    password: '123456'    http:      request:        timeout: 3

Здесь:

  • endpoints – список адресов etcd-серверов, к которым подключается приложение;
  • prefix – префикс ключа, который используется для поиска в конфигурации кластера в хранилище. Tarantool ищет ключи по следующему пути: <prefix>/config/*. Обратите внимание, что <prefix> должен начинаться со слэша (/);
  • username и password – имя пользователя и пароль для подключения к etcd, если включена авторизация (auth enable);
  • http.request.timeout – время ожидания выполнения HTTP-запроса к etcd-серверу в секундах.

Другие доступные параметры для настройки etcd-хранилища см. в разделе справочника .