Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Управление конфигурациями кластера

$ tt cluster COMMAND [COMMAND_OPTION ...]

tt cluster управляет конфигурациями приложений Tarantool. Команда работает как с локальными YAML-файлами в каталогах приложений, так и с централизованными хранилищами конфигурации (etcd или на базе Tarantool).

COMMAND может принимать одно из следующих значений:

publish

$ tt cluster publish {APPLICATION[:APP_INSTANCE] | CONFIG_URI} [FILE] [OPTION ...]

Команда tt cluster publish публикует конфигурацию кластера, используя в качестве источника произвольный YAML-файл.

Публикация локальных конфигураций

Команда tt cluster publish может изменять локальные конфигурации кластера, хранящиеся в файлах config.yaml внутри каталогов приложений.

Чтобы записать конфигурацию в локальный файл config.yaml, выполните tt cluster publish с двумя аргументами:

  • имя приложения;
  • путь к YAML-файлу, из которого будет взята конфигурация.
\$ tt cluster publish myapp source.yaml

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

Команда tt cluster publish может изменять централизованные конфигурации кластера в хранилищах обоих поддерживаемых типов: etcd или хранилище конфигурации на базе Tarantool.

Чтобы опубликовать конфигурацию из файла в централизованном хранилище конфигурации, выполните tt cluster publish, указав в качестве цели URI экземпляра этого хранилища. Например, следующая команда публикует конфигурацию из source.yaml в локальный экземпляр etcd, работающий на порту по умолчанию 2379:

$ tt cluster publish "http://localhost:2379/myapp" source.yaml

URI должен включать префикс, уникальный для приложения. Он также может содержать учетные данные и другие параметры подключения. Подробное описание формата URI см. в разделе Формат URI.

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

Помимо конфигураций всего кластера, tt cluster publish может управлять конфигурациями отдельных экземпляров в приложениях: перезаписывать конфигурации существующих экземпляров и добавлять конфигурации новых.

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

# instance_source.yamliproto:  listen:  - uri: 127.0.0.1:3311

Чтобы отправить конфигурацию экземпляра в локальный файл config.yaml, выполните tt cluster publish с парой application:instance в качестве целевого аргумента:

$ tt cluster publish myapp:instance-002 instance_source.yaml

Чтобы отправить конфигурацию экземпляра в централизованное хранилище конфигурации, укажите имя экземпляра в аргументе name URI хранилища:

$ tt cluster publish "http://localhost:2379/myapp?name=instance-002" instance_source.yaml

Если экземпляр уже существует, этот вызов перезаписывает его конфигурацию содержимым файла.

Чтобы добавить конфигурацию нового экземпляра из YAML-фрагмента, укажите имя, которое будет присвоено новому экземпляру, и его расположение в топологии кластера – набор реплик и группу – в параметрах --replicaset и --group.

Чтобы добавить новый экземпляр instance-003 в набор реплик replicaset-001:

$ tt cluster publish "http://localhost:2379/myapp?name=instance-003" instance_source.yaml --replicaset replicaset-001

Валидация конфигурации

Команда tt cluster publish проверяет конфигурацию по схеме конфигурации Tarantool и прерывает выполнение в случае ошибки. Чтобы пропустить валидацию, добавьте параметр --force:

$ tt cluster publish myapp source.yaml --force

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

При вызове с параметром --with-integrity-check команда tt cluster publish генерирует контрольную сумму публикуемой конфигурации. Контрольная сумма подписывается с помощью закрытого ключа, переданного в качестве аргумента параметра, и записывается в хранилище конфигурации.

$ tt cluster publish "http://localhost:2379/myapp" source.yaml --with-integrity-check private.pem

Если конфигурация приложения опубликована таким образом, ее целостность можно проверить с помощью глобального параметра --integrity-check.

$ tt --integrity-check public.pem cluster show myapp$ tt --integrity-check public.pem start myapp

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

Чтобы обеспечить целостность конфигурации при ее обновлении, вызовите tt cluster publish с двумя параметрами:

  • Глобальный параметр --integrity-check PUBLIC_KEY проверяет, что конфигурация не была изменена с момента публикации.
  • --with-integrity-check PRIVATE_KEY генерирует новый хеш и подпись для будущих проверок целостности обновленной конфигурации.
$ tt --integrity-check public.pem cluster publish \     --with-integrity-check private.pem \     "http://localhost:2379/myapp" source.yaml

show

$ tt cluster show {APPLICATION[:APP_INSTANCE] | CONFIG_URI} [OPTION ...]

Команда tt cluster show выводит конфигурацию кластера.

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

Команда tt cluster show может считывать локальные конфигурации кластера, хранящиеся в файлах config.yaml внутри каталогов приложений.

Чтобы вывести локальную конфигурацию из файла config.yaml приложения, укажите имя приложения в качестве аргумента:

$ tt cluster show myapp

Просмотр конфигураций из централизованных хранилищ

Команда tt cluster show может выводить централизованные конфигурации кластера из хранилищ конфигурации обоих поддерживаемых типов: etcd или хранилища конфигурации на базе Tarantool.

Чтобы вывести конфигурацию кластера из централизованного хранилища, выполните команду tt cluster show с URI хранилища, включающим префикс, идентифицирующий приложение. Например, чтобы вывести конфигурацию приложения myapp из локального хранилища etcd:

$ tt cluster show "http://localhost:2379/myapp"

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

Помимо конфигураций всего кластера, команда tt cluster show может выводить конфигурации отдельных экземпляров в приложениях. В этом случае выводятся фрагменты YAML, описывающие отдельный раздел конфигурации экземпляра.

Чтобы вывести конфигурацию экземпляра из локального файла config.yaml, используйте аргумент application:instance:

$ tt cluster show myapp:instance-002

Чтобы вывести конфигурацию экземпляра из централизованного хранилища конфигурации, укажите имя экземпляра в аргументе name URI:

$ tt cluster show "http://localhost:2379/myapp?name=instance-002"

Валидация конфигурации

Чтобы проверять конфигурации при их выводе с помощью tt cluster show, включите валидацию, добавив параметр --validate:

$ tt cluster show "http://localhost:2379/myapp" --validate

replicaset

$ tt cluster replicaset SUBCOMMAND {APPLICATION[:APP_INSTANCE] | CONFIG_URI} [OPTION ...]

Команда tt cluster replicaset управляет экземплярами в наборе реплик. Она поддерживает следующие подкоманды:

promote

$ tt cluster replicaset promote CONFIG_URI INSTANCE_NAME [OPTION ...]

Команда tt cluster replicaset promote повышает указанный экземпляр, назначая его лидером набора реплик. Эта команда работает с кластерами Tarantool с централизованной конфигурацией и при режимах отказоустойчивости off и manual. Она обновляет централизованную конфигурацию в соответствии с указанными аргументами и перезагружает её:

  • Режим отказоустойчивости off: команда устанавливает значение rw для параметра database.mode на указанном экземпляре.

  • Режим отказоустойчивости manual: команда обновляет параметр leader в конфигурации набора реплик. Остальные экземпляры этого набора реплик переходят в режим только для чтения.

Пример:

$ tt cluster replicaset promote "http://localhost:2379/myapp" storage-001-a

demote

$ tt cluster replicaset demote CONFIG_URI INSTANCE_NAME [OPTION ...]

Команда tt cluster replicaset demote понижает экземпляр в наборе реплик. Эта команда работает с кластерами Tarantool с централизованной конфигурацией и при режиме отказоустойчивости off.

Команда устанавливает значение ro для параметра database.mode экземпляра и перезагружает конфигурацию.

expel

$ tt cluster replicaset expel CONFIG_URI INSTANCE_NAME [OPTION ...]

Команда tt cluster replicaset expel исключает экземпляр из кластера.

Пример:

$ tt cluster replicaset expel "http://localhost:2379" storage-b-002

roles

$ tt cluster replicaset roles [add|remove] CONFIG_URI ROLE_NAME [OPTION ...]

Команда tt cluster replicaset roles управляет ролями приложения в области конфигурации, указанной в параметрах команды. У неё есть две подкоманды:

  • add – добавляет роль;
  • remove – удаляет роль.

Используйте параметры --global, --group, --replicaset, --instance, чтобы указать область конфигурации для добавления или удаления ролей. Например, чтобы добавить роль для всех экземпляров в наборе реплик:

$ tt cluster replicaset roles add "http://localhost:2379" roles.my-role --replicaset storage-a

Чтобы удалить роль, определённую в глобальной области конфигурации:

$ tt cluster replicaset roles remove "http://localhost:2379" roles.my-role --global

Детали реализации

Изменения, вносимые командой tt cluster replicaset в хранилище конфигурации, выполняются транзакционно. При каждом вызове создаётся новая ревизия. При несовпадении ревизий возникает ошибка.

Если конфигурация кластера распределена по нескольким ключам в хранилище конфигурации (например, по двум путям /myapp/config/k1 и /myapp/config/k2), конфигурация затронутого экземпляра может присутствовать более чем в одном из них. Если она найдена по нескольким различным ключам, команда предлагает пользователю выбрать ключ для изменения. Пропустить выбор можно, добавив параметр -f/--force:

$ tt cluster replicaset promote "http://localhost:2379/myapp" storage-001-a --force

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

failover

$ tt cluster failover SUBCOMMAND [OPTION ...]

Команда tt cluster failover управляет управляемым переключением при отказе в кластерах Tarantool. Доступны следующие подкоманды:

switch

$ tt cluster failover switch CONFIG_URI INSTANCE_NAME [OPTION ...]

Команда tt cluster failover switch назначает указанный экземпляр мастером. Команда принимает следующие аргументы и параметры:

  • CONFIG_URI: URI хранилища конфигурации кластера.
  • INSTANCE_NAME: имя экземпляра.
  • [OPTION ...]: параметры, передаваемые команде.

В примере ниже команда tt cluster failover switch назначает storage-a-002 мастером:

$ tt cluster failover switch http://localhost:2379/myapp storage-a-002To check the switching status, run:tt cluster failover switch-status http://localhost:2379/myapp b1e938dd-2867-46ab-acc4-3232c2ef7ffe

Обратите внимание, что в выводе команды содержится идентификатор задачи, отвечающей за переключение мастера. Этот идентификатор можно использовать, чтобы проверить статус переключения мастер-экземпляра с помощью команды tt cluster failover switch-status.

switch-status

$ tt cluster failover switch-status CONFIG_URI TASK_ID

Команда tt cluster failover switch-status показывает статус переключения мастер-экземпляра. Команда принимает следующие аргументы:

  • CONFIG_URI: URI хранилища конфигурации кластера.
  • TASK_ID: идентификатор задачи, использованной для переключения мастер-экземпляра. Идентификатор задачи можно найти в выводе команды tt cluster failover switch.

Пример:

$ tt cluster failover switch-status http://localhost:2379/myapp b1e938dd-2867-46ab-acc4-3232c2ef7ffe

Аутентификация

Существует три способа передать учетные данные для подключения к централизованному хранилищу конфигурации. Все они применимы как к хранилищам на базе etcd, так и к хранилищам на базе Tarantool. Ниже приведен список этих способов в порядке убывания приоритета:

  1. Учетные данные, указанные в URI хранилища: https://username:password@host:port/prefix:

    $ tt cluster show "http://myuser:p4$$w0rD@localhost:2379/myapp"
  2. Параметры tt cluster -u/--username и -p/--password:

    $ tt cluster show "http://localhost:2379/myapp" -u myuser -p p4$$w0rD
  3. Переменные окружения TT_CLI_ETCD_USERNAME и TT_CLI_ETCD_PASSWORD:

    $ export TT_CLI_ETCD_USERNAME=myuser$ export TT_CLI_ETCD_PASSWORD=p4$$w0rD$ tt cluster show "http://localhost:2379/myapp"

Если в хранилище конфигурации включено шифрование соединения, передайте необходимые SSL-параметры в аргументах URI.

Формат URI

URI хранилища конфигурации кластера имеет следующий формат:

http(s)://[username:password@]host:port[/prefix][?arguments]
  • username и password задают учетные данные для подключения к хранилищу конфигурации.
  • prefix - базовый путь, идентифицирующий конкретное приложение в хранилище.
  • arguments задает параметры подключения. Доступны следующие аргументы:
    • name - имя экземпляра в конфигурации кластера.
    • key - целевой ключ конфигурации в указанном prefix.
    • timeout - время ожидания запроса в секундах. Значение по умолчанию: 3.0.
    • ssl_key_file - путь к файлу закрытого SSL-ключа.
    • ssl_cert_file - путь к файлу SSL-сертификата.
    • ssl_ca_file - путь к файлу доверенных центров сертификации (CA).
    • ssl_ca_path - путь к каталогу доверенных центров сертификации (CA).
    • ssl_ciphers - разделенный двоеточием (:) список наборов шифров SSL, которые могут использоваться для подключения (только для хранилища на базе Tarantool).
    • verify_host - проверка соответствия имени сертификата имени хоста. Значение по умолчанию: true.
    • verify_peer - проверка SSL-сертификата узла. Значение по умолчанию: true.

Параметры

-u, --username STRING

Имя пользователя для подключения к хранилищу конфигурации.

См. также раздел Аутентификация.

-p, --password STRING

Пароль для подключения к хранилищу конфигурации.

См. также раздел Аутентификация.

--force

Применяется к: publish, replicaset

  • publish: пропуск проверки при публикации. По умолчанию: false (проверка включена).
  • replicaset: пропуск выбора ключей для исправления. Подробнее см. Детали реализации.

-G, --global

Применяется к: replicaset roles

Применить операцию к глобальной области конфигурации, то есть ко всем экземплярам.

-g, --group

Применяется к: publish, replicaset roles

Имя группы конфигурации, к которой применяется операция.

-i, --instance

Применяется к: replicaset roles

Имя экземпляра, к которому применяется операция.

-r, --replicaset

Применяется к: publish, replicaset roles

Имя набора реплик, к которому применяется операция.

-t, --timeout UINT

Применяется к: failover

Время ожидания (в секундах) выполнения команды. По умолчанию: 30.

--validate

Применяется к: show

Проверить выводимую конфигурацию. По умолчанию: false (проверка отключена).

-w, --wait

Применяется к: failover

Дождаться завершения выполнения команды. По умолчанию: false (не ждать).

--with-integrity-check STRING

Применяется к: publish, replicaset

Генерировние хешей и подписей для проверки целостности.

См. также раздел %rext.