Жизненный цикл
Плейбуки для управления жизненным циклом экземпляров Tarantool: установка, настройка, запуск, остановка, проверка состояния, перенос между серверами и удаление.
Универсальный плейбук установки продуктов на основе Tarantool 3.x Enterprise Edition:
- Tarantool 3.x (приложения, TDB);
- TCF (Tarantool Clusters Federation);
- TQE (Tarantool Queue Enterprise);
- TCS (Tarantool Column Store);
- TCM (Tarantool Cluster Manager);
- CDC (Change Data Capture).
Плейбук автоматически определяет тип компонента по группам хостов в инвентаре и выполняет соответствующую установку. Для каждого компонента предусмотрен отдельный play, выбирающий хосты пересечением базовой группы и группы продукта.
Группы хостов формируются автоматически на этапе подготовки (prepare) на основе переменной ate_instance_type, заданной для каждого экземпляра. Задавать эту переменную вручную не требуется.
При использовании генератора инвентаря значение ate_instance_type определяется автоматически: по типу кластера и имени компонента, к которому относится экземпляр, генератор выбирает соответствующий класс экземпляра, который и выставляет значение ate_instance_type.
Группа | Экземпляры | Значение |
|---|---|---|
| Экземпляры Tarantool 3.x |
|
| TCF Destination |
|
| TCF Gateway |
|
| TQE |
|
| TCS Scheduler |
|
| TCM |
|
| CDC |
|
Общие переменные установки:
Переменная | Описание |
|---|---|
| Путь к пакету приложения. Обязательная переменная. |
| Имя приложения Tarantool. Обязательная переменная. |
| Настраивать ротацию журналов при установке. Значение по умолчанию: |
Параметры подключения к хранилищу конфигурации (используются при установке кластера Tarantool):
Переменная | Описание |
|---|---|
| Тип хранилища конфигурации: |
| Список конечных точек хранилища конфигурации. Для etcd — список URL-строк (например, |
| Признак того, что устанавливаемый кластер Tarantool сам используется в качестве Config Storage. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \-e tarantool_package_path="${PATH_TO_PACKAGE}/${PACKAGE_NAME}" \playbooks/install.yml
Запуск через 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 \-v ${PATH_TO_PACKAGE}/${PACKAGE_NAME}:/ansible/packages/${PACKAGE_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"tarantool_package_path":"/ansible/packages/'${PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'"}' \playbooks/install.yml
Для установки на уровне системы (под пользователем root) задайте переменные tarantool_shared_become_user=root и systemd_scope=system.
Плейбук для генерации конфигурации Tarantool 3.x и её отправки в централизованное хранилище конфигурации.
Поддерживаемые хранилища:
- etcd (значение по умолчанию);
- Tarantool;
- локальный файл.
Поведение плейбука зависит от переменной tarantool_config_storage:
- при
etcd— конфигурация генерируется и отправляется в etcd; - при
tarantool— конфигурация генерируется, сохраняется локально и публикуется в хранилище на базе Tarantool черезtt cluster publish(публикация не выполняется, если сам устанавливаемый кластер используется в качестве хранилища конфигурации —is_config_storage: true); - при
local— конфигурация генерируется и сохраняется локально. Рекомендуется использовать только для развёртывания TbCS.
Переменная | Описание |
|---|---|
| Тип хранилища конфигурации: |
| Список конечных точек хранилища конфигурации. Для etcd — список URL-строк (например, |
| Префикс ключа в хранилище конфигурации, под которым хранится конфигурация кластера. Применяется в обоих режимах (etcd и Tarantool). Значение по умолчанию: |
| Имя приложения. Используется как часть префикса ключа в хранилище конфигурации. При использовании генератора инвентаря формируется автоматически: по умолчанию равен |
| Признак того, что кластер сам используется в качестве хранилища конфигурации (TbCS). При |
В режиме tarantool вся настройка TLS и аутентификации указывается в словаре tarantool_config_storage_endpoints — отдельные переменные tarantool_etcd_* для SSL в этом режиме не применяются:
tarantool_config_storage_endpoints:- uri: "https://config-storage-01:4401"login: "config-storage"password: {{ secure_password }}params:transport: "ssl"ssl_cert_file: '/app/tarantool/certs/server.crt'ssl_key_file: '/app/tarantool/certs/server.key'
Параметры SSL для подключения к etcd (только режим etcd) и подробное описание подключения приведены в разделе Переменные окружения.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/configure.yml --limit ${HOSTS}
Запуск через 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/configure.yml --limit ${HOSTS}
Плейбук для запуска экземпляров Tarantool. Выполняет подготовку переменных, определение операционной системы и запуск systemd-сервиса экземпляра.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/start.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/start.yml --limit ${LIMIT}
Плейбук для остановки экземпляров Tarantool. Выполняет подготовку переменных, определение операционной системы и остановку systemd-сервиса экземпляра.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/stop.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/stop.yml --limit ${LIMIT}
Плейбук для перезапуска экземпляров Tarantool. Выполняет подготовку переменных, определение операционной системы и перезапуск systemd-сервиса экземпляра.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/restart.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/restart.yml --limit ${LIMIT}
Плейбук для проверки состояния экземпляров Tarantool 3.x. Подключается к консольному сокету экземпляра и проверяет, что его состояние входит в список допустимых. Проверка выполняется с повторными попытками.
Переменная | Описание |
|---|---|
| Список допустимых состояний экземпляра. Значение по умолчанию: |
| Количество повторных попыток проверки состояния. Значение по умолчанию: |
| Задержка между попытками в секундах. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/check.yml
Запуск через 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/check.yml
Список допустимых состояний можно изменить через переменную tarantool_allowed_statuses, например задав ей значение ['ready','check_warnings'].
Плейбук для удаления экземпляров Tarantool и связанных компонентов. Останавливает и удаляет systemd unit-файлы, удаляет директории кластера и очищает ключи в хранилище конфигурации.
Удаление экземпляров Tarantool выполняется по умолчанию. Удаление остальных компонентов происходит только при явном указании соответствующего тега:
Тег | Что удаляется |
|---|---|
| Экземпляры Tarantool, GRPC-сервисы и ключи в хранилище конфигурации (по умолчанию). |
| Tarantool Clusters Federation. |
| Tarantool Cluster Manager. |
| Tarantool Column Store. |
Теги можно комбинировать. Например, --tags tarantool,tcf,tcm удалит экземпляры Tarantool, TCF и TCM.
Переменная | Описание |
|---|---|
| Запрашивать интерактивное подтверждение перед удалением. Значение по умолчанию: |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/uninstall.yml --tags tarantool
Запуск через 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/uninstall.yml --tags tarantool
Плейбук для пересоздания экземпляра Tarantool с потерей данных. Останавливает экземпляр, очищает его данные, запускает заново и дожидается готовности.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/rebootstrap.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/rebootstrap.yml --limit ${LIMIT}
Плейбук для штатного удаления экземпляров или целых наборов реплик из кластера с сохранением работоспособности оставшихся экземпляров.
Для наборов реплик с шардированием плейбук предварительно устанавливает вес набора реплик в 0 и дожидается завершения ребалансировки бакетов, чтобы избежать потери данных. Затем удаляет экземпляры из конфигурации кластера в хранилище, останавливает их systemd-сервисы и удаляет файлы. В конце проверяет состояние оставшихся экземпляров кластера.
Переменная | Описание |
|---|---|
| Имя набора реплик для удаления целиком. Режим удаления набора реплик. |
| Список экземпляров для удаления. Режим удаления отдельных экземпляров. |
| Пропустить проверку состояния оставшегося кластера после удаления. Значение по умолчанию: |
| Количество повторных проверок при ожидании ребалансировки бакетов. Значение по умолчанию: |
| Задержка между проверками ребалансировки в секундах. Значение по умолчанию: |
Цели удаления определяются в следующем порядке: instances_to_remove (удаление отдельных экземпляров), replicaset_to_remove (удаление набора реплик), либо параметр --limit (удаление отдельных экземпляров, попавших в ограничение). Укажите ровно один из способов.
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/remove_instances.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/remove_instances.yml --limit ${LIMIT}
Плейбук для переноса экземпляров Tarantool 3.x с одного сервера на другой на работающем кластере. Предназначен для выполнения шагов миграции во время исполнения: устанавливает новые экземпляры на целевом сервере, дожидается синхронизации репликации, удаляет старые экземпляры и проверяет состояние кластера.
Плейбук выполняет шаги в следующем порядке:
- Разрешает параметры миграции — имена новых и удаляемых экземпляров и целевой сервер.
- Подготавливает операционную систему целевого сервера (от имени пользователя root).
- Загружает полную конфигурацию кластера в хранилище конфигурации.
- Устанавливает новые экземпляры и проверяет их состояние.
- Ожидает синхронизации репликации на новых экземплярах. Проверка выполняется всегда, перед удалением старых экземпляров (подробнее — в описании переменных
tarantool_replication_sync_*в разделе «Переменные окружения»). - Удаляет старые экземпляры (штатное удаление, как в
remove_instances.yml). - Выполняет финальную проверку состояния оставшегося кластера.
Переменная | Описание |
|---|---|
| Целевой сервер (имя группы хостов в инвентаре), на который переносятся экземпляры. |
| Список имён новых экземпляров, устанавливаемых на целевом сервере. |
| Список имён старых экземпляров, удаляемых после синхронизации репликации. |
Запуск через коллекцию:
ansible-playbook -i ${PATH_TO_INVENTORY} \--user ${SUPER_USER_NAME} \-e ansible_ssh_private_key_file=${PATH_TO_PRIVATE_KEY} \playbooks/relocate_instances.yml