Обновление Tarantool DB | Tdb

Version:

latest

Обновление Tarantool DB

Для обновления версии Tarantool DB рекомендуется использовать инсталлятор Ansible Tarantool Enterprise (ATE). Подробная информация об инсталляторе ATE приведена в разделе Установка через Ansible Tarantool Enterprise.

Примечание

В руководстве используется Ansible Tarantool Enterprise версии 1.2.0.

Содержание:

Обновление приложения через ATE с помощью Docker

Чтобы обновить Tarantool DB, используйте команду ниже. Команда производит одновременный перезапуск всех экземпляров Tarantool на всех серверах. Рекомендуется использовать на тестовых контурах, если необходимо ускорить развертывание.

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}:/ansible/packages/${PACKAGE_NAME}:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    -e PACKAGE_NAME=${PACKAGE_NAME} \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars '{
        "cartridge_package_path":"/ansible/packages/'${PACKAGE_NAME}'",
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"tarantool",
    }' \
    playbooks/update.yml

Здесь:

  • PATH_TO_PRIVATE_KEY (string) – полный путь к приватному ключу;

  • PATH_TO_INVENTORY (string) – полный путь к файлу инвентаря;

  • PATH_TO_PACKAGE (string) – путь к архиву Tarantool DB;

  • PACKAGE_NAME (string) – название архива Tarantool DB;

  • SUPER_USER_NAME (string) – имя пользователя для подключения по SSH;

  • DEPLOY_TOOL_VERSION_TAG (string) – версия инсталлятора.

Узнать больше: Переменные окружения.

Обновление приложения без простоя через ATE с помощью Docker

Типичная топология кластеров Tarantool подразумевает наличие двух датацентров – активного и резервного. Каждый набор реплик хранилища имеет одну или несколько реплик в обоих датацентрах.

Процесс обновления постепенно перезапускает экземпляры Tarantool в каждом из датацентров, переключая при этом роль лидера в наборах реплик. Таким образом, кластер всегда остается доступен на запись.

При обновлении можно управлять количеством одновременных обновлений экземпляров хранилища и роутеров. Также обязательными являются переменные TARANTOOL_ACTIVE и tarantool_reserve.

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}:/ansible/packages/${PACKAGE_NAME}:Z \
    -e SUPER_USER_NAME=${SUPER_USER_NAME} \
    -e PACKAGE_NAME=${PACKAGE_NAME} \
    -e CLUSTER_IS_HEALTHY_RETRIES=100 \
    -e CLUSTER_IS_HEALTHY_DELAY=10 \
    -e STORAGES_BATCH_SIZE=2 \
    -e ROUTERS_BATCH_SIZE=2 \
    ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \
    ansible-playbook -i /ansible/inventories/hosts.yml \
    --extra-vars '{
        "cartridge_package_path":"/ansible/packages/'${PACKAGE_NAME}'",
        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",
        "super_user":"'${SUPER_USER_NAME}'",
        "tarantool_shared_become_user":"tarantool",
        "wait_members_alive_retries":"'${CLUSTER_IS_HEALTHY_RETRIES}'",
        "wait_members_alive_delay":"'${CLUSTER_IS_HEALTHY_DELAY}'",
        "wait_cluster_has_no_issues_retries":"'${CLUSTER_IS_HEALTHY_RETRIES}'",
        "wait_cluster_has_no_issues_delay":"'${CLUSTER_IS_HEALTHY_DELAY}'",
        "storages_batch_size":"'${STORAGES_BATCH_SIZE}'",
        "routers_batch_size":"'${ROUTERS_BATCH_SIZE}'",
        "tarantool_active":"'${TARANTOOL_ACTIVE}'",
        "tarantool_reserve":"'${TARANTOOL_RESERVE}'"
    }' \
    playbooks/update_2x.yml

Здесь:

  • PATH_TO_PRIVATE_KEY (string) – полный путь к приватному ключу;

  • PATH_TO_INVENTORY (string) – полный путь к файлу инвентаря;

  • PATH_TO_PACKAGE (string) – путь к архиву Tarantool DB;

  • PACKAGE_NAME (string) – название архива Tarantool DB;

  • SUPER_USER_NAME (string) – имя пользователя для подключения по SSH;

  • DEPLOY_TOOL_VERSION_TAG (string) – версия инсталлятора;

  • TARANTOOL_ACTIVE (string) – группа хостов, которая состоит из всех экземпляров Tarantool в активном датацентре. Активным является датацентр, который принимает пользовательские запросы и включает в себя всех leader наборов репллик;

  • TARANTOOL_RESERVE (string) – хосты, не попавшие в TARANTOOL_ACTIVE. Группа хостов, состоящая из всех экземпляров Tarantool в резервном датацентре.

  • STORAGES_BATCH_SIZE (number) – количество экземпляров с ролью storage, которые обновляются одновременно;

  • ROUTERS_BATCH_SIZE (number) – количество экземпляров с ролью router или runner, которые обновляются одновременно;

  • CLUSTER_IS_HEALTHY_RETRIES (number):

    • wait_members_alive_retries – количество проверок доступности экземпляров;

    • wait_cluster_has_no_issues_retries – количество проверок консистентности кластера;

  • CLUSTER_IS_HEALTHY_DELAY (number):

    • wait_members_alive_delay – интервал между проверками доступности экземпляров;

    • wait_cluster_has_no_issues_delay – интервал между проверками консистентности кластера.

Узнать больше: Переменные окружения.

Found what you were looking for?
Feedback