2.1. Установка TDG | Tdg

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):

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

где

Подробнее о скрипте 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> — имя экземпляра, определенное в файле конфигурации кластера.

Found what you were looking for?
Feedback