Top.Mail.Ru
Tdg » 1.6 » 2. Руководство по эксплуатации » 2.1. Установка TDG
 

2.1. Установка 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 вы можете, обратившись через форму обратной связи или по адресу электронной почты 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.

  • На сервере должны быть установлены утилиты zip и unzip.

  • На локальной машине, откуда будет запускаться 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": "notifier",
                    "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 – параметры, относящиеся ко всем инстансам:

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/notifier to /etc/systemd/system/notifier.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/notifier.service to /etc/systemd/system/notifier.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   notifier
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> – имя инстанса, определенное в файле конфигурации кластера.