VK Docs logo
Помощь
Обновлена 23 октября 2025 г. в 06:18

Настройка среды

Требования к серверу под инсталлятор

Сервером под инсталлятор может служить:

  • отдельностоящий сервер, или
  • один из серверов под Tarantool, или
  • агент CI/CD системы.

Требования к серверу под инсталлятор:

  • Операционная система RHEL, AstraLinux, Red OS или аналогичная с поддержкой Docker.
  • Доступ по 22 порту (SSH) для devops-инженера.
  • Сетевой доступ по 22 порту (SSH) до всех серверов, на которые производится установка. В том числе до серверов под ETCD, nginx и других сервисов.

Если предполагается использовать Docker-образ инсталлятора, установите:

  • Docker Engine версии не ниже 20.10.11.

Если предполагается использовать Ansible-коллекцию инсталлятора, установите:

  • Python 3.10.2 или новее.
  • Ansible 2.15.5 или новее.
  • pip модули urllib3==1.26, requests==2.31.0, etcd3==0.12.0.

Подготовка к использованию

Перед запуском сценариев развертывания подготовьте:

  • Инвентарь — описание топологии вашего решения и настроек приложения или продукта.
  • Пользователя для подключения к серверам по SSH. Может быть root. Должен иметь sudo-права на логин под локального пользователя tarantool.
  • Приватный SSH-ключ пользователя для подключения к серверам.
  • Архив с продуктом или приложением.

где:

  • {{ super_user }} -- имя пользователя для подключения по SSH. Выставляется в ansible-переменной ansible_user.

Предварительная настройка сервера под Tarantool

Для развертывания продуктовой линейки Tarantool необходима предварительная настройка серверов. В Ansible Tarantool Enterprise, начиная с версии 1.3.0, появились сценарии для проверки и первоначального конфигурирования.

Список дальнейших действий, которые производятся на серверах по необходимости:

  • Создание групп etcd и nginx.
  • Создание пользователей etcd, nginx.
  • Изменение Unix-лимитов для пользователя tarantool.
    • Max processes: soft - 64000, hard - 64000
    • Max open files: soft - 64000, hard - 64000
    • Max core file size: soft - unlimited, hard - unlimited
  • Создание директорий: /app/etcd, /app/nginx.
  • Настройка прав для директорий.
  • Настройка параметров ядра:
    • vm.overcommit_memory = 2
    • vm.overcommit_ratio = 100
    • kernel.core_uses_pid = 1
    • kernel.core_pattern = /app/tarantool/coredump/core-%e-%u-%g-%p-%t
    • net.ipv4.ip_local_port_range = 32768 60999
  • Создание каталога /var/log/journal.
  • Включение постоянного хранения для журнала journald путем добавления строки Storage=persistent в файл /etc/systemd/journald.conf.
  • Установка дополнительных пакетов: nginx, crontab, logrotate, gdb, telnet.
  • Включение службы systemd-logind.
  • Настройка loginctl для пользователя tarantool.
  • Добавление пользователя tarantool в группу crontab.
  • Установка Python-модуля PyYAML.

Проверка сервера перед развертыванием

Используйте сценарий env_check.yml. Он выполнит проверку и в результате предоставит список найденных несоответствий.

Проверка лимитов пользователя tarantool будет выполняться только под пользователем root. Для этого переменная tarantool_shared_become_user должна быть root.

Запустить сценарий можно без топологии приложения, с простейшим инвентарём.

Пример 1: Обычный запуск проверки с использованием Ansible-коллекции

ansible-playbook -i inventory.ini \    --extra-vars  '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",    }' \     playbooks/env_check.yml

Пример 2: Обычный запуск проверки с использованием 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}'",        "tarantool_shared_become_user":"'${SUPER_USER_NAME}'",    }' \    playbooks/env_check.yml

Пример 3: Запуск проверки под пользователем root c использованием 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}'",        "tarantool_shared_become_user":"root",    }' \    playbooks/env_check.yml

Сценарий первичной настройки

Чтобы запустить сценарий подготовки сервера, выполните следующие команды:

Пример 1: Запуск подготовки с использованием Ansible-коллекции

ansible-playbook -i inventory.ini \    --extra-vars  '{        "ansible_ssh_private_key_file":"/ansible/.ssh/id_private_key",        "super_user":"'${SUPER_USER_NAME}'",        "tarantool_shared_become_user":"root",    }' \     playbooks/env_prepare.yml

Пример 2: Запуск подготовки с использованием 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}'",        "tarantool_shared_become_user":"root",    }' \    playbooks/env_prepare.yml

где:

  • ansible_ssh_private_key_file -- путь к закрытому ключу SSH для аутентификации.
  • super_user -- имя пользователя, для подключения по SSH и переключения на пользователя root.
  • tarantool_shared_become_user -- root.

Использование тегов

Сценарии проверки и настройки разбиты на ряд блоков. С помощью Ansible-тегов можно выбирать, какие из блоков необходимо запустить:

  • tarantool -- задачи по настройке пользователя и директорий Tarantool.
  • etcd -- задачи по настройке пользователя и директорий ETCD.
  • nginx -- задачи по настройке пользователя и директорий nginx.
  • kernel -- управление параметрами ядра.
  • journald -- настройка журналирования системы.
  • os -- особенности операционной системы.

Пример 1: Выполнить только задачи с тегом 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":"'${SUPER_USER_NAME}'",    }' \    --tags tarantool \    playbooks/env_check.yml

Пример 2: Пропустить выполнение задач с тегом nginx

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":"'${SUPER_USER_NAME}'",    }' \    --skip-tags nginx \    playbooks/env_check.yml

Пример 3: Выполнить только задачи с тегами tarantool и kernel

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":"'${SUPER_USER_NAME}'",    }' \    --tags tarantool,kernel \    playbooks/env_check.yml