Руководство по установке
Данное Руководство адресовано системным администраторам, ответственным за установку и управление системой Tarantool Column Store (TCS). В их круг задач входят:
- подготовка серверов;
- установка системы в производственной среде;
- обновление системы, откат к предыдущей версии и удаление системы.
TCS поддерживает установку на следующие операционные системы (ОС) семейства Linux:
- Astra Linux 1.7;
- РЕД ОС 7.3 Стандарт;
- МосОС Арбат 15.5.
Также возможна установка на Ubuntu и CentOS, но без гарантии полноценной работоспособности.
В работе с TCS может требоваться взаимодействие с различным сторонним ПО. Для некоторых видов программного обеспечения установлены следующие рекомендации:
- etcd версии не ниже 3.4.
- python версии не ниже 3.11.
- Ansible версии не ниже 9.7.0.
- Инсталлятор Ansible Tarantool Enterprise версии не ниже 1.20.1.
Процессор (CPU) должен поддерживать профиль x86-64-v3 и дополнительные расширения:
AES-NI/PCLMULQDQ, ADX, RDRAND/RDSEED, XSAVEOPT/XSAVEC/XSAVES.
Tarantool Column Store – колоночная транзакционно-аналитическая СУБД, построенная на платформе Tarantool Enterprise Edition.
TCS наследует от Tarantool следующие возможности хранения и масштабирования:
- данные хранятся в оперативной памяти;
- хранение персистентно;
- доступны механизмы шардирования и репликации.
Таким образом, перед установкой и эксплуатацией TCS требуется подготовить сервера для использования сопутствующего ПО:
-
Настройте межсетевой экран (firewall):
a. Настройте порты для бинарного протокола Tarantool.
Tarantool использует как TCP, так и UDP, для взаимодействия внутри кластера.
Откройте пул портов 3301 — 3401 для TCP и UDP трафика, для внутреннего трафика на всех серверах, на которых устанавливается Tarantool.
Если внешние приложения обращаются к кластеру по бинарному протоколу, также необходимо открыть пул портов 3301 — 3401, но достаточно TCP.
b. Настройте порты для TCP и HTTP(s).
-
TCP используется для взаимодействия администраторов с веб-интерфейсом модуля Tarantool Cluster Manager (TCM).
На всех серверах, на которых устанавливается TCM, откройте порт для TCP-трафика, указанный в конфигурации TCM (по умолчанию 8080).
-
Встроенный в Tarantool сервер может принимать SSL трафик, поэтому проксирование HTTPs-трафика на HTTP-порты настраивать не нужно.
Откройте пул портов 8001 – 8101 для HTTPs-трафика на всех серверах, на которых устанавливается Tarantool.
-
HTTP используется для взаимодействия с интерфейсом сервиса TCS, где ждет ввод обработчик
/sql.Откройте пул портов 7700-7800 для HTTPs трафика на всех серверах, на которых будет запущен сервис TCS.
c. Настройте порты для внутреннего трафика для etcd. По умолчанию используется порт 2379.
d. В случае, если у вас:
- отдельно стоящий сервер, или
- один из серверов под Tarantool, или
- агент CI/CD системы,
настройте также:
- доступ по 22 порту (ssh) для devops-инженера;
- сетевой доступ по 22 порту (ssh) до всех серверов, на которые производится установка. В том числе до серверов под etcd и других сервисов.
-
-
Настройте DNS.
Все сервера должны находить друг друга по FQDN (доменное имя локальной машины). Удобно использовать доменное имя для обозначения экземпляров Tarantool в кластере.
-
Разбейте дисковое пространство в соответствии с рекомендациями для оптимальной работы экземпляров Tarantool:
- журналы (logs) – 2 GB * количество экземпляров Tarantool, но не менее 15 GB
- журнал упреждающей записи (WAL) – 40-50% от RAM, используемого всеми экземплярами Tarantool
- снимки данных (snapshots) – 100-110% от RAM, используемого всеми экземплярами Tarantool
Разбейте диски в соответствие с расчетами и подключите директории с помощью команды
mount. -
Скорректируйте параметры ядра.
a. Задайте параметры overcommit по памяти:
sudo cat << EOF >> /etc/sysctl.confvm.overcommit_memory = 2vm.overcommit_ratio = 100EOFb. При ошибочном завершении Tarantool должен быть создан coredump-файл, который понадобится нашим специалистам для исследования проблемы. Файлы должны собираться в доступную на запись директорию, иметь в названии PID, signal и timestamp. Для корректного сохранения отладочной информации потребуются следующие настройки:
sudo cat << EOF >> /etc/sysctl.confkernel.core_uses_pid = 1kernel.core_pattern = /app/tarantool/coredump/core-%e-%u-%g-%p-%tEOFc. Настройте пул портов для исходящих запросов.
Исходящие соединения могут занимать порты, предназначенные для бинарного протокола Tarantool.
sudo cat << EOF >> /etc/sysctl.confnet.ipv4.ip_local_port_range = 32768 61000EOF -
Установите вспомогательные утилиты.
Команды для поддерживаемых ОС:
Для Astra Linux:
sudo apt updatesudo apt install -y \logrotate \ # Для ротации журналовcronie \ # Утилита crontabgdb \ # Для сбора отладочной информации в случае паденияgcore \ # Для создания coredump-файла на летуtelnet \ # Для проверки сетевой связности узловiperf3 \ #iptraf-ng \ #htop # Более наглядный topДля РЕД ОС:
sudo dnf install -y \logrotate \cronie \gdb \telnet \iperf3 \iptraf-ng \htop -
Создайте учетные записи.
Создайте группу
tarantoolи локального пользователяtarantoolдля запуска и управления Tarantool:sudo groupadd -g 3301 tarantoolsudo useradd -m -u 3301 -g 3301 --system tarantoolДля корректной работы пользователя
tarantoolсsystemctlв пользовательском окружении выполните команду:sudo loginctl enable-linger tarantoolАналогично
tarantool, потребуется учетная запись для работы с etcd. Соответствующий пользователь должен создаваться в процессе установки etcd. Если этого не произошло, создайте его самостоятельно:sudo groupadd etcdsudo useradd -m -g etcd --system etcd -
Активируйте пользовательское пространство
systemd:sudo loginctl enable-linger tarantool -
Создайте директории для записи на диск:
sudo mkdir -p /app/tarantoolsudo mkdir -p /app/tarantool/coredumpsudo mkdir -p /app/logssudo mkdir -p /app/snapsudo mkdir -p /app/etcdИ задайте права:
sudo chown tarantool:tarantool /app/tarantoolsudo chown tarantool:tarantool /app/tarantool/coredumpsudo chown tarantool:tarantool /app/logssudo chown tarantool:tarantool /app/snapsudo chown etcd:etcd /app/etcd -
Настройте лимиты для группы
tarantool.sudo cat << EOF >> /etc/security/limits.d/tarantool.conf@tarantool - nproc 64000@tarantool - nofile 64000@tarantool - core unlimitedEOF -
Настройте оркестратор.
a. Создайте
systemdсервис-файлы для экземпляров Tarantool.Сервис-файлы – это стандартный способ управления процессами в современных Linux, который работает на всех systemd-совместимых ОС. Сервис-файлы задают конфигурацию для запуска экземпляров Tarantool как фоновых сервисов с автозагрузкой, журналированием и контролем состояния.
Можно создать один файл
/etc/systemd/system/tarantool@.service(шаблон для нескольких экземпляров) или отдельные файлы под каждый экземпляр.Пример сервис-файла с ключевыми параметрами:
# /etc/systemd/system/tarantool@.service (шаблон для нескольких экземпляров)[Unit]Description=Tarantool Column Store instance: %i # %i = имя из названия файла (например, instance1)After=network-online.target # Ждём готовности сети (критично для full-mesh кластера)[Service]Type=simple # Один главный процесс, systemd отслеживает его PIDUser=tarantool # Запуск от непривилегированного пользователяGroup=tarantoolExecStart=/usr/bin/tarantool /app/tarantool/%i.lua # Запуск экземпляра с его lua-конфигурациейRestart=on-failure # Автоперезапуск при крахе (но не при ручном stop)LimitNOFILE=64000 # Лимит открытых файлов (синхронно с limits.conf)LimitNPROC=64000 # Лимит потоков/процессовStandardOutput=journal # Журналы stdout → journaldStandardError=journal # Журналы stderr → journald[Install]WantedBy=multi-user.target # Включать в стандартный режим загрузки ОСb. Настройте персистентное хранилище
journald(для РЕД ОС и RHEL).Журналы экземпляров, отправляемые в
stdoutиstderr, автоматически попадают вjournald. Правильная настройкаjournaldнужна для персистентного хранения журналов сервисов (включая Tarantool), чтобы они сохранялись после перезагрузки и были доступны черезjournalctl. Это упрощает отладку, делая вызовы типаjournalctl -u tarantool@instance1 -fдоступными даже при ротации файловых журналов.Изменение настроек Tarantool здесь не требуется. Достаточно, чтобы сервис Tarantool был запущен под
systemd.Пример настройки
journald:sudo mkdir -p /var/log/journal # Создаём директорию для персистентного храненияsudo chown root:systemd-journal /var/log/journal # Владелец root, группа systemd-journalsudo chmod 2755 /var/log/journal # Sticky bit + право записи группеsudo systemd-tmpfiles --create --prefix /var/log/journal # Применяем правила tmpfiles.dsudo systemctl restart systemd-journald # Перезапуск службы для применения измененийПроверка:
journalctl -u tarantool@* -f # Теперь журналы не пропадут после перезагрузкиc. Выдайте sudo-права администратору Tarantool.
Точечные sudo-права для администраторов обеспечивают безопасность, удобство автоматизации, возможность аудита и разделение ответственности без предоставления полного root-доступа:
- Принцип наименьших привилегий: администраторы не работают под
root, а переключаются вtarantool/etcdтолько тогда, когда нужно. - Автоматизация: скрипты развертки/мониторинга могут выполнять команды через
sudo -u tarantoolбез знания пароля. - Аудит: все действия через
sudoжурналируются (кто, когда, какую команду выполнил). - Разделение ролей: например, одной группе можно выдать права только на
systemctl status, а другой — наrestart.
Пример безопасной настройки (
/etc/sudoers.d/tarantool-admins):# Создавать только через: sudo visudo -f /etc/sudoers.d/tcs-admins%GROUP@domain.ru ALL=(tarantool) NOPASSWD: ALL # Группа может выполнять ЛЮБЫЕ команды ОТ ИМЕНИ tarantool%GROUP@domain.ru ALL=(etcd) NOPASSWD: ALL # То же самое для пользователя etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl status etcd # Проверка статуса от root%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl restart etcd # Перезапуск сервиса%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/journalctl -u etcd -f # Просмотр логов в реальном времени.Для обслуживания серверов с Tarantool удобно выделить некоторую доменную группу из AD и выдать ей соответствующие права на переход под пользователей
tarantoolиetcd. Также нужны права на управление сервисами и просмотр журналов дляetcd.Указанный список в формате
sudoersможет выглядеть так:# пример для Astra Linux%GROUP@domain.ru ALL=(tarantool) NOPASSWD: ALL%GROUP@domain.ru ALL=(etcd) NOPASSWD: ALL%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl status etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl restart etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl reload etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl start etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl stop etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl enable etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl disable etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl edit etcd%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/journalctl -u etcd - Принцип наименьших привилегий: администраторы не работают под
-
Настройте ротацию журналов.
Здесь подразумевается добавление пользователя
tarantoolв группуcrontabдля того, чтобы снять возможное ограничение ОС на использование командыcrontab -e. В результате пользовательtarantoolсможет использоватьcrontab -eдля планирования своих внутренних задач (создание резервных копий, ротация журналов) без правroot. Никаких других дополнительных прав в системе пользователюtarantoolэто на даст.Для Astra Linux:
- Убедитесь, что утилита
crontabустановлена. - Добавьте пользователя
tarantoolв группуcrontab.
sudo usermod -a -G crontab tarantoolДля РЕД ОС:
Права на
crontabорганизуются через файлы/etc/cron.allowи/etc/cron.deny. Проверьте, что выполняется любое из двух условий:- Пользователь
tarantoolесть в файле/etc/cron.allow, либо - Файла
/etc/cron.allowнет, а файл/etc/cron.denyпуст (crontabдоступен всем).
- Убедитесь, что утилита
См. документацию по инсталлятору Ansible Tarantool Enterprise, глава Настройка среды.
Архив с пакетом поставки TCS доступен в личном кабинете на сайте tarantool.io.
Установка TCS в производственной среде производится с использованием инсталлятора Ansible Tarantool Enterprise (ATE).
Возможны 2 вида установки системы TCS с использованием ATE:
-
Установка с помощью Ansible-коллекции.
См. подробнее:
- раздел Подготовка серверов в текущем Руководстве по установке
- раздел Использование Ansible-коллекции в документации по инсталлятору Ansible Tarantool Enterprise
-
Установка с помощью Docker-образа.
В этом случае установка TCS должна включать следующие шаги:
-
Подготовка серверов, в том числе установка и настройка кластера
etcd.См. подробнее:
- раздел Подготовка серверов в текущем Руководстве по установке
- раздел Сценарий первичной настройки в документации по инсталлятору Ansible Tarantool Enterprise
-
Настройка конфигурации TCS и отправка ее в
etcd.См. подробнее:
- Настройка кластера
- Примеры статических инвентарей
- Пример вызова плейбука etcd_3_0.yml для отправки конфигурации в etcd
- раздел Tarantool 3.x: Отправка конфигурации в etcd в документации по инсталлятору Ansible Tarantool Enterprise.
-
Установка CIAM.
См. подробнее Установка CIAM.
-
Установка TCS.
См. подробнее:
- Пример вызова плейбука tcs/install.yml для развертывания кластера
- раздел Tarantool Column Store: Установка приложения в документации по инсталлятору Ansible Tarantool Enterprise.
-
Установка TCM.
См. раздел Tarantool Cluster Manager: Установка и запуск в документации по инсталлятору Ansible Tarantool Enterprise.
-
Пример кластера TCS, развернутого на нескольких серверах:

Архив для установки CIAM не входит в пакет поставки TCS. Его следует скачивать отдельно на Портале Дистрибуции VK Tech, продукт VK CIAM (On-Premise). Доступ предоставляется зарегистрированным клиентам с подтвержденным номером телефона.
-
[На целевом сервере] Настроить локальный DNS.
echo "127.0.0.1 ciam.local" | sudo tee -a /etc/hosts -
[На целевом сервере] Установить
nginx. Настройка не требуется.sudo apt updatesudo apt install nginx -ysudo systemctl enable nginx -
[На целевом сервере] Установить и запустить
postgresql.Создать пользователя
appи необходимые базы данных:CREATE USER app WITH PASSWORD 'secret';CREATE DATABASE hydra OWNER app;CREATE DATABASE flow OWNER app;CREATE DATABASE audit OWNER app;CREATE DATABASE notifications OWNER app;CREATE DATABASE spicedb OWNER app;CREATE DATABASE access_control OWNER app;CREATE DATABASE access_agent OWNER app;CREATE DATABASE providers OWNER app; -
[На управляющем сервере] Установить Ansible.
sudo apt install ansible -y -
Скопировать архив для установки CIAM, распаковать его локально и перейти в корневую директорию распакованного архива.
-
[На управляющем сервере] Установить зависимости из списка
requirements.yml.cd ansiblepip install -r requirements.txt -
[На управляющем сервере] Настроить параметры конфигурации для CIAM.
Параметры задаются в инвентаре
inventory.ymlдля каждого хоста или группыciam_hosts. Ниже описаны только обязательные параметры.В инвентаре
inventory.yml:ansible_host— адрес целевого сервера;ansible_user— пользователь для SSH-подключения; должен совпадать с именем системного пользователя для сервиса CIAM (см. параметрciam_service_userв файле конфигурацииgroup_vars/ciam_hosts.yml)ciam_domain— домен CIAM (используется в redirect_uri, CORS, nginx и т.д.);ciam_ssl_cert— путь к SSL-сертификату (на целевом сервере);ciam_ssl_key— путь к ключу SSL-сертификата (на целевом сервере);ciam_archive_path— путь к архиву CIAM (на управляющем сервере);ciam_flow_pat_secret- "соль" для генерации и сверки токенов (любая строка длиной от 1 символа).
Пример:
all:children:ciam_hosts:hosts:ciam-ansible:ansible_host: vm2ansible_user: astraciam_domain: "ciam.local"ciam_ssl_cert: "/home/astra/helpers/certs/cert.pem"ciam_ssl_key: "/home/astra/helpers/certs/cert-key.pem"ciam_archive_path: "/home/astra/ciam.tar.gz"ciam_flow_pat_secret: "secret"В файле конфигурации
group_vars/ciam_hosts.yml:- ciam_service_user — имя системного пользователя для сервиса CIAM;
- ciam_service_group — имя группы системного пользователя для сервиса CIAM.
-
[На управляющем сервере] Сгенерировать SSL-сертификат и ключ с помощью плейбука
ssl_certs.yml.ansible-playbook -i inventory.yml playbooks/ssl_cert.yml -l ciam-ansible -
[На управляющем сервере] Запустить развертывание CIAM с помощью плейбука
install.yml.ansible-playbook -i inventory.yml playbooks/install.yml -
[На управляющем сервере] Обновить клиента для получения токенов в формате JWT.
ansible-playbook -i inventory.yml playbooks/update_client.yml -l ciam-ansible
Дальнейшая работа с CIAM (настройка доступа к веб-интерфейсу, создание пользователей, выдача токенов) подробно описана в документации по CIAM.
Чтобы обновить TCS 1.3.0 до версии 1.3.1 (с сохранением данных), нужно выполнить следующие действия:
-
Сохранение данных.
a. Остановите текущий кластер TCS версии 1.3.0 (в ATE плейбук stop.yml).
b. Сохраните все резервные копии.
Данный шаг необходим на случай отказа во время исполнения обновления (например, если произойдет обрыв сети). В таком случае процедуру обновления будет необходимо повторить целиком с самого начала.
-
Для Tarantool:
- файлы снимков (
.snap); - файлы журналов (
.xlog); - мета-данные внешних томов и файлы Parquet.
- файлы снимков (
-
Для etcd:
- файл снимка etcd.
-
-
Запуск обновления.
a. Внесите правки в конфигурацию TCS.
Отключите TCS-роли (
tcs_roles/*) в конфигурации кластера. Для этого их можно закомментировать, а в случае их явного удаления нужно убедиться в том, что предыдущая версия конфигурации сохранена.После этого обновите конфигурацию кластера в etcd (см. Пример вызова плейбука etcd_3_0.yml для отправки конфигурации в etcd).
b. Запустите кластер TCS версии 1.3.1 (в ATE плейбук start.yml).
Кластер запустится на конфигурации с выключенными ролями.
c. Запустите обновления с помощью утилиты
upgrade.lua.Утилита
upgrade.luaвходит в состав установочного архива TCS, см. директориюupgrade.Сначала рекомендуется выполнить обновление с опцией
--dry-run, чтобы получить список предстоящих обновлений без их фактического выполнения:$ tarantool upgrade/upgrade.lua \--host localhost \--port 3301 \--from 1.3.0 \--to latest \--dry-runЗатем выполните тот же вызов без опции
--dry-run. По ходу работы утилитаupgrade.luaбудет запрашивать подтверждения.d. Остановите кластер TCS версии 1.3.1.
e. Откатите кластерную конфигурацию на версию, в которой включены TCS-роли, и загрузите конфигурацию в etcd.
f. Запустите кластер версии 1.3.1 (в ATE плейбук start.yml).
Кластер запустится на конфигурации с включенными ролями.
Чтобы откатить TCS 1.3.1 обратно к версии 1.3.0, нужно выполнить следующие действия:
-
Остановите текущий кластер TCS версии 1.3.1 (в ATE плейбук stop.yml).
-
Сохраните все резервные копии.
Данный шаг необходим на случай отказа во время исполнения отката (например, если произойдет обрыв сети). В таком случае процедуру отката будет необходимо повторить целиком с самого начала.
-
Для Tarantool:
- файлы снимков (
.snap); - файлы журналов (
.xlog); - мета-данные внешних томов и файлы Parquet.
- файлы снимков (
-
Для etcd:
- файл снимка etcd.
-
-
Разверните кластер TCS версии 1.3.0 (в ATE плейбук tcs/install.yml).
-
Запустите плейбук
uninstall.yml, указав следующие параметры:tagsи значениеtarantoollimitи список имен всех экземпляров кластера
См. Пример вызова плейбука uninstall.yml для удаления кластера.
Также см. подробнее раздел Удаление кластера Tarantool в документации по инсталлятору Ansible Tarantool Enterprise.
-
При удалении кластера, работавшего в режиме шардирования, выполните также команду
etcdctl del --prefix "/tarantool/{prefix}/sharding", где{prefix}– это префикс для конфигурации TCS вetcd.