Управление конфигурациями кластера
$ tt cluster COMMAND [COMMAND_OPTION ...]
tt cluster управляет конфигурациями приложений
Tarantool. Команда работает как с локальными YAML-файлами в каталогах приложений, так и с
централизованными хранилищами конфигурации
(etcd или на базе Tarantool).
COMMAND может принимать одно из следующих значений:
$ 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
$ 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
$ tt cluster replicaset SUBCOMMAND {APPLICATION[:APP_INSTANCE] | CONFIG_URI} [OPTION ...]
Команда tt cluster replicaset управляет экземплярами в наборе реплик. Она поддерживает следующие подкоманды:
$ 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
$ tt cluster replicaset demote CONFIG_URI INSTANCE_NAME [OPTION ...]
Команда tt cluster replicaset demote понижает экземпляр в наборе реплик. Эта команда работает с кластерами
Tarantool с централизованной конфигурацией и при
режиме отказоустойчивости
off.
Команда устанавливает значение ro для параметра
database.mode экземпляра и
перезагружает конфигурацию.
$ tt cluster replicaset expel CONFIG_URI INSTANCE_NAME [OPTION ...]
Команда tt cluster replicaset expel исключает экземпляр из кластера.
Пример:
$ tt cluster replicaset expel "http://localhost:2379" storage-b-002
$ 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. При равном
приоритете изменяется первый ключ в лексикографическом порядке.
$ tt cluster failover SUBCOMMAND [OPTION ...]
Команда tt cluster failover управляет
управляемым переключением при отказе в
кластерах Tarantool. Доступны следующие подкоманды:
$ 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.
$ 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. Ниже приведен список этих способов в порядке убывания приоритета:
-
Учетные данные, указанные в URI хранилища:
https://username:password@host:port/prefix:$ tt cluster show "http://myuser:p4$$w0rD@localhost:2379/myapp" -
Параметры
tt cluster-u/--usernameи-p/--password:$ tt cluster show "http://localhost:2379/myapp" -u myuser -p p4$$w0rD -
Переменные окружения
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 хранилища конфигурации кластера имеет следующий формат:
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.
Имя пользователя для подключения к хранилищу конфигурации.
См. также раздел Аутентификация.
Пароль для подключения к хранилищу конфигурации.
См. также раздел Аутентификация.
Применяется к: publish, replicaset
publish: пропуск проверки при публикации. По умолчанию:false(проверка включена).replicaset: пропуск выбора ключей для исправления. Подробнее см. Детали реализации.
Применяется к: replicaset roles
Применить операцию к глобальной области конфигурации, то есть ко всем экземплярам.
Применяется к: publish, replicaset roles
Имя группы конфигурации, к которой применяется операция.
Применяется к: replicaset roles
Имя экземпляра, к которому применяется операция.
Применяется к: publish, replicaset roles
Имя набора реплик, к которому применяется операция.
Применяется к: failover
Время ожидания (в секундах) выполнения команды. По умолчанию:
30.
Применяется к: show
Проверить выводимую конфигурацию. По умолчанию: false
(проверка отключена).
Применяется к: failover
Дождаться завершения выполнения команды. По умолчанию:
false (не ждать).
Применяется к: publish, replicaset
Генерировние хешей и подписей для проверки целостности.
См. также раздел %rext.