Основные задачи¶
Первичная установка системы¶
Установка 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для зачистки журналов и данных.
Обновление системы в тестовой среде¶
- Остановить старый кластер, чтобы он не помешал поднять новую версию, если экземпляры старой и новой версии привязаны к одинаковым портам на одном сервере. Журналы и данные можно не очищать. 
- Установить новую версию системы, не забыв обновить файл конфигурации.