Настройка среды
Сервером под инсталлятор может служить:
- отдельностоящий сервер, или
- один из серверов под 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 необходима предварительная настройка серверов. В 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
- Max processes: soft -
- Создание директорий:
/app/etcd,/app/nginx. - Настройка прав для директорий.
- Настройка параметров ядра:
vm.overcommit_memory = 2vm.overcommit_ratio = 100kernel.core_uses_pid = 1kernel.core_pattern = /app/tarantool/coredump/core-%e-%u-%g-%p-%tnet.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.
Запустить сценарий можно без топологии приложения, с простейшим инвентарём.
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
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
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
Чтобы запустить сценарий подготовки сервера, выполните следующие команды:
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
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-- особенности операционной системы.
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
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
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