ATE Documentation portal logo
Помощь
Обновлена 30 октября 2026 г. в 12:05

Управление кластером через tt

Плейбуки для управления кластером: переключение лидера, начальная загрузка VShard, публикация и применение миграций, включение режима принудительного восстановления. Большинство операций выполняются через утилиту tt.

switch_leader.yml

Плейбук для переключения лидера набора реплик.

Перед переключением плейбук проверяет, что экземпляры находятся в статусе ready. Список допустимых статусов можно изменить через переменную tarantool_allowed_statuses, например ['ready','check_warnings'].

Плейбук определяет режим отказоустойчивости кластера и действует в зависимости от него:

  • election — вызывает box.ctl.promote() на целевом экземпляре и ожидает перехода в режим лидера в течение promote_timeout секунд;
  • supervised — выполняет команду tt cluster failover switch для целевого экземпляра и опрашивает результат через tt cluster failover switch-status до получения итогового статуса.

Режимы, отличные от election и supervised, не поддерживаются — плейбук завершится с ошибкой.

Переменные

Переменная

Описание

promote_timeout

Время ожидания перевода экземпляра в режим лидера в секундах (режим election). Значение по умолчанию: 120.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    playbooks/switch_leader.yml --limit ${LIMIT}

Запуск через Docker-образ инсталлятора:

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \        --extra-vars '{            "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",            "super_user":"'${SUPER_USER_NAME}'"        }' \        playbooks/switch_leader.yml --limit ${LIMIT}

tt_vshard_bootstrap.yml

Плейбук для начальной загрузки VShard в наборе реплик. Выполняется один раз на одном экземпляре (run_once): запускает команду tt replicaset vshard bootstrap, подключаясь к экземпляру по адресу из iproto.advertise.client.

Плейбук применяется к роутерам TQE: целевые хосты определяются пересечением с группой vshard_router_hosts. Плейбук идемпотентен: если VShard уже загружен, выполнение пропускается.

Переменные

Переменная

Описание

tarantool_tt_connect_username

Имя пользователя для подключения к экземпляру Tarantool. Значение по умолчанию: '' (пустая строка).

tarantool_tt_connect_password

Пароль для подключения к экземпляру Tarantool. Значение по умолчанию: '' (пустая строка).

tarantool_tt_timeout

Таймаут выполнения команды в секундах. Значение по умолчанию: 10.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    playbooks/tt_vshard_bootstrap.yml --limit ${LIMIT}

Запуск через Docker-образ инсталлятора:

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \        --extra-vars '{            "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",            "super_user":"'${SUPER_USER_NAME}'"        }' \        playbooks/tt_vshard_bootstrap.yml --limit ${LIMIT}

tt_migrations.yml

Плейбук для публикации и применения миграций. Выполняется один раз на одном экземпляре (run_once).

Если переменная tarantool_migrations_directory задана, плейбук:

  • копирует файлы миграций из tarantool_migrations_directory во временную директорию на удалённом сервере;
  • публикует миграции в хранилище конфигурации командой tt migrations publish;
  • применяет миграции командой tt migrations apply.

Если переменная не задана, публикация и применение миграций пропускаются.

Переменные

Переменная

Описание

tarantool_migrations_directory

Путь к директории с файлами миграций на стороне инсталлятора. Если переменная не задана, публикация и применение миграций пропускаются. Значение по умолчанию: null.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    -e tarantool_migrations_directory=${PATH_TO_MIGRATIONS} \    playbooks/tt_migrations.yml --limit ${LIMIT}

Запуск через Docker-образ инсталлятора:

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    -e PATH_TO_MIGRATIONS=${PATH_TO_MIGRATIONS} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \        --extra-vars '{            "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",            "super_user":"'${SUPER_USER_NAME}'",            "tarantool_migrations_directory":"'${PATH_TO_MIGRATIONS}'"        }' \        playbooks/tt_migrations.yml --limit ${LIMIT}

set_force_recovery.yml

Плейбук для запуска экземпляра в режиме принудительного восстановления (TT_FORCE_RECOVERY=true).

Плейбук временно устанавливает переменную окружения TT_FORCE_RECOVERY=true через файл переопределения systemd, перезагружает systemd и перезапускает экземпляр. Файл переопределения удаляется, а systemd перезагружается повторно, только после того как экземпляр достигнет допустимого статуса — таким образом режим принудительного восстановления действует только на один запуск, а при следующем перезапуске экземпляр возвращается в обычный режим. Если восстановление не удалось (экземпляр не достиг допустимого статуса), файл переопределения остаётся на месте — чтобы аварийный перезапуск не зацикливался на повреждённом снимке состояния, — а плейбук завершается с ошибкой.

Если включена переменная tarantool_snapshot, плейбук после запуска в режиме принудительного восстановления дожидается загрузки экземпляра, создаёт снимок состояния через box.snapshot() и перезапускает экземпляр в обычном режиме.

Переменные

Переменная

Описание

tarantool_snapshot

Создать снимок состояния (box.snapshot()) после запуска в режиме принудительного восстановления и перезапустить экземпляр в обычном режиме. Значение по умолчанию: false.

Примеры

Запуск через коллекцию:

ansible-playbook -i ${PATH_TO_INVENTORY} \    --user ${SUPER_USER_NAME} \    -e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \    playbooks/set_force_recovery.yml --limit ${LIMIT}

Запуск через Docker-образ инсталлятора:

docker run --network host -it --rm \    -v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \    -v ${PATH_TO_INVENTORY}:/ansible/inventories/hosts.yml:Z \    -e SUPER_USER_NAME=${SUPER_USER_NAME} \    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \    ansible-playbook -i /ansible/inventories/hosts.yml \        --extra-vars '{            "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",            "super_user":"'${SUPER_USER_NAME}'"        }' \        playbooks/set_force_recovery.yml --limit ${LIMIT}
Была ли статья полезна?