TCS Documentation portal logo
Помощь
Обновлена 15 июля 2026 г. в 12:02

Руководство по установке

Для кого этот документ

Данное Руководство адресовано системным администраторам, ответственным за установку и управление системой 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 требуется подготовить сервера для использования сопутствующего ПО:

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

  1. Настройте межсетевой экран (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 и других сервисов.
  2. Настройте DNS.

    Все сервера должны находить друг друга по FQDN (доменное имя локальной машины). Удобно использовать доменное имя для обозначения экземпляров Tarantool в кластере.

  3. Разбейте дисковое пространство в соответствии с рекомендациями для оптимальной работы экземпляров Tarantool:

    • журналы (logs) – 2 GB * количество экземпляров Tarantool, но не менее 15 GB
    • журнал упреждающей записи (WAL) – 40-50% от RAM, используемого всеми экземплярами Tarantool
    • снимки данных (snapshots) – 100-110% от RAM, используемого всеми экземплярами Tarantool

    Разбейте диски в соответствие с расчетами и подключите директории с помощью команды mount.

  4. Скорректируйте параметры ядра.

    a. Задайте параметры overcommit по памяти:

    sudo cat << EOF >> /etc/sysctl.confvm.overcommit_memory = 2vm.overcommit_ratio = 100EOF

    b. При ошибочном завершении 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-%tEOF

    c. Настройте пул портов для исходящих запросов.

    Исходящие соединения могут занимать порты, предназначенные для бинарного протокола Tarantool.

    sudo cat << EOF >> /etc/sysctl.confnet.ipv4.ip_local_port_range = 32768   61000EOF
  5. Установите etcd требуемой версии:

  6. Установите вспомогательные утилиты.

    Команды для поддерживаемых ОС:

    Для Astra Linux:

    sudo apt updatesudo apt install -y \         logrotate \        # Для ротации журналов         cronie \           # Утилита crontab         gdb \              # Для сбора отладочной информации в случае падения         gcore \            # Для создания coredump-файла на лету         telnet \           # Для проверки сетевой связности узлов         iperf3 \           #         iptraf-ng \        #         htop               # Более наглядный top

    Для РЕД ОС:

    sudo dnf install -y \         logrotate \         cronie \         gdb \         telnet \         iperf3 \         iptraf-ng \         htop
  7. Создайте учетные записи.

    Создайте группу 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
  8. Активируйте пользовательское пространство systemd:

    sudo loginctl enable-linger tarantool
  9. Создайте директории для записи на диск:

    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
  10. Настройте лимиты для группы tarantool.

    sudo cat << EOF >> /etc/security/limits.d/tarantool.conf@tarantool    -   nproc   64000@tarantool    -   nofile   64000@tarantool    -   core   unlimitedEOF
  11. Настройте оркестратор.

    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
  12. Настройте ротацию журналов.

    Здесь подразумевается добавление пользователя tarantool в группу crontab для того, чтобы снять возможное ограничение ОС на использование команды crontab -e. В результате пользователь tarantool сможет использовать crontab -e для планирования своих внутренних задач (создание резервных копий, ротация журналов) без прав root. Никаких других дополнительных прав в системе пользователю tarantool это на даст.

    Для Astra Linux:

    1. Убедитесь, что утилита crontab установлена.
    2. Добавьте пользователя tarantool в группу crontab.
    sudo usermod -a -G crontab tarantool

    Для РЕД ОС:

    Права на crontab организуются через файлы /etc/cron.allow и /etc/cron.deny. Проверьте, что выполняется любое из двух условий:

    1. Пользователь tarantool есть в файле /etc/cron.allow, либо
    2. Файла /etc/cron.allow нет, а файл /etc/cron.deny пуст (crontab доступен всем).

Подготовка серверов к установке с использованием инсталлятора Ansible Tarantool Enterprise

См. документацию по инсталлятору Ansible Tarantool Enterprise, глава Настройка среды.

Первичная установка системы

Установка TCS в производственной среде производится с использованием инсталлятора Ansible Tarantool Enterprise (ATE).

Возможны 2 вида установки системы TCS с использованием ATE:

Пример кластера TCS, развернутого на нескольких серверах:

Пример развернутого кластера TCS

Установка CIAM

Архив для установки CIAM входит в пакет поставки TCS.

  1. [На целевом сервере] Настроить локальный DNS.

    echo "127.0.0.1 ciam.local" | sudo tee -a /etc/hosts
  2. [На целевом сервере] Установить nginx. Настройка не требуется.

    sudo apt updatesudo apt install nginx -ysudo systemctl enable nginx
  3. [На целевом сервере] Установить и запустить 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;
  4. [На управляющем сервере] Установить Ansible.

    sudo apt install ansible -y
  5. Скопировать архив для установки CIAM, распаковать его локально и перейти в корневую директорию распакованного архива.

  6. [На управляющем сервере] Установить зависимости из списка requirements.yml.

    cd ansiblepip install -r requirements.txt
  7. [На управляющем сервере] Настроить параметры конфигурации для 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: vm2          ansible_user: astra          ciam_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.
  8. [На управляющем сервере] Сгенерировать SSL-сертификат и ключ с помощью плейбука ssl_certs.yml.

    ansible-playbook -i inventory.yml playbooks/ssl_cert.yml -l ciam-ansible
  9. [На управляющем сервере] Запустить развертывание CIAM с помощью плейбука install.yml.

    ansible-playbook -i inventory.yml playbooks/install.yml
  10. [На управляющем сервере] Обновить клиента для получения токенов в формате JWT.

    ansible-playbook -i inventory.yml playbooks/update_client.yml -l ciam-ansible

Дальнейшая работа с CIAM (настройка доступа с веб-интерфейсу, создание пользователей, выдача токенов) подробно описана в документации по CIAM.

Обновление версии TCS

Чтобы обновить TCS 1.2.1 до версии 1.3.0 (с сохранением данных), нужно выполнить следующие действия:

  1. Сохранение данных.

    a. Сохраните планы выполнения.

    В случае использования представлений (views) и персистентных подготовленных выражений (persisted prepared statements) убедитесь, что они сохранены, поскольку в настоящее время они сбрасываются при обновлении. Для выгрузки можно использовать следующие запросы:

    select * from tcs_prepareds()select * from tcs_views()

    b. Остановите текущий кластер TCS версии 1.2.1 (в ATE плейбук stop.yml).

    c. Сохраните все резервные копии.

    Данный шаг необходим на случай отказа во время исполнения обновления (например, если произойдет обрыв сети). В таком случае процедуру обновления будет необходимо повторить целиком с самого начала.

    • Для Tarantool:

      • файлы снимков (.snap);
      • файлы журналов (.xlog);
      • мета-данные внешних томов и файлы Parquet.
    • Для etcd:

      • файл снимка etcd.
  2. Запуск обновления.

    a. Внесите правки в конфигурацию TCS.

    Отключите TCS-роли (tcs_roles/*) в конфигурации кластера. Для этого их можно закомментировать, а в случае их явного удаления нужно убедиться в том, что предыдущая версия конфигурации сохранена.

    После этого обновите конфигурацию кластера в etcd (см. [Пример вызова плейбука etcd_3_0.yml для отправки конфигурации в etcd}).

    b. Запустите кластер TCS версии 1.3.0 (в ATE плейбук start.yml).

    Кластер запустится на конфигурации с выключенными ролями.

    c. Запустите обновления с помощью утилиты upgrade.lua.

    Утилита upgrade.lua входит в состав установочного архива TCS, см. директорию upgrade.

    Сначала рекомендуется выполнить обновление с опцией --dry-run, чтобы получить список предстоящих обновлений без их фактического выполнения:

    $ tarantool upgrade/upgrade.lua \    --host localhost \    --port 3301 \    --from 1.2.1 \    --to 1.3.0 \    --dry-run

    Затем выполните тот же вызов без опции --dry-run. По ходу работы утилита upgrade.lua будет запрашивать подтверждения.

    d. Остановите кластер TCS версии 1.3.0.

    e. Откатите кластерную конфигурацию на версию, в которой включены TCS-роли, и загрузите конфигурацию в etcd.

    f. Запустите кластер версии 1.3.0 (в ATE плейбук start.yml).

    Кластер запустится на конфигурации с включенными ролями.

Откат TCS к предыдущей версии {paramsanchor

Обновление TCS без простоя

Откат TCS без простоя

Удаление TCS

  1. Запустите плейбук uninstall.yml, указав следующие параметры:

    • tags и значение tarantool
    • limit и список имен всех экземпляров кластера

    См. Пример вызова плейбука uninstall.yml для удаления кластера.

    Также см. подробнее раздел Удаление кластера Tarantool в документации по инсталлятору Ansible Tarantool Enterprise.

  2. При удалении кластера, работавшего в режиме шардирования, выполните также команду etcdctl del --prefix "/tarantool/{prefix}/sharding", где {prefix} – это префикс для конфигурации TCS в etcd.