Основные задачи¶
Первичная установка системы¶
Установка TCS в производственном окружении производится с использованием инсталлятора Ansible Tarantool Enterprise (ATE).
Примечание
В тестовом окружении также возможна установка TCS без использования ATE.
Возможны 2 вида установки системы TCS с использованием ATE:
Установка с помощью Ansible-коллекции.
См. подробнее:
раздел Подготовка серверов в текущем Руководстве администратора
глава Использование Ansible-коллекции в документации по инсталлятору Ansible Tarantool Enterprise
Установка с помощью Docker-образа.
В этом случае установка TCS должна включать следующие шаги:
Подготовка серверов, в том числе установка и настройка кластера
etcd.См. подробнее:
раздел Подготовка серверов в текущем Руководстве администратора
раздел Сценарий первичной настройки в документации по инсталлятору Ansible Tarantool Enterprise
Загрузка конфигурации в
etcd.См. раздел Tarantool 3.0: Отправка конфигурации в etcd в документации по инсталлятору Ansible Tarantool Enterprise.
Установка TCS.
См. следующие разделы в документации по инсталлятору Ansible Tarantool Enterprise:
Установка TCM.
См. раздел Tarantool Cluster Manager: Установка и запуск в документации по инсталлятору Ansible Tarantool Enterprise.
Пример кластера TCS, развернутого на нескольких серверах:

Настройка поддержки драйверов JDBC/ADBC¶
По умолчанию в TCS включена поддержка драйверов JDBC/ADBC.
Для их корректной работы в конфигурации TCS для каждого экземпляра Storage
нужно указать параметры соединения в разделе arrow_flight_sql
(groups/storages/replicasets/replicaset<N>/instances/instance<N>/roles_cfg/tcs_roles/storage/arrow_flight_sql):
listen– номер порта. По умолчанию:50051.(обязательно)
credentials– логин и пароль (параметрыloginиpassword).session_timeout_secs– максимальная длительность сессии (в секундах). По умолчанию:28800(8 часов).
Примечание
Если экземпляры запущены на одном хосте, то для них нужно явно указать разные номера портов в параметре listen.
Пример:
groups:
storages:
replicasets:
replicaset1:
replication:
failover: manual
leader: instance1
instances:
instance1:
roles_cfg:
tcs_roles/storage:
arrow_flight_sql:
listen: 10.95.196.62:50051
credentials:
username: tcs
password: tcs
http:
enabled: true
listen: 10.95.196.62:7777
credentials:
username: tcs
password: tcs
session_timeout_secs: 28800
instance2:
roles_cfg:
tcs_roles/storage:
arrow_flight_sql:
listen: 10.95.196.26:50052
credentials:
username: tcs
password: tcs
http:
enabled: true
listen: 10.95.196.26:7778
credentials:
username: tcs
password: tcs
session_timeout_secs: 28800
Для обоих экземпляров Storage в наборе реплик replicaset1 указаны:
параметр
arrow_flight_sql_api;разные номера портов в
listen, поскольку экземпляры запущены на одном хосте.
Обновление версии системы¶
Внимание
Версия 1.0.2 несовместима с версией 1.0.1. Перед установкой версии 1.0.2 требуется очистить базу данных.
Чтобы обновить TCS 1.0.1 до версии 1.0.2, нужно выполнить следующие действия:
Убедиться, что в файле инвентаря TCS соблюдается формула для значений параметров
lease_interval>probe_interval+renew_interval. При необходимости изменений – загрузить обновленную конфигурацию вetcd.Остановить все экземпляры Storage 1.0.1 и полностью очистить среду (в ATE плейбук uninstall.yml).
Развернуть все экземпляры Storage 1.0.2 (в ATE плейбук tcs-install.yml).
С помощью SQL-запросов загрузить схему данных и сами данные.
Откат системы к предыдущей версии¶
Внимание
Версия 1.0.1 несовместима с версией 1.0.2. Перед установкой версии 1.0.1 требуется очистить базу данных.
Чтобы откатить TCS 1.0.2 обратно к версии 1.0.1, нужно выполнить следующие действия:
Остановить все экземпляры Storage 1.0.2 и полностью очистить среду (в ATE плейбук uninstall.yml).
Развернуть все экземпляры Storage 1.0.1 (в ATE плейбук tcs-install.yml).
С помощью SQL-запросов загрузить схему данных и сами данные.
Создание резервной копии¶
Процедура создания резервной копии находится в проработке.
Восстановление из резервной копии¶
Процедура восстановления из резервной копии находится в проработке.
Масштабирование системы¶
Средства масштабирования в текущей версии TCS пока недоступны.
Управление кластером¶
Управление кластером с помощью ATE¶
Инсталлятор Ansible Tarantool Enterprise предоставляет следующие сценарии по управлению кластером (см. соответствующие разделы в документации по инсталлятору Ansible Tarantool Enterprise):
Управление кластером с помощью TCM¶
Tarantool Cluster Manager – это административная панель для настройки и отслеживания кластеров, а также управления ими. Основные задачи, доступные через веб-интерфейс TCM:
Создание/остановка кластера и изменение его конфигурации:
Переключение лидера в наборах реплик;
Изменение некоторых других настроек кластера, с простоем и в runtime;
Исключение экземпляра из кластера.
Управление пользователями и ролями в кластере:
Управление пользователями Tarantool;
Изменение паролей пользователей Tarantool Enterprise.
Контролируемое аварийное переключение узлов кластера;
Восстановление и пересоздание экземпляров;
Проверка работоспособности кластера;
Просмотр журналов аудита.
См. документацию по Tarantool Cluster Manager.
Удаление системы¶
См. раздел Удаление кластера Tarantool в документации по инсталлятору Ansible Tarantool Enterprise.
Настройка подключения с шифрованием¶
TCS поддерживает подключение с шифрованием, где все входящие внешние запросы к сервисам осуществляются по HTTPS.
Примечание
Для внутрикластерных запросов (между экземплярами TCS и etcd) подключение с шифрованием не поддерживается.
Настройка подключения по HTTPS производится в конфигурационных файлах,
в разделе groups/storages/replicasets/replicaset<N>/instances/instance<N>/roles_cfg/tcs_roles/storage/
каждого экземпляра:
transport— протокол приема входящих сообщений:plain(по умолчанию) – входящие сообщения будут приниматься по HTTP.tls– входящие сообщения будут приниматься по HTTPS. Если указано это значение, то обязательно должны быть указаныtls_cert_fileиtls_key_file.
tls_cert_file— путь к TLS-сертификату в формате PEM.tls_ca_file— путь к TLS-сертификату удостоверяющего центра в формате PEM (опционально, если не используется самоподписанный сертификат).tls_key_file— путь к приватному ключу от сертификата.tls_ciphers— список шифров для версий TLS до 1.2. Шифры разделяются символом:.tls_ciphersuites— список шифров для TLS 1.3. Шифры разделяются символом:.
Если иные настройки не указаны, то по умолчанию используются рекомендации по настройке TLS на сервере Mozilla Intermediate v5.
TCS поддерживает работу с шифрами ГОСТ TLS. Для настройки работы с шифрами ГОСТ требуются следующие настройки:
указать шифры в
tls_ciphersилиtls_ciphersuites.установить в систему криптографический модуль и подключить его в OpenSSL. Это нужно сделать как на сервере, так и у всех клиентов.
Примеры¶
Минимальная конфигурация с самоподписанным сертификатом¶
tarantool_column_store.s1-1:
advertise_uri: localhost:3301
http_port: 8081
memtx_memory: 2147483648 # 2gb
log: ''
roles_cfg:
tcs_roles/storage:
transport: tls
tls_cert_file: certs/cert.pem
tls_key_file: certs/key.pem
features:
- grpc_api
Конфигурация с сертификатом, выданным CA¶
tarantool_column_store.s1-1:
advertise_uri: localhost:3301
http_port: 8081
memtx_memory: 2147483648 # 2gb
log: ''
roles_cfg:
tcs_roles/storage:
transport: tls
tls_cert_file: certs/cert.pem
tls_ca_file: certs/ca.pem
tls_key_file: certs/key.pem
features:
- grpc_api
Конфигурация с шифрами ГОСТ¶
tarantool_column_store.s1-1:
advertise_uri: localhost:3301
http_port: 8081
memtx_memory: 2147483648 # 2gb
log: ''
roles_cfg:
tcs_roles/storage:
transport: tls
tls_cert_file: certs/cert.pem
tls_key_file: certs/key.pem
tls_ciphers: 'GOST2012-MAGMA-MAGMAOMAC:GOST2012-KUZNYECHIK-KUZNYECHIKOMAC:LEGACY-GOST2012-GOST8912-GOST8912:IANA-GOST2012-GOST8912-GOST8912:GOST2001-GOST89-GOST89'
tls_ciphersuites: ''
features:
- grpc_api
Привязка экземпляра Tarantool к NUMA-зоне¶
Чтобы привязать экземпляры Tarantool к узлам NUMA, нужно отредактировать
конфигурационные файлы сервисов SystemD.
Полная инструкция¶
Зайдите на сервер TCS с экземплярами Storage по SSH.
Переключитесь на пользователя
tarantool:sudo su tarantool
Установите переменную окружения для работы с
SystemDвuserspace:export XDG_RUNTIME_DIR=/run/user/$(id -u)
Объяснение: Это нужно для выполнения команд утилит
SystemD (systemctl, journalctl)вuserspace.Рекомендация: Чтобы не выполнять экспорт каждый раз, можно добавить команду
export XDG_RUNTIME_DIR=/run/user/$(id -u)в файл$HOME/.profile.Посмотрите список сервисов пользователя
tarantool:systemctl --user list-units --type=service
Пример вывода:
tarantool@tcs-testing-1:~$ systemctl --user list-units --type=service UNIT LOAD ACTIVE SUB DESCRIPTION tarantool-cluster-manager.service loaded active running Tarantool Cluster Manager tcs-scheduler@scheduler-01.service loaded active running Tarantool Column Store scheduler API service ● tcs@i-01.service loaded failed failed Tarantool application tcs@i-01 #сервис инстанса стораджа
В примере выше:
tcs@i-01.service– полное название сервиса для экземпляра с именемi-01;tcs– название приложения Tarantool.
В директории
$HOME/.config/systemd/userнаходятся:Шаблонный сервис для всех экзепляров
tcs@.service;Символическая ссылка на шаблонный сервис
tcs@i-01.service.
Откройте шаблонный сервис для экземпляров Storage:
vim $HOME/.config/systemd/user/tcs@.service
В шаблонном сервисе посмотрите путь до исполняемого файла
tarantool:[Service] Type=simple ExecStart="/app/tarantool/tcs/bin/tcs.%i/tarantool --name %i" # запоминаем этот путь Restart=on-failure RestartSec=2
Объяснение:
При автоматическом развертывании TCS исполняемые файлы размещаются в разных местах в зависимости от:
указанных в настройках путей для размещения файлов;
названия приложения (app_name);
других параметров конфигурации.
Вместо того чтобы пытаться угадать правильный путь к исполняемому файлу Tarantool при настройке службы (в параметре
ExecStart), лучше сразу посмотреть точное расположение файла в конфигурационном файле службыvim ~/.config/systemd/user/tcs@.service.Выполните команду
systemctl --user edit название_сервиса_storageдля того, чтобы начать редактирование (во временном буфере) файла с перезаписью опций в шаблонном сервисе:systemctl --user edit tcs@i-01
Добавьте перезапись опции
ExecStartиз секции[Service]. В новомExecStartуказан запуск процесса через утилитуnumactlс нужными опциями:[Service] ExecStart= ExecStart=numactl --cpunodebind=0 --membind=0 /app/tarantool/tcs/bin/tcs.%i/tarantool --name %i
ВАЖНО: обязательно нужно указать сначала пустой
ExecStart, чтобы в дальнейшем не возникло ошибки при применении новой конфигурации.Сохраните файл.
Объяснение: Это действие создаст директорию
$HOME/.config/systemd/user/название_сервиса.dи файлoverride.confв этой директории.Рекомендация: Чтобы в качестве редактора использовался
vim(если он уже не используется по умолчанию), можно установить переменную окруженияSYSTEMD_EDITOR=vim.Выполните команду для перезагрузки конфигурации
systemD:
systemctl --user daemon-reload
Перезапустите экземпляр:
systemctl --user restart tcs@i-01
Примечание: Перезапустить экземпляр можно также через ATE.
После перезапуска можно проверить привязку к NUMA-зоне, найдя ее в файле
/proc/${PID}/numa_maps.
Краткая инструкция¶
# Зайти под пользователем tarantool:
sudo su tarantool
# Установить переменную для работы с SystemD в userspace:
export XDG_RUNTIME_DIR=/run/user/$(id -u)
# Посмотреть, какие есть сервисы:
systemctl --user list-units --type=service
# Запустить редактирование интересующего сервиса:
systemctl --user edit название_интересующего_сервиса
# Добавить в файл:
[Service]
ExecStart=
ExecStart=numactl --cpunodebind=0 --membind=0 /app/tarantool/tcs/bin/tcs.%i/tarantool --name %i
# Перезагрузить конфигурацию systemD:
systemctl --user daemon-reload
# Перезапустить экземпляр
systemctl --user restart название_сервиса
Установка системы в тестовой среде¶
Установка TCS в тестовой среде может производиться как с использованием инсталлятора Ansible Tarantool Enterprise (аналогично установке в производственной среде, так и вручную. Ниже приведены инструкции по ручной установке.
В пакет поставки TCS включены следующие файлы конфигурации:
Файл конфигурации
config.ymlописывает конфигурацию для кластера TCS (набор реплик из 2 экземпляров).Файл конфигурации
instances.ymlуказывает, какие именно экземпляры должны быть запущены на текущем хосте.
Возможны 2 вида установки кластера TCS:
Также кластер TCS можно разворачивать как на одном сервере (по умолчанию), так и на нескольких серверах.
Установка кластера с локальным файлом конфигурации¶
Распаковать архив с поставкой версии TCS 1.0 и перейти в распакованную директорию.
Убедиться, что в файле
instances.ymlуказаны те экземпляры, которые нужно развернуть на текущем сервере.Запустить команду
./tt start, чтобы развернуть кластер.Запустить команду
./tt statusдля проверки того, что кластер поднят.
Пример результата успешной установки:
/tt start
• Starting an instance [tarantool_column_store: instance1]...
• Starting an instance [tarantool_column_store: instance2]...
/tt status
INSTANCE STATUS PID MODE CONFIG BOX UPSTREAM
tarantool_column_store: instance1 RUNNING 319481 RW ready running --
tarantool column store: instance2 RUNNING 319482 RO ready running --
Установка кластера с файлом конфигурации в etcd¶
Распаковать архив с поставкой версии TCS 1.0 и перейти в распакованную директорию.
В файле
config.ymlпрописать, откуда вetcdбрать конфигурацию.Например:
config: etcd: prefix: /tcs endpoints: - http://localhost:2379 http: request: timeout: 1
Загрузить файл конфигурации в
etcd.Например:
mv config.yml remote.yml ./tt cluster publish http://localhost:2379/tcs remote.yml
Убедиться, что в файле
instances.ymlуказаны те экземпляры, которые нужно развернуть на текущем сервере.Запустить команду
./tt start, чтобы развернуть кластер.Запустить команду
./tt statusдля проверки того, что кластер поднят.
Установка кластера на нескольких серверах¶
На каждом сервере нужно выполнить установку нужного типа (с локальным файлом конфигурации
или хранящимся в etcd). При этом:
Файлы конфигурации TCS на серверах должны совпадать и содержать настройки для всех экземпляров TCS на всех серверах.
В файле
instances.ymlдля каждого сервера нужно указать те экземпляры TCS, которые нужно развернуть на данном сервере.
Например:
instances.ymlна сервере А:instance1: instance2:
instances.ymlна сервере B:instance3: instance4:
Остановка кластера в тестовой среде¶
Выполните команду
./tt stop -yдля остановки кластера.(Необязательно) Выполните команду
./tt cleanдля зачистки журналов и данных.
Обновление системы в тестовой среде¶
Остановить старый кластер, чтобы он не помешал поднять новую версию, если экземпляры старой и новой версии привязаны к одинаковым портам на одном сервере. Журналы и данные можно не очищать.
Установить новую версию системы, не забыв обновить файл конфигурации.