2.1. Установка TDG¶
В этом разделе рассмотрена процедура установки TDG версии 1.5.0 или выше.
Программный комплекс TDG поддерживает установку на операционные системы Red Hat Enterprise Linux и CentOS версий 7.5 и выше.
Примечание
TDG может быть запущен на других дистрибутивах Linux, основанных на
systemd
, но не тестируется на них и может не соответствовать заявленной
функциональности.
TDG разработан на основе фреймворка Tarantool Cartridge, в котором предусмотрена упаковка создаваемых приложений в дистрибутивы разных форматов, и, соответственно, различные процедуры установки из этих дистрибутивов.
В данном руководстве приводится один из вариантов установки TDG —
из дистрибутива в формате архива tar.gz
.
Установка выполняется при помощи скрипта tdgctl.py
с локальной машины на удаленные серверы.
Рассмотрим далее:
2.1.1. Подготовка к установке¶
2.1.1.1. Дистрибутив установки¶
Для установки вам понадобится дистрибутив TDG в формате
архива tar.gz
.
Запросить доступ к дистрибутивам TDG вы можете, обратившись через форму обратной связи на сайте Tarantool в разделе Tarantool Data Grid или по адресу электронной почты sales@tarantool.io.
Для упрощения процедур тестового развертывания в составе дистрибутива находится
директория /deploy
, содержащая:
скрипт для развертывания и управления кластером
tdgctl.py
;примеры конфигураций кластера;
файл
README.md
с краткими инструкциями по установке;файл
Vagrantfile
для автоматизации создания тестового окружения для развертывания кластера;файл
VAGRANT.md
с краткими инструкциями по сборке дистрибутива, развертыванию виртуального окружения и установке кластера TDG.
2.1.1.2. Предварительная настройка сервера¶
Основные требования к серверу, на котором будет производиться установка TDG (если установка выполняется распределенно на несколько серверов, требования ниже относятся к каждому из них):
Пользователь операционной системы сервера, от имени которого будет происходить установка, должен иметь привилегии суперпользователя. Также в файле
/etc/sudoers
на сервере нужно отключить для этого пользователя запрос пароля:<server_user_name> ALL=(ALL:ALL) NOPASSWD: ALL
На стороне сервера должен быть включен SSH-сервер, который слушает запросы клиентских соединений на стандартном порте
22
;На сервер должен быть загружен публичный SSH-ключ пользователя локальной машины, из-под которого будет запускаться на локальной машине скрипт
tdgctl.py
;На локальной машине, откуда будет запускаться
tdgctl.py
, для работы скрипта требуется наличие Python 3 и библиотекfabric
иrequests
. Проверить наличие библиотек можно командой:pip3 freeze
Если библиотеки отсутствуют, установите их:
pip3 install fabric requests
2.1.1.3. Подготовка конфигурации кластера¶
Для установки TDG на серверы также потребуется подготовить файл конфигурации кластера в формате JSON.
Рассмотрим структуру и параметры файла на примере:
{
"general":
{
"cluster_cookie": "ilikerandompasswords"
},
"servers":
[
{
"address": "172.19.0.2",
"username": "vagrant",
"instances":
[
{
"name": "core_1",
"binary_port": 3000,
"http_port": 8080,
"memory_mb": 128,
"env": {"CUSTOM_ENV": "some_value"}
},
{
"name": "runner",
"binary_port": 3001,
"http_port": 8081,
"memory_mb": 128
},
{
"name": "storage_1",
"binary_port": 3002,
"http_port": 8082,
"memory_mb": 1024
},
{
"name": "storage_2",
"binary_port": 3003,
"http_port": 8083,
"memory_mb": 1024
}
]
},
{
"address": "172.19.0.3",
"username": "vagrant",
"instances":
[
{
"name": "core_2",
"binary_port": 3004,
"http_port": 8084,
"memory_mb": 128
},
{
"name": "storage_1_replica",
"binary_port": 3005,
"http_port": 8085,
"memory_mb": 1024
},
{
"name": "storage_2_replica",
"binary_port": 3006,
"http_port": 8086,
"memory_mb": 1024
}
]
}
]
}
Параметры конфигурации:
general
— параметры, относящиеся ко всем экземплярам (инстансам, instances):
cluster_cookie
— (опционально) токен кластера;
servers
— список (массив) серверов, на которые будет происходить установка.
Для каждого сервера задается:
username
— имя пользователя ОС, из-под которого будет происходить установка;address
— адрес сервера;instances
— список (массив) устанавливаемых экземпляров. Для каждого экземпляра задается:name
— имя экземпляра. При установке на сервера Linux это будет имя юнитаsystemd
;binary_port
— порт, который должен быть открыт на сервере для взаимодействия экземпляров по бинарному протоколу Tarantool. Требует протоколы TCP и UDP;http_port
— порт, который должен быть открыт на сервере для доступа к экземпляру по HTTP. Требует протокола TCP;memory_mb
— ограничение потребления памяти Tarantool внутри экземпляра, мегабайты;env
— (опционально) переменные окружения, которые будут доступны для данного экземпляра и могут быть использованы в пользовательском коде.
2.1.2. Установка¶
Для установки системы используется скрипт tdgctl.py
. Скрипт находится в
дистрибутиве установки в директории /deploy
.
При запуске скрипта нужно указать команду deploy
и передать аргументами путь
к файлу с конфигурацией кластера и файлу дистрибутива установки:
./tdgctl.py -c deploy.json deploy tdg-<version>.tar.gz
где
deploy.json
— файл с конфигурацией кластера;tdg-<version>.tar.gz
— файл дистрибутива (<version> — версия релиза TDG).
Подробнее о скрипте tdgctl.py
и формате его команд см. здесь.
Cкрипт подключается к серверам, указанным в конфигурации, загружает на них
дистрибутив, распаковывает исполняемые файлы TDG, создает
systemd-юниты вида <instance_name>.service
для каждого экземпляра, указанного
в конфигурации кластера, и запускает созданные
сервисы.
Запуск сервисов производится от имени системного пользователя nobody
.
Успешность установки можно определить по логу работы скрипта в консоли. Пример лога успешной установки (в соответствии с конфигурацией кластера из примера выше):
$ ./tdgctl.py -c deploy.json deploy tdg-1.6.5-10-g9fc081e.tar.gz
Deploying package...
Uploading package...
[####################] 100%
[ ] 0% Created symlink from /etc/systemd/system/core_1 to /etc/systemd/system/core_1.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/core_1.service to /etc/systemd/system/core_1.service.
[## ] 14% Created symlink from /etc/systemd/system/runner to /etc/systemd/system/runner.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/runner.service to /etc/systemd/system/runner.service.
[##### ] 28% Created symlink from /etc/systemd/system/storage_1 to /etc/systemd/system/storage_1.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/storage_1.service to /etc/systemd/system/storage_1.service.
[######## ] 42% Created symlink from /etc/systemd/system/storage_2 to /etc/systemd/system/storage_2.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/storage_2.service to /etc/systemd/system/storage_2.service.
[########### ] 57% Created symlink from /etc/systemd/system/core_2 to /etc/systemd/system/core_2.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/core_2.service to /etc/systemd/system/core_2.service.
[############## ] 71% Created symlink from /etc/systemd/system/storage_1_replica to /etc/systemd/system/storage_1_replica.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/storage_1_replica.service to /etc/systemd/system/storage_1_replica.service.
[################# ] 85% Created symlink from /etc/systemd/system/storage_2_replica to /etc/systemd/system/storage_2_replica.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/storage_2_replica.service to /etc/systemd/system/storage_2_replica.service.
[####################] 100%
7 instances created
172.19.0.2 core_1
172.19.0.2 runner
172.19.0.2 storage_1
172.19.0.2 storage_2
172.19.0.3 core_2
172.19.0.3 storage_1_replica
172.19.0.3 storage_2_replica
0 instances updated
0 instances kept
Done!
Далее необходимо подключиться к web-интерфейсу системы, убедиться, что все экземпляры запущены, и перейти к следующему этапу — настройке кластера и запуску системы в работу.
2.1.2.1. Директории по умолчанию¶
В процессе установки TDG на сервере создаются по умолчанию следующие директории:
/var/lib/tarantool/<instance_name>
— рабочая директория ({workdir}
) каждого из экземпляров, в которой хранятся его данные и конфигурация:файлы снимков данных
.snap
и WAL-файлы.xlog
;поддиректории
/config
и/config.backup
, в которых хранятся файлы конфигурации экземпляра и их резервные копии соответственно;файл
.tarantool.cookie
, содержащий токен кластера;
/usr/share/tarantool/<instance_name>
— директория, в которой хранятся исполняемые файлы TDG. Количество таких директорий соответствует количеству развернутых экземпляров.
<instance_name>
— имя экземпляра, определенное в
файле конфигурации кластера.