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

Обновление версии системы¶
Для управления миграциями в кластере TCS используется утилита tcsctl,
которая позволяет мигрировать данные кластера TCS с одной версии на другую.
Данная утилита применима для следующих переходов между версиями:
с 1.1.0 на 1.2.0
с 1.1.0 на 1.2.1
с 1.2.0 на 1.2.1
Примечание
Текущая версия утилиты tcsctl позволяет переводить кластер TCS только на более свежую версию (команда upgrade).
Возможности отката обновлений на более старую версию утилита tcsctl не предоставляет.
Примечание
Перед обновлением администратору требуется произвести ряд подготовительных шагов,
поскольку в текущей версии tcsctl процесс смены версии TCS автоматизирован не полностью.
Обновление версии системы c 1.1.0 до 1.2.0¶
Чтобы обновить TCS 1.1.0 до версии 1.2.0, нужно выполнить следующие действия:
Сохранение всех резервных копий.
Данный шаг необходим на случай отказа во время исполнения обновления (например, если произойдет обрыв сети). В таком случае процедуру обновления будет необходимо повторить целиком с самого начала.
a. Для Tarantool.
Убедитесь, что файлы снимков (
.snap) и журналов (.xlog) Tarantool, используемые на старой версии, сохранены.b. Для etcd.
В случае использование etcd убедитесь, что его файл снимка сохранен.
c. Для планов выполнения.
В случае использования представлений (views) и персистентных подготовленных выражений (persisted prepared statements) убедитесь, что они сохранены, поскольку в настоящее время они сбрасываются при обновлении. Для выгрузки можно использовать следующие запросы:
select * from tcs_prepareds() select * from tcs_views()
Запуск обновления.
a. Остановите текущий кластер TCS версии
1.1.0.b. Отключите TCS-роли (
tcs_roles/*) в конфигурации кластера.Для этого их можно закомментировать, а в случае их явного удаления нужно убедиться в том, что предыдущая версия конфигурации сохранена. После этого обновите конфигурацию кластера в etcd.
c. Запустите кластер TCS версии
1.2.1.Здесь используется именно версия 1.2.1, поскольку необходимая для обновления утилита
tcsctlвходит в пакет поставки TCS только начиная с версии 1.2.1.d. Произведите запуск скрипта миграций с помощью утилиты
tcsctl(командаupgrade):$ tcsctl upgrade --etcd_host <ETCD_HOST> --etcd_port <ETCD_PORT> --iproto_username <USER> --iproto_password <PASS> --migrations_dir <MIGRATIONS_DIR> --from_version 1.2.0 --to_version 1.2.1
e. Остановите кластер TCS версии
1.2.1.f. Откатите кластерную конфигурацию на версию, в которой TCS-роли включены.
g. Запустите кластер версии
1.2.0.
Обновление версии системы c 1.1.0 до 1.2.1¶
Производится аналогично обновлению TCS с версии 1.1.0 на 1.2.0.
Обновление версии системы c 1.2.0 до 1.2.1¶
Чтобы обновить TCS 1.2.0 до версии 1.2.1, нужно выполнить следующие действия:
Сохранение всех резервных копий.
Производится аналогично сохранению резервных копий при обновлении TCS с версии 1.1.0 на 1.2.0 (см. шаг 1).
Запуск обновления.
a. Остановите текущий кластер TCS версии
1.2.0. b. Запустите кластер TCS версии1.2.1. c. Произведите запуск скрипта миграций с помощью утилитыtcsctl(командаupgrade):$ tcsctl upgrade --etcd_host <ETCD_HOST> --etcd_port <ETCD_PORT> --iproto_username <USER> --iproto_password <PASS> --migrations_dir <MIGRATIONS_DIR> --from_version 1.2.0 --to_version 1.2.1
Откат системы к предыдущей версии¶
Откат версии системы c 1.2.0 до 1.1.0¶
Внимание
При откате версия 1.1.0 несовместима с версией 1.2.0. Перед установкой версии 1.1.0 требуется очистить базу данных.
Чтобы откатить TCS 1.2.0 обратно к версии 1.1.0, нужно выполнить следующие действия:
Остановить все экземпляры Storage 1.2.0 и полностью очистить среду (в ATE плейбук uninstall.yml).
При откате кластера, работавшего в режиме шардирования, выполнить команду
etcdctl del --prefix "/tarantool/{prefix}/sharding", где{prefix}- это префикс для конфигурации TCS вetcd.Развернуть все экземпляры Storage 1.1.0 (в ATE плейбук tcs/install.yml).
С помощью SQL-запросов загрузить схему данных и сами данные.
Откат версии системы c 1.2.1 до 1.1.0¶
Внимание
При откате версия 1.2.1 несовместима с версией 1.1.0. Перед установкой версии 1.1.0 требуется очистить базу данных.
Производится аналогично откату TCS с версии 1.2.0 на 1.1.0.
Откат версии системы c 1.2.1 до 1.2.0¶
Внимание
При откате версия 1.2.1 несовместима с версией 1.2.0. Перед установкой версии 1.2.0 требуется очистить базу данных.
Производится аналогично откату TCS с версии 1.2.0 на 1.1.0.
Обновление системы без простоя¶
Данная процедура недоступна для версий TCS 1.2.х.
Откат системы без простоя¶
Данная процедура недоступна для версий TCS 1.2.х.
Создание резервной копии¶
Процедура создания резервной копии находится в проработке.
Восстановление из резервной копии¶
Процедура восстановления из резервной копии находится в проработке.
Масштабирование системы¶
Добавление экземпляров Scheduler¶
Добавление новых экземпляров Scheduler может понадобиться, когда системе не хватает пропускной способности для маршрутизации или мощности для SQL-вычислений.
Важно
Добавление новых экземпляров возможно только в шардированном режиме работы кластера.
Для добавления нового экземпляра Scheduler с помощью инсталлятора Ansible Tarantool Enterprise:
Добавьте экземпляры Scheduler в инвентарь TCS.
Запустите плейбук
tcs/install.yml, указав в переменнойtarantool_shared_hostsсписок имен экземпляров, которые нужно установить и запустить. При необходимости задайте параметрlimit.См. Пример вызова плейбука tcs/install.yml для добавления экземпляра.
(Обязательно!) Перезагрузите конфигурацию кластера в etcd, чтобы восстановить конфигурацию запущенных ранее экземпляров Scheduler и Storage.
Добавление экземпляров Storage¶
Производится аналогично добавлению экземпляров Scheduler.
Добавление экземпляров Coordinator¶
Производится аналогично добавлению экземпляров Scheduler, но без обязательной перезагрузки конфигурации в etcd.
Настройка шардирования¶
Управление кластером¶
Управление кластером с помощью ATE¶
Инсталлятор Ansible Tarantool Enterprise предоставляет следующие сценарии по управлению кластером (см. соответствующие разделы в документации по инсталлятору Ansible Tarantool Enterprise):
Управление кластером с помощью TCM¶
Tarantool Cluster Manager – это административная панель для настройки и отслеживания кластеров, а также управления ими. Основные задачи, доступные через веб-интерфейс TCM:
Создание/остановка кластера и изменение его конфигурации:
Переключение лидера в наборах реплик;
Изменение некоторых других настроек кластера, с простоем и в runtime;
Исключение экземпляра из кластера.
Управление пользователями и ролями в кластере:
Управление пользователями Tarantool;
Изменение паролей пользователей Tarantool Enterprise.
Контролируемое аварийное переключение узлов кластера;
Восстановление и пересоздание экземпляров;
Проверка работоспособности кластера;
Просмотр журналов аудита.
См. документацию по Tarantool Cluster Manager.
Удаление системы¶
Запустите плейбук
uninstall.yml, указав следующие параметры:tagsи значениеtarantoollimitи список имен всех экземпляров кластера
См. Пример вызова плейбука uninstall.yml для удаления кластера.
При удалении кластера, работавшего в режиме шардирования, выполните также команду
etcdctl del --prefix "/tarantool/{prefix}/sharding", где{prefix}– это префикс для конфигурации TCS вetcd.
См. подробнее раздел Удаление кластера Tarantool в документации по инсталлятору Ansible Tarantool Enterprise.
Привязка экземпляра 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 название_сервиса
Настройка IP-адресов узлов в кластере TCS¶
Для определения IP-адреса узла в кластере TCS используются следующие параметры:
протокол Tarantool iproto:
(Обязательно) iproto.listen.uri – для входящих запросов (общего назначения).
iproto.advertise.client – для взаимодействия с клиентами.
Пример:
iproto: listen: - uri: 0.0.0.0:3331 advertise: client: 127.0.0.0:3331
протокол HTTP:
(Обязательно) http.listen – для входящих запросов (общего назначения).
http.advertise.client – для взаимодействия с клиентами.
http.advertise.sharding.uri – для взаимодействия между экземплярами Scheduler и Storage.
Пример:
roles_cfg: tcs_roles/storage: http: listen: 0.0.0.0:7777 advertise: client: 127.0.0.1:7777 sharding: uri: 127.0.0.1:7777
протокол Apache Arrow Flight:
(Обязательно) arrow_flight_sql.listen – для входящих запросов (общего назначения).
arrow_flight_sql.advertise.client – для взаимодействия с клиентами.
arrow_flight_sql.advertise.sharding.uri– для взаимодействия между экземплярами Scheduler и Storage.
Пример:
roles_cfg: tcs_roles/storage: arrow_flight_sql: listen: 0.0.0.0:50051 advertise: client: 127.0.0.1:50051 sharding: uri: 127.0.0.1:50051
Эти настройки нужны в любом режиме работы кластера.
Проверка топологии и номера ревизии конфигурации¶
С помощью следующего SQL-запроса к экземпляру Scheduler можно получить информацию о топологии и номерах ревизии конфигурации на всех экземплярах Storage в кластере TCS:
SELECT * FROM tcs_routing_map()
Для каждого экземпляра Storage в кластере возвращается:
имя набора реплик (поле
shard_name);имя экземпляра (поле
instance_name);активен ли данный экземпляр (поле
is_enabled);режим чтения/записи экземпляра (поле
mode);номер последней примененной ревизии конфигурации (поле
meta_revision).
Информация об экземплярах Scheduler и Coordinator не предоставляется.
SQL-запрос можно делать к любому экземпляру Scheduler в кластере.
Пример ответа:
{
"shard_name": "storages-replicaset1",
"instance_name": "storage2",
"is_enabled": true,
"mode": "RO",
"meta_revision": 0
},
{
"shard_name": "storages-replicaset1",
"instance_name": "storage1",
"is_enabled": true,
"mode": "RW",
"meta_revision": 0
}
Установка системы в тестовой среде¶
Установка 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для зачистки журналов и данных.
Обновление системы в тестовой среде¶
Остановить старый кластер, чтобы он не помешал поднять новую версию, если экземпляры старой и новой версии привязаны к одинаковым портам на одном сервере. Журналы и данные можно не очищать.
Установить новую версию системы, не забыв обновить файл конфигурации.