Настройка хранилища конфигурации и состояния 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;tarantool_config_storage– пользователь для подключения экземпляров кластера TCF к узлам хранилища конфигурации.
Для работы набора реплик replicaset001 в качестве хранилища конфигурации в конфигурационном файле задана следующая роль:
roles: [config.storage]
- В директории
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 позволяет хранить конфигурацию кластера с помощью хранилища etcd.
etcd – это распределенное хранилище ключ-значение для любого типа данных, используемых в распределенных системах. В этом разделе описано, как настроить и запустить etcd. Подробнее про etcd читайте в официальной документации.
Чтобы использовать etcd в качестве хранилища конфигурации, необходимо настроить пользователей,
роли и разрешения с помощью утилиты etcdctl.
В примере ниже создан пользователь, который имеет доступ на чтение и запись к конфигурациям, хранящимся по префиксу кластера /myapp/.
Если etcd запущен не на локальной машине или использует нестандартный адрес/порт, укажите адрес и порт в командах через флаг --endpoints, например:
etcdctl --endpoints=http://192.168.1.100:2379 user add root:topsecret`
- Запустите 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
- Создайте администратора (root) для управления etcd:
etcdctl user add root:topsecret
- Создайте роль для доступа к конфигурациям:
etcdctl role add myapp_config_manager
- Назначьте разрешения этой роли.
Доступ на чтение и запись ко всем ключам, начинающимся с /myapp/:
etcdctl role grant-permission myapp_config_manager --prefix=true readwrite /myapp/
- Создайте пользователя, который будет аутентифицироваться при доступе к etcd, если включена авторизация:
etcdctl user add sampleuser:123456
- Назначьте пользователю соответствующую роль:
etcdctl user grant-role sampleuser myapp_config_manager
- Включите механизм авторизации в etcd:
etcdctl auth enable
Подключение к etcd настраивается в секции config.etcd конфигурации кластеров.
Пример конфигурации:
config:etcd:endpoints:- http://localhost:2379prefix: /myappusername: sampleuserpassword: '123456'http:request:timeout: 3
Здесь:
endpoints– список адресов etcd-серверов, к которым подключается приложение;prefix– префикс ключа, который используется для поиска в конфигурации кластера в хранилище. Tarantool ищет ключи по следующему пути:<prefix>/config/*. Обратите внимание, что<prefix>должен начинаться со слэша (/);usernameиpassword– имя пользователя и пароль для подключения к etcd, если включена авторизация (auth enable);http.request.timeout– время ожидания выполнения HTTP-запроса к etcd-серверу в секундах.
Другие доступные параметры для настройки etcd-хранилища см. в разделе справочника .