Настройка хранилища конфигурации и состояния TCF
Перед запуском TCF необходимо настроить централизованное хранилище, в котором будут храниться конфигурация кластеров и состояние кластеров активный-пассивный. TCF поддерживает два типа такого хранилища: хранилище на основе Tarantool и внешнее хранилище etcd. В этом разделе описано, как подготовить и настроить оба типа хранилища.
В примерах, приведённых в этом разделе и далее при настройке кластеров и межкластерных репликаторов данных, используется связка Tarantool DB (TDB) версии 2.2.0+ и TCF.
Перед настройкой и запуском любого из типов хранилища конфигурации у пользователя уже должны быть распакованы архивы с TCF и TDB версии 2.2.0 или выше. Для этого необходимо заранее выполнить шаги из соответствующего раздела руководства по установке вручную.
Распакованные архивы формируют директории. По умолчанию распаковка дистрибутива TCF выполняется в текущую директорию, там будут содержаться все необходимые компоненты и конфигурационные шаблоны.
Хранилище конфигурации на основе Tarantool – это хранилище, состоящее из экземпляров хранилища Tarantool.
Чтобы настроить хранилище конфигурации:
-
Перейдите в интерфейс командной строки, создайте директорию
config-envдля хранилища конфигурации TCF и создайте в ней новое окружение для консольной утилиты tt CLI. Директорияconfig-envдолжна быть создана в домашней директории на одном уровне с директориейtarantooldb.$ mkdir config-env$ cd config-env/$ tt init -
Перейдите в директорию
instances.enabled, создайте внутри директориюconfigstorage, а затем перейдите в нее.$ cd instances.enabled/$ mkdir configstorage$ cd configstorage/
-
В директории
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] -
В директории
instances.enabled/cluster_aсоздайте файлconfig.yamlTarantool Cluster 1:config:storage:endpoints:- uri: 127.0.0.1:3301login: cluster1_userpassword: cluster1_user_password- uri: 127.0.0.1:3302login: cluster1_userpassword: cluster1_user_password- uri: 127.0.0.1:3303login: cluster1_userpassword: cluster1_user_passwordprefix: /cluster1Здесь:
config.storage.endpoints.uri– адреса узлов хранилища конфигурации;config.storage.endpoints.login– пользователь для подключения экземпляров кластера к узлам хранилища конфигурации;config.storage.endpoints.password– пароль для подключения экземпляров кластера к узлам хранилища конфигурации;config.storage.prefix– префикс кластера, под которым хранится конфигурация для конкретного кластера.
-
В директории
instances.enabled/cluster_bсоздайте файлconfig.yamlдля Tarantool Cluster 2:config:storage:endpoints:- uri: 127.0.0.1:3301login: cluster2_userpassword: cluster2_user_password- uri: 127.0.0.1:3302login: cluster2_userpassword: cluster2_user_password- uri: 127.0.0.1:3303login: cluster2_userpassword: cluster2_user_passwordprefix: /cluster2 -
В директории
configstorageподготовьте файлinstances.yaml, содержащий список узлов (экземпляров хранилища). Для примера конфигурации выше список будет таким:instance001:instance002:instance003:
-
Запустите настроенные узлы хранилища конфигурации:
tt start configstorageВывод работы команды должен выглядеть следующим образом:
• Starting an instance [configstorage:instance001]...• Starting an instance [configstorage:instance002]...• Starting an instance [configstorage:instance003]... -
Проверьте состояние запущенных узлов 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.
- параметр
-
Определите, какой из экземпляров, запущенных ранее, является 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_storagestorage_params:endpoints:- uri: 127.0.0.1:3301login: tcf_userpassword: tcf_user_password- uri: 127.0.0.1:3302login: tcf_userpassword: tcf_user_password- uri: 127.0.0.1:3303login: tcf_userpassword: tcf_user_passwordprefix: /tcf
Примеры полных файлов конфигурации кластеров с добавленными пользователями приведены в разделе Создание кластеров.
При подготовке файла конфигурации для 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 1id: 00000000-0000-0000-0000-000000000000storage-connection:provider: tarantooltarantool-connection:prefix: /cluster1username: cluster1_userpassword: cluster1_user_passwordendpoints:- 127.0.0.1:3301- 127.0.0.1:3302- 127.0.0.1:3303tarantool-connection:username: tcm_tarantoolpassword: tcm_tarantool_password
Здесь используются два разных подключения:
clusters.<cluster>.storage-connection.tarantool-connection— подключение для чтения конфигурации конкретного кластера, откуда TCM загружает его конфигурацию и параметры экземпляров. Здесь указываются пользователи, связанные с конкретным кластером, напримерcluster1_user,cluster2_user;tarantool-connection— подключение TCM к собственному хранилищу служебных данных.
Пример полного файла конфигурации TCM можно найти в разделе Запуск TCM.
etcd – это распределенное хранилище ключ-значение для любого типа данных, используемых в распределенных системах.
В этом разделе описано, как настроить и запустить etcd. Подробнее читайте в официальной документации etcd.
Компоненты TCF обращаются к etcd для чтения и записи конфигурации. Для корректной работы кластеров необходимо подготовить отдельные файлы с параметрами подключения к etcd, а также указать пользователей и пароли.
-
Подготовьте и разместите файл конфигурации централизованного хранилища etcd
config.yamlдля Tarantool Cluster 1 в директорииinstances.enabled/cluster1. Подключение к etcd настраивается в секцииconfig.etcdконфигурации кластеров. Файл конфигурации может выглядеть следующим образом:config:etcd:endpoints:- http://127.0.0.1:2379prefix: /cluster1username: cluster1_userpassword: cluster1_user_passwordhttp: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).
-
Подготовьте и разместите файл конфигурации централизованного хранилища etcd
config.yamlдля Tarantool Cluster 2 в директорииinstances.enabled/cluster2. Файл конфигурации может выглядеть следующим образом:config:etcd:endpoints:- http://127.0.0.1:2379prefix: /cluster2username: cluster2_userpassword: cluster2_user_passwordhttp:request:timeout: 3
Дополнительно требуется настроить доступ технологической роли TCF-worker и указать параметры подключения к etcd в конфигурации TCM.
-
Добавьте пользователя TCF-worker для хранилища etcd в файлы конфигурации кластеров Tarantool Cluster 1 и Tarantool Cluster 2:
roles_cfg:roles.tcf-worker:storage: etcd_v3storage_params:prefix: /tcfendpoints:- uri: 127.0.0.1:2379login: tcf_userpassword: tcf_user_passwordПримеры полных файлов конфигурации кластеров приведены в разделе Создание приложения.
-
При подготовке файла конфигурации для 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 1id: 00000000-0000-0000-0000-000000000000storage-connection:provider: etcdetcd-connection:prefix: /cluster1endpoints:- http://127.0.0.1:2379username: cluster1_userpassword: cluster1_user_passwordtarantool-connection:username: tcm_tarantoolpassword: tcm_tarantool_password- name: Tarantool Cluster 2storage-connection:provider: etcdetcd-connection:prefix: /cluster2endpoints:- http://127.0.0.1:2379username: cluster2_userpassword: cluster2_user_passwordtarantool-connection:username: tcm_tarantoolpassword: tcm_tarantool_passwordПример полного файла конфигурации TCM можно найти в разделе Настройка и запуск Tarantool Cluster Manager.
Чтобы использовать etcd в качестве хранилища конфигурации, необходимо настроить пользователей,
роли и разрешения с помощью утилиты etcdctl. Подробную информацию можно найти в официальной документации etcd.
Если etcd запущен не на локальной машине или использует нестандартный адрес/порт, укажите адрес и порт в командах через флаг --endpoints, например:
etcdctl --endpoints=http://192.168.1.100:2379
-
Запустите 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 -
Проверьте, работает ли 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 -
Теперь создайте пользователей, которые указаны в конфигурации в разделе Добавление пользователей в конфигурации кластеров и ТСМ. Пользователи
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 -
Создайте роли. Каждая роль отвечает за доступ к своему префиксу:
etcdctl role add role_cluster1etcdctl role add role_cluster2etcdctl role add role_tcf -
Выдайте ролям доступ к нужным ключам:
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/ -
Назначьте роли пользователям:
etcdctl user grant-role cluster1_user role_cluster1etcdctl user grant-role cluster2_user role_cluster2etcdctl user grant-role tcf_user role_tcf -
Включите механизм авторизации в etcd:
etcdctl auth enable