Сценарии администрирования продуктов
Далее по документации будут встречаться следующие переменные окружения:
- SUPER_USER_NAME — имя пользователя для SSH-подключения.
- PATH_TO_PRIVATE_KEY — полный путь к приватному ключу.
- PATH_TO_INVENTORY — полный путь к файлу инвентаря.
- PATH_TO_PACKAGE — полный путь к архиву с приложением.
- PACKAGE_NAME — имя архива с приложением.
- DEPLOY_TOOL_VERSION_TAG — версия инсталлятора.
- LIMIT — указание для Ansible, на каких хостах или группах хостов производить действия.
Дополнительные переменные описаны в каждом пункте по мере необходимости.
Пример инвентаря для продукта Tarantool Cartridge можно найти в разделе Подготовка к использованию.
Часть переменных используется внутри контейнера во время запуска сценария.
Значения переменных передаются в контейнер с помощью опции -e.
Переменная LIMIT — обычный параметр limit для Ansible.
Указывать limit можно для любого сценария. В некоторых случаях — обязательно.
Можно использовать специальное значение лимита all, чтобы запустить сценарий на всех экземплярах Tarantool.
Сценарии используются для развертывания, обновления, а также администрирования приложений и продуктов на основе Tarantool 3.x Enterprise Edition (например, TDB 2.x, TCS и т.д.). Смотрите также: Примеры инвентарей Tarantool 3.x.
Конфигурация Tarantool 3.x генерируется из инвентаря.
Вы можете изменить значения секций конфигурации на любом из уровней окружения. За каждый уровень отвечают собственные переменные:
global-- общая переменнаяtarantool_config_global.group--tarantool_config_groupна уровне Ansible-групп.replicaset--tarantool_config_replicasetна том же уровне Ansible-групп, где определена переменнаяreplicaset_alias.instance-- собственные переменные у хоста.
Во время запуска Tarantool отдает приоритет уровням в указанном порядке, где самый приоритетный -- уровень instance.
Переменная replicaset_alias обязательна, так как экземпляры объединяются в наборы реплик на основе её значения.
Основной сценарий для развертывания приложений и продуктов на основе Tarantool 3.x Enterprise Edition (например, TDB 2.x).
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} \-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}'"}' \playbooks/install_3_0.yml
Для выполнения развертывания в system space (под пользователем root) убедитесь, что переменная tarantool_shared_become_user установлена в root и добавьте переменную systemd_scope со значением system.
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} \-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":"root","systemd_scope":"system"}' \playbooks/install_3_0.yml
Текущий подход к хранению конфигурации -- отказоустойчивый кластер ETCD.
Данный сценарий сохраняет сгенерированный из инвентаря файл конфигурации в ETCD по ключу
/tarantool/{{ cartridge_app_name }}/config/all.
Обязательно укажите адрес сервера ETCD в переменной tarantool_etcd_host.
Адрес должен быть доступен с сервера, на котором разворачиваются экземпляры 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 \-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/etcd_3_0.yml --limit ${HOSTS}
Дополнительные переменные:
-
etcd_schema_definition (string) — Протокол используемый для передачи данных в etcd.
- http ← (default)
-
etcd_validate_certs (string) — Наличие проверки серверного сертификата etcd.
-
etcd_client_cert (string) — Путь к ssl-сертификату используемому для установки соединения с etcd.
-
etcd_client_key (string) — Путь к ssl-ключу используемому для установки соединения с etcd.
-
etcd_ca_path (string) — Путь к ca-сертификату используемому для установки соединения с etcd.
-
etcd_tarantool_username (string) — Имя пользователя для логина в etcd.
-
etcd_tarantool_password (string) — Пароль пользователя для логина в etcd.
В этом сценарии с минимальным временем простоя выполняется последовательное (rolling) обновление кластера Tarantool 3.x с роутерами и stateless-экземплярами (координаторы, scheduler, grpc-сервисы).
Во время данного сценария не все экземпляры Tarantool обновляются одновременно. Процесс постепенно перезапускает экземпляры, переключая при этом роль лидера в наборах реплик. Таким образом кластер всегда остается доступен на запись. В сценарии также предусмотрено обновление экземпляров, не принадлежащих кластеру Tarantool 3.x (экземпляры scheduler, grpc-сервисы) и stateless-узлов.
В сценарии можно управлять количеством одновременных обновлений экземпляров хранилища.
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 STORAGE_GROUP_NAME=${STORAGE_GROUP_NAME} \-e PATH_TO_BACKUP_DIRECTORY=${PATH_TO_BACKUP_DIRECTORY} \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_shared_become_user":"tarantool","cartridge_package_path":"/ansible/packages/'${PACKAGE_NAME}'","storage_group":"${STORAGE_GROUP_NAME}"}' \playbooks/continuous_update.yml
Обязательные переменные:
- tarantool_3_0_version_support (boolean) — поддержка Tarantool 3.x. Обязательное значение --
true.- true
- undefined ← (default)
- tarantool_group (string) — группа экземпляров, на которых будет проходить обновление. Если переменная не указана, обновление пройдет на всех экземплярах из файла инвентаря.
- all ← (default)
- storage_group (string) — группа экземпляров хранилища, которые нужно обновить. Если переменная не указана, узлы хранилища будут определены автоматически. Обновление экземпляров хранилища происходит отдельно, и эта переменная позволяет отделить такие экземпляры от остальных типов узлов в кластере.
Дополнительные переменные:
- update_batch_size (string) — количество параллельно обновляемых узлов хранилища.
- 1 ← (default)
- tt_failover_status_retries (number) — количество повторных попыток для проверки статуса восстановления после отказа (failover).
- 5 ← (default)
- tt_failover_status_delay (number) — задержка в секундах для проверки статуса восстановления после отказа.
- 50 ← (default)
- schedulers_name_list (string) — список экземпляров scheduler. Данная переменная необходима, если в inventory-файле для экземпляров scheduler задана переменная replicaset_alias.
Внутри этого плейбука используются переменные из других плейбуков:
- check_3_0
- tarantool_wait_alive_retries (integer) — количество повторных проверок доступности экземпляра Tarantool после рестарта.
- tarantool_wait_alive_delay (integer) — время ожидания (в секундах) между проверками доступности экземпляра.
- tt_failower_switch
- tt_failover_status_timeout (integer) — время ожидания в секундах выполнения команды failover switch.
- tt_failover_status_retries (integer) — количество ретраев для запроса статуса выполнения команды failover switch.
- tt_failover_status_delay (integer) — время ожидания в секундах выполнения команды failover status.
- promote_leader
- promote_timeout (integer) — время ожидания в секундах выполнения promote на инстансе.
-
Сбор информации о кластере и проверка его работоспособности:
- определение порядка обновления экземпляров хранилища (storage);
- проверка режима работы восстановления после отказа;
- определение списка мастер-узлов, экземпляров хранилища и stateless-экземпляров.
- проверка работоспособности всех узлов кластера Tarantool перед обновлением;
-
Переключение мастер-узла:
- передача роли мастера списку выбранных хостов под названием
replicaset_masters_list; - проверка здоровья кластера после передачи роли мастера.
- передача роли мастера списку выбранных хостов под названием
-
Обновление реплик:
- параллельное обновление списка реплик
replicaset_upgrade_targetsс шагомupdate_batch_size; - проверка здоровья кластера после обновления.
- параллельное обновление списка реплик
-
Переключение мастера и обновление хостов предыдущих мастер-узлов. На этом этапе происходит передача роли мастера списку хостов
new_masters_list, чтобы обновить хосты мастер-узлов в спискеreplicaset_masters_list. -
Параллельное обновление stateless-сервисов кроме роутеров с шагом
update_batch_size. -
Обновление схемы данных:
- обновление схемы данных на
replicaset_masters_listиrouters_list; - проверка здоровья кластера после обновления.
- обновление схемы данных на
-
Обновление списка scheduler-хостов.
-
Финальная проверка здоровья кластера после обновления. На этом этапе идет проверка здоровья всех экземпляров Tarantool.
Добавлено в версии 1.13.0
Настройте параметр iproto.listen.[0].params в соответствии с
документацией Tarantool
с помощью переменной tarantool_iproto_ssl_params:
---plugin: tarantool.enterprise.generatorcluster_name: tarantoolproduct: tarantoolconstants:tarantool_iproto_ssl_params:transport: 'ssl'ssl_cert_file: 'certs/server.crt'ssl_key_file: 'certs/server.key'...
Всё, что задано в переменной tarantool_iproto_ssl_params, будет указано в конфигурации Tarantool в каждой секции
<instance>.iproto.listen.[0].params "как есть".
Например, указанные выше настройки будут преобразованы в следующую секцию конфигурации для всех экземпляров:
"storage-r01-i01": {"iproto": {"advertise": {"client": "127.0.0.1:3301"},"listen": [{"params": {"ssl_cert_file": "certs/server.crt","ssl_key_file": "certs/server.key","transport": "ssl"},"uri": "127.0.0.1:3301"}]
Задать параметр в глобальной секции конфигурации Tarantool можно аналогично другим глобальным настройкам Tarantool:
tarantool_config_global:iproto:advertise:peer:login: replicatorsharding:login: storageclient: unix/:{{ cartridge_run_dir }}/{% raw %}{{ instance_name }}{% endraw %}.iprotolisten:- uri: unix/:/app/tarantool/kvee/run/{% raw %}{{ instance_name }}{% endraw %}.iprotoparams:ssl_cert_file: certs/server.crtssl_key_file: certs/server.keytransport: ssl
Настройка failover с внешним координатором потребует изменений в инвентаре.
- Установите параметр
replication.failoverв значениеsupervisedна одном из уровней конфигурации:tarantool_config_replicaset,tarantool_config_group,tarantool_config_global.
tarantool_config_replicaset:replication:failover: supervised
-
Добавьте новые экземпляры и укажите для них переменную
tarantool_coordinator: true. -
Добавьте пользователю с ролью
replicationпривилегии для выполнения функцииfailover.execute.
tarantool_config_global:credentials:users:replicator:password: 'i-changed-a-password-here'roles: ['replication']privileges:- permissions: [execute]lua_call: [failover.execute]
Добавлено в версии 1.10.0
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}'","tarantool_shared_become_user":"tarantool","tt_failover_status_timeout": 30,"tt_failover_status_retries": 3,"tt_failover_status_delay": 5}' \playbooks/tt_failover_switch.yml --limit ${LIMIT}
Дополнительные переменные:
- tt_failover_status_timeout (integer) — время ожидания в секундах выполнения команды failover switch. Например:
'{"tt_failover_status_timeout": 30}'. - tt_failover_status_retries (integer) — количество повторных попыток для запроса статуса выполнения команды failover switch. Например:
'{"tt_failover_status_retries": 3}'. - tt_failover_status_delay (integer) — время ожидания в секундах выполнения команды failover status. Например:
'{"tt_failover_status_delay": 5}'. - tt_ssl_key_file_path (string) — путь к клиентскому ssl-ключу. Например:
'{"tt_ssl_key_file_path": "/certs/client.key"}'. - tt_ssl_cert_file_path (string) — путь к клиентскому ssl-сертификату. Например:
'{"tt_ssl_cert_file_path": "/certs/client.crt"}'. - tt_ssl_ca_file_path (string) — путь к доверенному ca-сертификату. Например:
'{"tt_ssl_ca_file_path": "/certs/rootCA.crt"}'. - tt_etcd_schema_definition (string) — Протокол используемый для передачи данных в etcd. Например:
'{"tt_etcd_schema_definition": "http"}'. - tt_ssl_verify_host (string) — Наличие проверки серверного сертификата etcd. Например:
'{"tt_ssl_verify_host": "False"}'. - tt_etcd_username (string) — Имя пользователя для логина в etcd.
- tt_etcd_password (string) — Пароль пользователя для логина в etcd.
Сценарии используются для развертывания, обновления, а также администрирования приложений и продуктов на основе Tarantool Cartridge (например, TDG, TDB 1.x и т.д.). Смотрите также: Примеры инвентарей Tarantool Cartridge.
Основной сценарий для развертывания приложений и продуктов на основе Tarantool Cartridge (например, TDG, TDB 1.x и т.д.). Используйте после подготовки серверов к развертыванию.
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/deploy.yml
Для выполнения развертывания в system space (под пользователем root) убедитесь,
что переменная tarantool_shared_become_user установлена в root и добавьте переменную
systemd_scope со значением system.
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":"root","systemd_scope":"system"}' \playbooks/deploy.yml
Дополнительные переменные:
- tarantool_configure_logrotate (boolean) — настраивает ротацию журналов с помощью утилиты
logrotate. Имеет смысл только при записи журналов или журналов аудита в файл.- true
- undefined ← (default)
Сценарий для обновления Tarantool Data Grid, а также приложений и продуктов на основе Tarantool Cartridge. Производит одновременный перезапуск всех экземпляров 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
Типичная топология кластеров Tarantool подразумевает наличие двух дата-центров: активного и резервного. Каждый набор реплик хранилища имеет одну или несколько реплик в обоих дата-центрах.
Во время данного сценария не все экземпляры Tarantool обновляются одновременно. Процесс постепенно перезапускает экземпляры в каждом из дата-центров, переключая при этом роль лидера в наборах реплик. Таким образом кластер всегда остается доступен на запись.
В сценарии можно управлять количеством одновременных обновлений экземпляров хранилища и роутеров.
Обязательными являются переменные tarantool_active_hosts, tarantool_passive_hosts и tarantool_stateless_hosts.
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 UPDATE_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}'","update_batch_size":"'${UPDATE_BATCH_SIZE}'","tarantool_active_hosts":"'${TARANTOOL_ACTIVE}'","tarantool_reserve_hosts":"'${TARANTOOL_RESERVE}'","tarantool_stateless_hosts":"'${TARANTOOL_STATELESS}'"}' \playbooks/update_2x.yml
Обязательные переменные:
- tarantool_active_hosts (string) — группа хостов, которая состоит из экземпляров Tarantool в активном дата-центре. Активным является дата-центр, который принимает пользовательские запросы и включает в себя всех лидеров наборов реплик.
- tarantool_passive_hosts (string) — хосты, не попавшие в tarantool_active_hosts. По своей сути является группой хостов, состоящей из всех экземпляров Tarantool в резервном дата-центре.
- tarantool_stateless_hosts (string) - все остальные экземпляры Tarantool, которые не требуют обязательного обновления по плечам, например роутеры.
- update_batch_size (number) — количество экземпляров, которые будут обновляться одновременно.
- wait_members_alive_retries (number) — количество проверок доступности экземпляров.
- wait_members_alive_delay (number) — время ожидания между проверками доступности экземпляров.
- wait_cluster_has_no_issues_retries (number) — количество проверок консистентности кластера.
- wait_cluster_has_no_issues_delay (number) — время ожидания между проверками консистентности кластера.
Сценарий доставки новой версии продукта без перезапуска экземпляров.
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} \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_bundle.yml
Сценарий запускает процесс обновления схемы данных. Аналогичен сценарию миграции для 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 \-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}'","tarantool_shared_become_user":"tarantool",}' \playbooks/migrations.yml
Сценарий используется для обновления поставки приложения и последующей перезагрузки ролей Tarantool Cartridge для обновления без перезапуска.
Предусмотрено два вида данного сценария:
-
reload_roles.yml-- для кластера без избыточности.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/reload_roles.yml -
reload_roles_2x.yml-- для кластера с избыточностью "2".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 CLUSTER_IS_HEALTHY_RETRIES=100 \-e CLUSTER_IS_HEALTHY_DELAY=10 \-e UPDATE_BATCH_SIZE=2 \-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","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}'","update_batch_size":"'${UPDATE_BATCH_SIZE}'","tarantool_active_hosts":"'${TARANTOOL_ACTIVE}'","tarantool_reserve_hosts":"'${TARANTOOL_RESERVE}'","tarantool_stateless_hosts":"'${TARANTOOL_STATELESS}'"}' \playbooks/reload_roles_2x.yml
Обязательные переменные:
- tarantool_active_hosts (string) — группа хостов, которая состоит из экземпляров Tarantool в активном дата-центре. Активным является дата-центр, который принимает пользовательские запросы и включает в себя всех лидеров наборов реплик.
- tarantool_passive_hosts (string) — хосты, не попавшие в tarantool_active_hosts. По своей сути является группой хостов, состоящей из всех экземпляров Tarantool в резервном дата-центре.
- tarantool_stateless_hosts (string) - все остальные экземпляры Tarantool, которые не требуют обязательного обновления по плечам, например роутеры.
- update_batch_size (number) — количество экземпляров, которые будут обновляются одновременно.
- wait_members_alive_retries (number) — количество проверок доступности экземпляров.
- wait_members_alive_delay (number) — время ожидания между проверками доступности экземпляров.
- wait_cluster_has_no_issues_retries (number) — количество проверок консистентности кластера.
- wait_cluster_has_no_issues_delay (number) — время ожидания между проверками консистентности кластера.
Смотрите также: Примеры инвентарей TCM.
Сценарий предназначен для развертывания, настройки и запуска продукта Tarantool Cluster Manager.
Команда для запуска сценария с помощью Docker-образа:
- PATH_TO_PACKAGE - путь до директории с архивами.
- TCM_PACKAGE_NAME — имя архива с поставкой Tarantool Cluster Manager.
- HOSTS - указание группы хостов TCM, например
clusters-managerиз примера инвентаря.
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/tcm.yml:Z \-v ${PATH_TO_PACKAGE}/${TCM_PACKAGE_NAME}:/ansible/packages/${TCM_PACKAGE_NAME}:Z \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/tcm.yml \--extra-vars '{"tcm_package_path":"/ansible/packages/'${TCM_PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcm/install.yml
Команда для запуска сценария с помощью Docker-образа:
- HOSTS - указание группы хостов TCM, например
clusters-managerиз примера инвентаря.
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_INVENTORY}:/ansible/inventories/tcm.yml:Z \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/tcm.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcm/restart.yml
Для развертывания, обновления и администрирования TDG используются сценарии из разделов Tarantool Cartridge и Общие сценарии администрирования.
Смотрите также: Примеры инвентарей TDG.
В продукте Tarantool Data Grid бизнес-логика поставляется в виде архива с конфигурацией. Этот сценарий загружает конфигурацию в кластер TDG.
- TDG_CONFIG_DIR — полный путь к директории с конфигурациями TDG.
- TDG_CONFIG_NAME — имя архива с конфигурацией, например
my-app-config-1.0.0.zip.
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 ${TDG_CONFIG_DIR}/${TDG_CONFIG_NAME}:/ansible/packages/${TDG_CONFIG_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e TDG_CONFIG_NAME=${TDG_CONFIG_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"cartridge_app_config_path":"/ansible/packages/'${TDG_CONFIG_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool",}' \playbooks/tdg_config.yml
Сценарий используется для включения (и отключения) режима разработчика в Tarantool Data Grid.
Сценарий может запускаться без лимита.
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}'","tarantool_shared_become_user":"tarantool","tdg_dev_mode":"true"}' \playbooks/switch_tdg_mode.yml
Обязательные переменные:
- tdg_dev_mode (string) - флаг управления режимом разработчика: false (по умолчанию) - выключить DEV_MODE, true - включить DEV_MODE;
Для развертывания, обновления и администрирования Tarantool DB используются следующие сценарии:
-
TDB 1.x: сценарии из разделов
- Tarantool Cartridge
- Tarantool DB 1.x: Запуск модуля миграций
- Tarantool DB 1.x: Загрузка кода миграций через конфигурацию
- Общие сценарии администрирования.
Для загрузки и применения миграций в TDB 1.x используются сценарии
-
TDB 2.x: сценарии из разделов
Для публикации и применения миграций в TDB 2.x используется сценарий
Смотрите также: Примеры инвентарей TDB.
Сценарий предназначен исключительно для продукта Tarantool DB 1.x. Сценарий запускает процесс обновления схемы данных. Аналогичен сценарию миграции для Tarantool Enterprise Edition.
Подробная информация о миграциях приведена в документации по Tarantool и Tarantool DB.
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}'","tarantool_shared_become_user":"tarantool",}' \playbooks/migrations.yml
Сценарий предназначен исключительно для продукта Tarantool DB 1.x. Сценарий загружает код миграций на Lua через конфигурацию кластера.
- PATH_TO_MIGRATIONS — путь до директории с миграциями на Lua.
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_MIGRATIONS}:/ansible/migrations \-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}'","tarantool_migrations_directory":"/ansible/migrations/"}' \playbooks/upload_migrations.yml --limit ${LIMIT}
Обязательные переменные:
- tarantool_migrations_directory (string) — директория c DDL-миграциями.
Для развертывания Tarantool Queue Enterprise используются следующие сценарии:
- TQE версии 1.10 и выше - Tarantool Queue Enterprise (MQ): Установка кластерного приложения Tarantool 3.x с модулем API;
- TQE ниже версии 1.10 - Tarantool Queue Enterprise (MQ): Установка кластерного приложения Tarantool Cartridge и Tarantool Queue Enterprise (MQ): Установка модуля API для Tarantool Cartridge.
Для обновления и администрирования TQE используются следующие сценарии:
- TQE версии 1.10 и выше - сценарии из разделов Tarantool 3.x и Общие сценарии администрирования;
- TQE ниже версии 1.10 - сценарии из разделов Tarantool Cartridge и Общие сценарии администрирования.
Смотрите также: Примеры инвентарей TQE.
- Для установки кластерного приложения TQE на Tarantool 3.x используйте сценарий
install_tqe_3_0.yml. - Для установки API TQE на Tarantool 3.x используйте сценарий
install_api_3_0.yml.
Сценарий для установки и настройки продукта TQE (версия 1.10 и выше) и модуля Message Queue install_3_0.yml.
- PATH_TO_INVENTORY — путь до файла.
- PATH_TO_TQE_PACKAGE - путь до артефакта.
- TQE_PACKAGE_NAME — имя архива с поставкой Tarantool Queue Enterprise.
- HOSTS - группа хостов хранилищ очереди и API модуля.
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_TQE_PACKAGE}:/ansible/packages/${TQE_PACKAGE_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e TQE_PACKAGE_NAME=${TQE_PACKAGE_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"cartridge_package_path":"/ansible/packages/'${TQE_PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tqe/install_3_0.yml
Сценарий для установки и настройки продукта TQE и модуля Message Queue.
- PATH_TO_INVENTORY — путь до файла.
- PATH_TO_TQE_PACKAGE - путь до артефакта.
- TQE_PACKAGE_NAME — имя архива с поставкой Tarantool Queue Enterprise.
- HOSTS - группа хостов хранилищ очереди.
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_TQE_PACKAGE}:/ansible/packages/${TQE_PACKAGE_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e TQE_PACKAGE_NAME=${TQE_PACKAGE_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"cartridge_package_path":"/ansible/packages/'${TQE_PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tqe/install_tqe.yml
- tqe_binary_name - путь до исполняемого файла модуля API. Значение по умолчанию:
bin/message-queue-ee.
({{ cartridge_app_instances_dir }}/{{ cartridge_app_name }}.{{ inventory_hostname }}/{{ tqe_binary_name }})
Сценарий для установки и настройки API части продукта Tarantool Queue Enterprise.
- PATH_TO_INVENTORY — путь до файла инвентаря.
- PATH_TO_TQE_PACKAGE - путь до артефакта.
- TQE_PACKAGE_NAME — имя архива с поставкой Tarantool Queue Enterprise.
- HOSTS - группа API-хостов.
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_TQE_PACKAGE}:/ansible/packages/${TQE_PACKAGE_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e TQE_PACKAGE_NAME=${TQE_PACKAGE_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook -i /ansible/inventories/hosts.yml \--extra-vars '{"cartridge_package_path":"/ansible/packages/'${TQE_PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tqe/install_tqe_api.yml
Смотрите также: Примеры инвентарей TCF.
Сценарий предназначен для развертывания и настройки продукта Tarantool Clusters Federation. Tarantool Clusters Federation имеет собственный инвентарь, в котором описываются подключения к двум независимым кластерам Tarantool.
Стенд с Tarantool Clusters Federation состоит из кластеров Tarantool, межкластерных репликаторов данных (компоненты Gateway и Destination) и хранилища конфигурации и состояния кластеров (etcd). Обратите внимание, что перед запуском данного сценария необходимо развернуть:
- кластер etcd для хранения конфигурации и состояния кластеров;
- кластеры Tarantool, поверх которых будет запущен Tarantool Clusters Federation.
Порядок действий:
-
Установите TCF:
- PATH_TO_INVENTORY — путь до файла инвентаря приложения на Tarantool EE.
- PATH_TO_TCF_INVENTORY — путь до файла инвентаря самого TCF.
- TCF_PACKAGE_NAME — имя архива с поставкой Tarantool Clusters Federation.
- HOSTS - указание группы хостов TCF, например
tcfиз примера инвентаря.
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_TCF_INVENTORY}:/ansible/inventories/tcf.yml:Z \-v ${PATH_TO_TCF_PACKAGE}:/ansible/packages/${TCF_PACKAGE_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e TCF_PACKAGE_NAME=${TCF_PACKAGE_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook \-i /ansible/inventories/tcf.yml \-i /ansible/inventories/hosts.yml \--extra-vars '{"tcf_package_path":"/ansible/packages/'${TCF_PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcf/install.ymlСценарий также настраивает автоматическую ротацию журналов. Настройку ротации можно отключить, если выставить значение переменной
tarantool_configure_logrotateвfalse. -
После установки TCF настройте кластерные приложения. Для этого выполните сценарий Изменение настроек кластера (сценарий settings.yml).
-
Для кластеров Tarantool 2.x на основе Cartridge необходимо добавить в инвентарь каждого из кластеров секцию
cartridge_app_config.cluster_federation. Пример:cartridge_app_config:cluster_federation:body:cluster_1: cluster_acluster_2: cluster_binitial_status: activereplication_password: "password"replication_user: replicatorfailover_timeout: 6max_suspect_counts: 3health_check_delay: 1Здесь:
- собственное имя кластера равно значению параметра
cluster_1. - параметры
replication_userиreplication_passwordдолжны соответствовать значениямtcf_userиtcf_user_passwordиз инвентаря TCF.
Значения параметров
cluster_1иcluster_2должны быть зеркальными, то есть на втором кластере конфигурация будет следующая:cartridge_app_config:cluster_federation:body:cluster_1: cluster_bcluster_2: cluster_ainitial_status: activereplication_password: "password"replication_user: replicatorfailover_timeout: 6max_suspect_counts: 3health_check_delay: 1 - собственное имя кластера равно значению параметра
-
Для кластеров на основе Tarantool 3.x необходимо добавить в инвентарь каждого из кластеров секции с настройками ролей
roles.tcf-coordinator(задается на роутерах) иroles.tcf-worker(задается на всех узлах). Пример:roles_cfg:roles.tcf-worker:cluster_1: cluster_acluster_2: cluster_binitial_status: activedml_users: [ tcf-dml ]replication_user: tcf-replicatorreplication_password: secretstatus_ttl: 4enable_system_check: trueroles.tcf-coordinator:failover_timeout: 20health_check_delay: 2max_suspect_counts: 3Здесь:
- собственное имя кластера равно значению параметра
cluster_1. - параметры
replication_userиreplication_passwordдолжны соответствовать значениямtcf_userиtcf_user_passwordиз инвентаря TCF.
Значения параметров
cluster_1иcluster_2должны быть зеркальными, то есть на втором кластере конфигурация будет следующая:roles_cfg:roles.tcf-worker:cluster_1: cluster_bcluster_2: cluster_ainitial_status: passivedml_users: [ tcf-dml ]replication_user: tcf-replicatorreplication_password: secretstatus_ttl: 4enable_system_check: trueroles.tcf-coordinator:failover_timeout: 20health_check_delay: 2max_suspect_counts: 3 - собственное имя кластера равно значению параметра
-
Поддержка TQE 3.x предназначена для работы с новым форматом конфигурации.
Определение режима конфигурации (legacy vs new):
- Старый формат — ATE считает, что нужно сформировать конфигурацию TQE 2.x, если в конфигурации кластера TQE указаны секции
grpc_port,grpc_hostилиpublisher. - Новый формат — используется, если в конфигурации отсутствуют маркеры старого формата (
grpc_portиpublisher), даже если секцияconsumerне задана.
Старый режим:
- если не указана секция конфигурации
publisher.queues.*.connections, ATE автоматически заполнит её, используя адреса указанных в инвентаре роутеров; - если не указана секция конфигурации
consumer.queues.*.connections, ATE автоматически заполнит её, используя адреса указанных в инвентаре узлов типаstorage; - cовместимость с параметрами
grpc_hostиgrpc_portобеспечивается автоматически.
Новый режим:
- если не указана секция конфигурации
producer.tarantool.connections, ATE автоматически заполнит её адресами роутеров (routers); - если не указана секция конфигурации
consumer.tarantool.connections, ATE автоматически заполнит её адресами узлов типаstorage; - cекции
producer.queues.*иconsumer.queues.*наследуют базовыеconnections, если собственные подключения не заданы; - автоматически добавляются значения по умолчанию для параметров
grpc_optionsиlog.level.
Инвентарь представлен для топологии, где есть два кластера: Cluster A и Cluster B.
TCF настроен на двустороннюю синхронизацию изменений.
Для настройки безопасного соединения на протоколах GRPC и HTTP добавьте следующие три переменные в инвентарь:
tcf_ssl_cert_file: /path/to/server.crttcf_ssl_key_file: /path/to/server.keytcf_ssl_ca_file: /path/to/ca.crt
Для настройки лейбла alias метрик компонентов Gateway и Destination (доступно с TCF 0.8.0)
добавьте следующие переменные в инвентарь:
tcf_gateway_alias: gateway_a_btcf_destination_alias: destination_a_b
Для указания экземпляров компонента Gateway добавьте следующие переменные в инвентарь:
tcf_gateways:- host: gateway-a.example.orgport: 8080- host: gateway-b.example.orgport: 8080
Для подключения Destination к хранилищу добавьте следующие переменные в инвентарь:
tcf_destination_storage: etcd_v2tcf_destination_storage_endpoints:- host: "{{ tarantool_etcd_host }}"port: 2379tcf_destination_storage_prefix: /tcftcf_destination_storage_ttl: 30
Для настройки опций truncate_collect_timeout и truncate_buffer_size компонента Destination (доступно с TCF 0.9.0)
добавьте следующие переменные в инвентарь:
tcf_destination_truncate_collect_timeout: '1m'tcf_destination_truncate_buffer_size: 100000
tcf_destination_truncate_collect_timeout— это время, за которое ожидается получение события truncate с каждого из шардов кластера-источника, начиная с первого такого события. Тип значения - строка в формате число с единицей измерения (s- секунды,m- минуты,h- часы и т.д.).tcf_destination_truncate_buffer_size- размер буфера с событиями, собираемые после операции TRUNCATE, которые будут применены после его выполнения. Тип значения - число, измеряется в количестве событий.
Для настройки авторизации на TCF Gateway/Destination, укажите в инвентаре TCF следующие параметры. Обратите внимание, что эти параметры будут добавлены ко всем Destination и Gateway. Для настройки воркеров кластера, передайте нужную настройку в конфигурацию кластера, как показано ниже.
tcf_authorization_provider: "keycloak"tcf_authorization_provider_params:provider_params:url: "https://keycloak.example.com/"roles:info: ORDERDB_TCF_INFO # default TCF_INFOtoggle: ORDERDB_TCF_TOGGLE # default TCF_TOGGLEadmin: ORDERDB_TCF_ADMIN # default TCF_ADMINssl:ca_file: "/etc/ssl/certs/keycloak-ca.pem"cert_file: "/etc/ssl/certs/client.pem"key_file: "/etc/ssl/private/client-key.pem"
Если необходимо включить авторизацию для воркера, укажите её в соответствии с документацией TCF наравне с остальной конфигурацией:
Чтобы настроить шифрование для исходящих запросов HTTP, если включена авторизация на репликаторе (Gateway/Destination), раскомментируйте
параметры client_id, client_secret_path, realm:
roles_cfg:roles.tcf-worker:authorization:provider: keycloakprovider_params:url: "https://keycloak.example.com/"roles:info: ORDERDB_TCF_INFO # default TCF_INFOtoggle: ORDERDB_TCF_TOGGLE # default TCF_TOGGLEadmin: ORDERDB_TCF_ADMIN # default TCF_ADMINssl:ca_file: "/etc/ssl/certs/keycloak-ca.pem"cert_file: "/etc/ssl/certs/client.pem"key_file: "/etc/ssl/private/client-key.pem"# client_id: "client"# client_secret_path: "/path/to/file"# realm: "myrealm"
Или в случае работы с Cartridge:
cartridge_app_config:clusters_federation:authorization:provider: keycloakprovider_params:url: "https://keycloak.example.com/"roles:info: ORDERDB_TCF_INFO -- default TCF_INFOtoggle: ORDERDB_TCF_TOGGLE -- default TCF_TOGGLEadmin: ORDERDB_TCF_ADMIN -- default TCF_ADMINssl:ca_file: "/etc/ssl/certs/keycloak-ca.pem"cert_file: "/etc/ssl/certs/client.pem"key_file: "/etc/ssl/private/client-key.pem"# client_id: "client"# client_secret_path: "/path/to/file"# realm: "myrealm"
Сценарий предназначен для обновления версии продукта Tarantool Clusters Federation.
После развертывания новой версии происходит перезапуск всех экземпляров TCF.
- PATH_TO_INVENTORY — путь до файла инвентаря приложения на Tarantool EE.
- PATH_TO_TCF_INVENTORY — путь до файла инвентаря самого TCF.
- TCF_PACKAGE_NAME — имя архива с поставкой Tarantool Clusters Federation.
- HOSTS - указание группы хостов TCF, например
tcfиз примера инвентаря.
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_TCF_INVENTORY}:/ansible/inventories/tcf.yml:Z \-v ${PATH_TO_TCF_PACKAGE}:/ansible/packages/${TCF_PACKAGE_NAME}:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \-e TCF_PACKAGE_NAME=${TCF_PACKAGE_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook \-i /ansible/inventories/tcf.yml \-i /ansible/inventories/hosts.yml \--extra-vars '{"tcf_package_path":"/ansible/packages/'${TCF_PACKAGE_NAME}'","ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcf/update.yml
Сценарий предназначен для перезапуска всех экземпляров Tarantool Clusters Federation.
- PATH_TO_TCF_INVENTORY — путь до файла инвентаря самого TCF.
- TCF_PACKAGE_NAME — имя архива с поставкой Tarantool Clusters Federation.
- HOSTS - указание группы хостов TCF, например
tcfиз примера инвентаря.
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_TCF_INVENTORY}:/ansible/inventories/tcf.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook \-i /ansible/inventories/tcf.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcf/restart.yml --limit ${LIMIT}
Значение LIMIT может быть, например, tcf-host-3 -- экземпляр типа gateway из примера.
Сценарий предназначен для остановки всех экземпляров Tarantool Clusters Federation.
- PATH_TO_TCF_INVENTORY — путь до файла инвентаря самого TCF.
- TCF_PACKAGE_NAME — имя архива с поставкой Tarantool Clusters Federation.
- HOSTS - указание группы хостов TCF, например
tcfиз примера инвентаря.
docker run --network host -it --rm \-v ${PATH_TO_PRIVATE_KEY}:/ansible/.ssh/id_private_key:Z \-v ${PATH_TO_TCF_INVENTORY}:/ansible/inventories/tcf.yml:Z \-e SUPER_USER_NAME=${SUPER_USER_NAME} \ansible-tarantool-enterprise:${DEPLOY_TOOL_VERSION_TAG} \ansible-playbook \-i /ansible/inventories/tcf.yml \--extra-vars '{"ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key","super_user":"'${SUPER_USER_NAME}'","tarantool_shared_become_user":"tarantool","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcf/stop.yml --limit ${LIMIT}
Для развертывания Tarantool Column Store используется сценарий из раздела Tarantool Column Store: Установка приложения. Для обновления и администрирования TCS используются сценарии из разделов Tarantool 3.x и Общие сценарии администрирования.
Смотрите также: Примеры инвентарей TCS
Продукт TCS состоит из кластера Tarantool 3.x и API-сервиса под названием Scheduler. Каждый компонент развертывается отдельно.
Порядок действий:
-
Установите кластерное хранилище.
- PATH_TO_INVENTORY — путь до файла инвентаря.
- PATH_TO_PACKAGE - путь до артефакта.
- PACKAGE_NAME — имя архива с поставкой Tarantool Column Store.
- HOSTS - группа хостов кластерного хранилища.
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:latest \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","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcs/install.yml
Переменные для установки TCS 1.x:
tcs_v1_support(bool) - установите значениеtrue, если используете динамический инвентарь для установки TCS 1.x.tcs_http_credentials(object) - задайтеusernameиpasswordдля секции конфигурацииroles_cfg.app/aggregator_role.http.credentials, если используете динамический инвентарь для установки TCS 1.x.tcs_sql_credentials(object) - задайтеusernameиpasswordдля секции конфигурацииroles_cfg.app/aggregator_role.arrow_flight_sql.credentials, если используете динамический инвентарь для установки TCS 1.x.tcs_http_enabled(bool) - задайте значениеfalse, если хотите отключить поддержку http-запросов для TCS. Значение по умолчанию:true.
-
Только для версии < 1.0. Запустите сценарий установки API-сервиса. Он входит в поставку TCS и устанавливается из того же артефакта.
Обратите внимание на переменную
tarantool_shared_hosts: она указывает, какие из хостов в инвентаре являются API-сервисами. Можно указать группу.- HOSTS - группа API сервисов.
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:latest \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","tarantool_shared_hosts":"'${HOSTS}'",}' \playbooks/tcs/install_scheduler.yml
Пример указания переменных tcs_additional_config и tcs_scheduler_config_template в динамическом инвентаре:
constants:tcs_additional_config:metadata:environment: "test"generated_by: "ATE"tcs_scheduler_config_template: "/home/user/custom-templates/my-scheduler.yml.j2"
- LIMIT - группа хостов или индивидуальный хост, который вы хотите перезапустить.
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:latest \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_shared_become_user":"tarantool",}' \playbooks/tcs/restart.yml --limit ${LIMIT}