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
  2. Перейдите в директорию instances.enabled, создайте внутри директорию configstorage, а затем перейдите в нее.

    $ cd instances.enabled/$ mkdir configstorage$ cd configstorage/

Подготовка конфигурации хранилища и добавление пользователей

  1. В директории configstorage подготовьте файл source.yaml с конфигурацией хранилища конфигурации на основе Tarantool. Пример конфигурации для набора реплик с 3 экземплярами хранилища, экземпляры в этой конфигурации принимают входящие запросы на порты 3301–3303:

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

    • replicator – пользователь для соединения узлов хранилища конфигурации друг с другом;
    • dbadmin – администратор TCF;
    • tcm_config_storage – пользователь для подключения TCM к узлам хранилища конфигурации;
    • cluster1_user – пользователь, которым Tarantool Cluster 1 подключается к хранилищу на основе Tarantool для чтения и записи своей конфигурации (в префиксе /cluster1);
    • cluster2_user – пользователь, которым Tarantool Cluster 2 подключается к хранилищу на основе Tarantool для чтения и записи своей конфигурации (в префиксе /cluster2). – tcf_user – сервисный пользователь TCF, используемый репликаторами Gateway/Destination и технологическими ролями для подключения к хранилищу конфигурации (в префиксе /tcf).

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

    roles: [config.storage]
  2. В директории instances.enabled/cluster_a создайте файл config.yaml Tarantool Cluster 1:

    config:  storage:    endpoints:    - uri: 127.0.0.1:3301      login: cluster1_user      password: cluster1_user_password    - uri: 127.0.0.1:3302      login: cluster1_user      password: cluster1_user_password    - uri: 127.0.0.1:3303      login: cluster1_user      password: cluster1_user_password    prefix: /cluster1

    Здесь:

    • config.storage.endpoints.uri – адреса узлов хранилища конфигурации;
    • config.storage.endpoints.login – пользователь для подключения экземпляров кластера к узлам хранилища конфигурации;
    • config.storage.endpoints.password – пароль для подключения экземпляров кластера к узлам хранилища конфигурации;
    • config.storage.prefix – префикс кластера, под которым хранится конфигурация для конкретного кластера.
  3. В директории instances.enabled/cluster_b создайте файл config.yaml для Tarantool Cluster 2:

    config:  storage:    endpoints:    - uri: 127.0.0.1:3301      login: cluster2_user      password: cluster2_user_password    - uri: 127.0.0.1:3302      login: cluster2_user      password: cluster2_user_password    - uri: 127.0.0.1:3303      login: cluster2_user      password: cluster2_user_password    prefix: /cluster2
  4. В директории 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]...
  2. Проверьте состояние запущенных узлов 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.
  3. Определите, какой из экземпляров, запущенных ранее, является 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     --

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

После добавления пользователей в конфигурацию хранилища определите их в конфигурациях кластеров. Для этого добавьте пользователя TCF-worker в файлы конфигурации кластеров Tarantool Cluster 1 и Tarantool Cluster 2:

roles_cfg:    roles.tcf-worker:       storage: config_storage       storage_params:          endpoints:            - uri: 127.0.0.1:3301              login: tcf_user              password: tcf_user_password            - uri: 127.0.0.1:3302              login: tcf_user              password: tcf_user_password            - uri: 127.0.0.1:3303              login: tcf_user              password: tcf_user_password          prefix: /tcf

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

Добавление пользователей для хранилища в конфигурацию TCM

При подготовке файла конфигурации для TCM, помимо основных настроек, укажите секцию initial-settings – кластеры, которые создаются автоматически в веб-интерфейсе при первом запуске TCM. В приведенной конфигурации TCM автоматически создан кластер Tarantool Cluster 1. Кластер Tarantool Cluster 2 будет создан вручную через веб-интерфейс. Кластеры используют общее хранилище на основе Tarantool, но имеют различные префиксы – /cluster1 и /cluster2. Кроме того, добавьте имена пользователей и пароли в секции clusters.<cluster>.storage-connection.tarantool-connection.

initial-settings:   clusters:      - name: Tarantool Cluster 1        id: 00000000-0000-0000-0000-000000000000        storage-connection:           provider: tarantool           tarantool-connection:              prefix: /cluster1              username: cluster1_user              password: cluster1_user_password              endpoints:                 - 127.0.0.1:3301                 - 127.0.0.1:3302                 - 127.0.0.1:3303        tarantool-connection:           username: tcm_tarantool           password: tcm_tarantool_password

Здесь используются два разных подключения:

  • clusters.<cluster>.storage-connection.tarantool-connection — подключение для чтения конфигурации конкретного кластера, откуда TCM загружает его конфигурацию и параметры экземпляров. Здесь указываются пользователи, связанные с конкретным кластером, например cluster1_user, cluster2_user;
  • tarantool-connection — подключение TCM к собственному хранилищу служебных данных.

Пример полного файла конфигурации TCM можно найти в разделе Запуск TCM.

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

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

В этом разделе описано, как настроить и запустить etcd. Подробнее читайте в официальной документации etcd.

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

  1. Подготовьте и разместите файл конфигурации централизованного хранилища etcd config.yaml для Tarantool Cluster 1 в директории instances.enabled/cluster1. Подключение к etcd настраивается в секции config.etcd конфигурации кластеров. Файл конфигурации может выглядеть следующим образом:

    config:  etcd:    endpoints:      - http://127.0.0.1:2379    prefix: /cluster1    username: cluster1_user    password: cluster1_user_password    http:      request:        timeout: 3

    Здесь:

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

    Другие доступные параметры для настройки etcd-хранилища приведены в разделе справочника Конфигурация кластера в YAML (Tarantool 3.x).

  2. Подготовьте и разместите файл конфигурации централизованного хранилища etcd config.yaml для Tarantool Cluster 2 в директории instances.enabled/cluster2. Файл конфигурации может выглядеть следующим образом:

    config:  etcd:    endpoints:      - http://127.0.0.1:2379    prefix: /cluster2    username: cluster2_user    password: cluster2_user_password    http:      request:        timeout: 3

Добавление пользователей в конфигурации кластеров и ТСМ

Дополнительно требуется настроить доступ технологической роли TCF-worker и указать параметры подключения к etcd в конфигурации TCM.

  1. Добавьте пользователя TCF-worker для хранилища etcd в файлы конфигурации кластеров Tarantool Cluster 1 и Tarantool Cluster 2:

    roles_cfg: roles.tcf-worker:   storage: etcd_v3   storage_params:     prefix: /tcf     endpoints:       - uri: 127.0.0.1:2379         login: tcf_user         password: tcf_user_password

    Примеры полных файлов конфигурации кластеров приведены в разделе Создание приложения.

  2. При подготовке файла конфигурации для TCM, помимо основных настроек, укажите секцию initial-settings – кластеры, которые создаются автоматически в веб-интерфейсе при первом запуске TCM. В приведенной конфигурации TCM автоматически созданы кластеры Tarantool Cluster 1 и Tarantool Cluster 2. Кластеры используют общий etcd, но имеют различные префиксы – /cluster1 и /cluster2. Кроме того, добавьте имена пользователей и пароли в секции clusters.<cluster>.storage-connection.etcd-connection.

    initial-settings:  clusters:    - name: Tarantool Cluster 1      id: 00000000-0000-0000-0000-000000000000      storage-connection:        provider: etcd        etcd-connection:          prefix: /cluster1          endpoints:            - http://127.0.0.1:2379          username: cluster1_user          password: cluster1_user_password        tarantool-connection:          username: tcm_tarantool          password: tcm_tarantool_password    - name: Tarantool Cluster 2      storage-connection:        provider: etcd        etcd-connection:          prefix: /cluster2          endpoints:            - http://127.0.0.1:2379            username: cluster2_user            password: cluster2_user_password        tarantool-connection:          username: tcm_tarantool          password: tcm_tarantool_password

    Пример полного файла конфигурации TCM можно найти в разделе Настройка и запуск Tarantool Cluster Manager.

Запуск etcd и добавление пользователей

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

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

etcdctl --endpoints=http://192.168.1.100:2379
  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
  2. Проверьте, работает ли 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
  3. Теперь создайте пользователей, которые указаны в конфигурации в разделе Добавление пользователей в конфигурации кластеров и ТСМ. Пользователи cluster1_user и cluster2_user используются для работы кластера с хранилищем конфигурации etcd, а пользователь tcf_user – в файлах конфигурации кластеров.

    etcdctl user add cluster1_user:cluster1_user_passwordetcdctl user add cluster2_user:cluster2_user_passwordetcdctl user add tcf_user:tcf_user_password
  4. Создайте роли. Каждая роль отвечает за доступ к своему префиксу:

    etcdctl role add role_cluster1etcdctl role add role_cluster2etcdctl role add role_tcf
  5. Выдайте ролям доступ к нужным ключам:

    etcdctl role grant-permission role_cluster1 readwrite --prefix=true /cluster1/etcdctl role grant-permission role_cluster2 readwrite --prefix=true /cluster2/etcdctl role grant-permission role_tcf      readwrite --prefix=true /tcf/
  6. Назначьте роли пользователям:

    etcdctl user grant-role cluster1_user role_cluster1etcdctl user grant-role cluster2_user role_cluster2etcdctl user grant-role tcf_user      role_tcf
  7. Включите механизм авторизации в etcd:

    etcdctl auth enable