Для установки RT.DataVision на серверном оборудовании предъявляются следующие системные требования в части поддерживаемых операционных систем:
Поскольку подключение пользователей к RT.DataVision выполняется с помощью веб-приложения, специальных системных требований к клиентскому оборудованию не предъявляется.
На клиентском оборудовании могут использоваться различные версии Windows, Linux и Mac OS X. На операционной системе должен быть установлен поддерживаемый браузер: любой (например, Mozilla Firefox, Google Chrome и прочие), за исключением Internet Explorer (этот браузер не поддерживается RT.DataVision).
Для установки серверной части RT.DataVision предъявляются следующие минимальные требования к оборудованию:
Специальных требований к клиентскому оборудованию не предъявляется.
Перед установкой выполните следующие требования:
Важно. Установка RT.DataVision на тот же сервер, где развёрнут RT.ClusterManager, не рекомендуется.
Для начала потребуется развернуть кластер Docker Swarm на серверах, выделенных для установки RT.DataVision. Провайдер RT.DockerSwarm позволяет удобно строить такой кластер и управлять им в дальнейшем через интерфейс RT.ClusterManager.
Выполните следующие шаги:
Выполните следующие шаги:
Внимание. Развёртывание RT.DataVision осуществляется с использованием одного из двух репозиториев.
Используйте корректный репозиторий:
- Внутренний репозиторий vm-dcp-repo-int.dh.rt.ru — если вы устанавливаете RT.DataVision из внутренней сети ПАО “Ростелеком”.
- Внешний репозиторий repo.data.rt.ru— если вы разворачиваете RT.DataVision из интернета.
RT.DataVision хранит информацию о подключении к базе данных в своей БД метаданных. Для этого используется криптографическая библиотека Python для шифрования паролей подключения. Данная библиотека имеет зависимости на уровне ОС:
1. Debian и Ubuntu: Следующая команда обеспечит установку необходимых зависимостей:
sudo apt-get install build-essential libssl-dev libffi-dev python-dev python-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev
Для Ubuntu 20.04 используйте следующую команду, которая обеспечит установку необходимых зависимостей:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev python3-pip libsasl2-dev libldap2-dev default-libmysqlclient-dev
2. Fedora, RedOS и RHEL-производные дистрибутивы Linux: Установите следующие пакеты с помощью менеджера пакетов yum:
sudo yum install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
bzip2-devel xz-devel zlib-devel sqlite-devel
В более поздних версиях CentOS и Fedora вам может потребоваться установить другой набор пакетов с помощью dnf:
sudo dnf install gcc gcc-c++ libffi-devel python-devel python-pip python-wheel openssl-devel cyrus-sasl-devel openldap-devel
bzip2-devel xz-devel zlib-devel sqlite-devel
3. Mac OS X: Если вы не используете последнюю версию Mac OS X, рекомендуется выполнить обновление, поскольку многие проблемы, с которыми сталкиваются пользователи RT.DataVision, связаны с более старыми версиями Mac OS X. После обновления Mac OS X установите последнюю версию инструментов командной строки XCode:
xcode-select --install
Установите менеджер homebrew, а затем выполните следующие команды:
brew install readline pkg-config libffi openssl mysql postgres
Затем установите версию Python, совместимую с устанавливаемой версией RT.DataVision:
Рекомендуется использовать менеджер виртуальных окружений Python, такой как pyenv (а также pyenv-virtualenv). Также убедитесь, что установлена последняя версия pip и setuptools:
pip3 install --upgrade setuptools pip
Наконец, вам может понадобиться установить LDFLAGS и CFLAGS для определённых пакетов Python для корректной сборки. Экспортируйте эти переменные с помощью:
export LDFLAGS="-L$(brew --prefix openssl)/lib"
export CFLAGS="-I$(brew --prefix openssl)/include"
После этого они будут доступны при установке требований к pip.
Рекомендуется собирать Python из исходников на целевой машине, а не использовать предустановленные версии.
Вы можете собрать и установить Python из исходников командой ниже. Доступные версии для сборки: 3.9.1 и 3.11.8.
Чтобы изменить версию Python для сборки и установки, замените значение переменной окружения в первой строке команды на нужную. В примере введена версия 3.9.1, которая может использоваться для установки любой версии продукта.
Вместо LOGIN и PASSWORD во второй строке команды подставьте ваши учётные данные от репозитория, выданные вам.
export PYTHON_VER_INSTALL=3.9.1 && \
wget https://LOGIN:PASSWORD@repo.data.rt.ru/repository/RT.DataVision-raw/raw/Python-${PYTHON_VER_INSTALL}.tgz && \
tar -xf Python-${PYTHON_VER_INSTALL}.tgz && \
cd Python-${PYTHON_VER_INSTALL} && \
./configure --enable-optimizations && \
sudo make altinstall && \
rm -rf Python-${PYTHON_VER_INSTALL} && \
rm -rf Python-${PYTHON_VER_INSTALL}.tgz
Рекомендуется устанавливать RT.DataVision внутри виртуальной среды. Python поставляется с virtualenv из коробки. Если вы используете pyenv, вы можете установить pyenv-virtualenv. Или вы можете установить его с помощью pip:
pip install virtualenv
Создайте и активируйте виртуальную среду, используя команду:
# virtualenv поставляется начиная с Python 3.6+ в качестве venv взамен pyvenv.
# Здесь представлено описание venv: https://docs.python.org/3.6/library/venv.html
python3 -m venv venv
. venv/bin/activate
Или с использованием pyenv-virtualenv:
# Здесь мы называем виртуальную среду 'rt.datavision'
pyenv virtualenv rt.datavision
pyenv activate rt.datavision
Как только вы активируете виртуальную среду, все пакеты Python, которые вы устанавливаете или удаляете, будут ограничены этой средой. Вы можете выйти из среды, запустив deactivate в командной строке.
Перед установкой продукта нужно указать подключение к публичному репозиторию для загрузки из него пакетов:
pip config --user set index https://user:pass@repo.data.rt.ru/repository/RT.DataVision-pypi/ && \
pip config --user set index-url https://user:pass@repo.data.rt.ru/repository/RT.DataVision-pypi/simple && \
pip config --user set trusted-host repo.data.rt.ru
Вместо user и pass в первых двух командах укажите выданный вам логин и пароль от репозитория.
Для корректного развёртывания и инициализации RT.DataVision последовательно выполните шаги:
1. Сначала установите rt.datavision:
pip install rt.datavision
2. Экспортируйте Flask:
export FLASK_APP=superset
3. Затем инициализируйте базу данных:
superset db upgrade
4. Создайте роли и права по умолчанию:
superset init
5. Создайте пользователя admin в БД метаданных (используйте `admin` в качестве имени пользователя, чтобы иметь возможность загружать примеры):
superset fab create-admin
6. Загрузите пример данных для тестирования:
superset load_examples
7. Запустите RT.DataVision:
gunicorn --access-logfile - --workers 5 --bind http://localhost:5000 "superset.app:create_app()" -e SUPERSET_CONFIG_PATH=путь_до_конфигу
8. Если все шаги выполнены корректно, вы сможете перейти на hostname:port в браузере (например, локально по умолчанию на localhost:8088) и войти в RT.DataVision, используя имя пользователя и пароль, которые вы создали.
В продуктивной среде рекомендуется разворачивать RT.DataVision вместе с прокси-сервером, например, Nginx.
Чтобы развернуть RT.DataVision совместно с Nginx, последовательно выполните шаги:
1. Настройте Nginx:
sudo systemctl status nginx
CentOS/RedOS:
sudo yum install nginx
Debian/Ubuntu:
sudo apt install nginx
touch /etc/nginx/conf.d/datavision.conf
server {
listen 80;
server_name your_hostname your_ip;
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://unix:/run/datavision.sock;
proxy_redirect default;
}
}
Пояснения к параметрам конфигурации:
sudo systemctl restart nginx
2. Настройте демона RT.DataVision:
touch /etc/systemd/system/datavision.socket && touch /etc/systemd/system/datavision.service
[Unit]
Description=RT.Datavision Socket
[Socket]
ListenStream=/run/datavision.sock
[Install]
WantedBy=sockets.target
[Unit]
Description=RT.DataVision daemon
Requires=datavision.socket
After=network.target
[Service]
User=some_user
Group=some_group
WorkingDirectory=/path/to/rt.datavision/work_directory/
ExecStart=/path/to/gunicorn \
--access-logfile - \
--workers 5 \
--bind unix:/run/datavision.sock \
"superset.app:create_app()" \
-e SUPERSET_CONFIG_PATH=/path/to/datavision/config.py
[Install]
WantedBy=multi-user.target
Пояснения к файлу datavision.service:
sudo systemctl daemon-reload
sudo systemctl enable datavision
sudo systemctl start datavision
Если всё выполнено корректно, то RT.DataVision будет доступен извне по порту Nginx.
Для развёртывания RT.DataVision с помощью Docker Compose выполните:
1. Установите Docker, который содержит движок Docker и последнюю версию docker compose из коробки, в соответствии с используемой ОС.
2. Загрузите установочный архив RT.DataVision из репозитория:
wget https://USERNAME:PASSWORD@repo.data.rt.ru/repository/RT.DataVision-raw/docker/rtdv-docker-public.tar.gz
И распакуйте его в отдельную директорию:
mkdir rtdv-docker && tar -xf rtdv-docker-public.tar.gz -C rtdv-docker
После успешного выполнения команды вы должны увидеть новый каталог со следующим составом файлов:
3. Авторизуйтесь в Docker репозитории со своей УЗ:
docker login repo.data.rt.ru:5002
4. Сконфигурируйте RT.DataVision. Для тестового запуска будет достаточно:
openssl rand -base64 42
Описание параметров environment-файла datavision.env:
# First admin credentials
ADMIN_USERNAME=admin - Имя пользователя первого администратора
ADMIN_PASSWORD=admin - Пароль первого администратора
ADMIN_EMAIL=admin@datavision.rt.ru - Адрес почты первого администратора
ADMIN_FIRSTNAME=Datavision - Имя первого администратора
ADMIN_LASTNAME=Admin - Фамилия первого администратора
# Datavision server configuration
DATAVISION_VERSION=2.9.1 - Версия RT.DataVision
DATAVISION_LOAD_EXAMPLES=no - Загрузить ли при следующем запуске демо-данные (yes/no)
DATAVISION_BIND_ADDRESS=0.0.0.0 - IP-адрес, на которой биндить сервер RT.DataVision
DATAVISION_PORT=8088 - Порт, на который биндить сервер RT.DataVision
ACCESS_LOG_FILE=- - Путь до access лог-файла
ERROR_LOG_FILE=- - Путь до error лог-файла
SERVER_WORKER_AMOUNT=1 - Количество воркеров (n*2+1, где n - кол-во ядер для RT.DataVision)
SERVER_WORKER_CLASS=gevent - Класс воркеров (не стоит менять без необходимости)
SERVER_THREADS_AMOUNT=5 - Количество тредов (не стоит менять без необходимости)
GUNICORN_TIMEOUT=60
GUNICORN_KEEPALIVE=2
WORKER_MAX_REQUESTS=0
WORKER_MAX_REQUESTS_JITTER=0
SERVER_LIMIT_REQUEST_LINE=0
SERVER_LIMIT_REQUEST_FIELD_SIZE=0
5. Запустите RT.DataVision через Docker Compose:
docker compose --env-file datavision.env up -d
Дождитесь выполнения команды. RT.DataVision будет доступен по IP-адресу и порту, указанным в environment-файле datavision.env.
Примечание. Если в ходе развёртывания требуется изменить версию RT.DataVision, выполните:
- Укажите корректную версию в переменной DATAVISION_VERSION в файле datavision.env.
- Перезапустите RT.DataVision командой docker compose --env-file datavision.env down && docker compose --env-file datavision.env up -d
После завершения установки RT.DataVision выполните его конфигурирование в соответствии с Инструкцией администратора.
Кластер RT.DataVision состоит из 7 сервисов, каждый из которых выполняет определенную роль в обеспечении работы системы. Кластер развертывается в контейнеризированной среде Docker с использованием оркестратора Docker Swarm. В этом разделе представлено детальное описание каждого сервиса и его взаимодействия с другими компонентами кластера.
Здесь перечислены все сервисы, фигурирующие в составе кластера RT.DataVision и их подробное описание:
Кластер нуждается в одном главном домене и двух субдоменах для него. Это требуется для возможности получить доступ к сервисам RT.DataVision, Traefik и Flower. Ниже приведён пример распределения доменных имён:
1. datavision.ru – основной веб-интерфейс продукта RT.DataVision;
2. flower.datavision.ru – веб-интерфейс приложения Flower;
3. traefik.datavision.ru – веб-интерфейс статуса прокси Traefik. Дашборд доступен по пути /dashboard/.
Примечание. Маршрутизация запросов на домены задаётся в docker-compose-datavision.swarm.yml
Оркестратор Docker Swarm использует несколько типов сетей для обеспечения взаимодействия между контейнерами и службами:
На каждой виртуальной машине должны быть открыты следующие порты, необходимые для работы кластера:
Системные требования к каждой виртуальной машине зависят от сервисов, которые будут развернуты на ней. Ниже приведены минимальные системные требования для запуска экземпляра каждого конкретного сервиса:
1. RT.DataVision
2. Celery Worker
3. Celery Worker Beat
4. PostgreSQL
5. Redis
6. Traefik
7. Flower
Общие системные требования:
На каждую виртуальную машину необходимо загрузить следующие Docker-образы:
На мастер-ноде (celery-01) в домашней директории пользователя root создается директория RT.DataVision, содержащая два файла:
1. datavision_config.swarm.py – конфигурационный файл RT.DataVision. Все параметры идентичны с параметрами не кластеризованного продукта. Этот файл представлен в виде сущности config в Docker.
Для просмотра всех добавленных конфигов используйте команду:
docker config ls
Поскольку Docker не поддерживает обновление конфигов, для применения изменений в конфиге RT.DataVision к кластеру необходимо перезапустить кластер следующей командой:
docker stack rm rtdv && sleep 8 && docker stack deploy --compose-file docker-compose-datavision.swarm.yml rtdv
2. docker-compose-datavision.swarm.yml – конфигурационный файл кластера Docker Swarm, содержащий все переменные окружения с настройками gunicorn сервера для каждого сервиса RT.DataVision, а также параметры и настройки количества сервисов и правила для развертывания в кластере.
Примечание. Не пытайтесь использовать .env файлы – Docker Swarm не будет с ними работать!
Процесс развертывания кластера начинается с загрузки дистрибутивов RT.DataVision на целевые машины. Для этого необходимо иметь учётную запись для доступа в репозиторий repo.data.rt.ru.
1. Скачайте все образы локально из репозитория repo.data.rt.ru:
docker pull repo.data.rt.ru/rt.datavision-registry/rtdatavision:1.5.1
repo.data.rt.ru/rt.datavision-registry/traefik:v3.1.0
repo.data.rt.ru/rt.datavision-registry/postgresql:14
repo.data.rt.ru/rt.datavision-registry/redis:latest
2. Запакуйте образы в архив (напр. rtdatavision-full.tar):
docker save -o rtdatavision-full.tar repo.data.rt.ru/rt.datavision-registry/rtdatavision:1.5.1
repo.data.rt.ru/rt.datavision-registry/traefik:v3.1.0
repo.data.rt.ru/rt.datavision-registry/postgresql:14
repo.data.rt.ru/rt.datavision-registry/redis:latest
3. На целевой машине создайте директорию rt.datavision и перенесите туда архив.
4. Распакуйте архивы и загрузите образы в Docker:
docker load -i rtdatavision-full.tar
Развертывание приложения осуществляется на пяти виртуальных машинах (ВМ), каждая из которых играет определенную роль в кластере. Убедитесь, что на всех ВМ установлены Docker CE и Docker Compose.
На каждой виртуальной машине выполните команды для установки Docker и Docker Compose:
sudo yum update
sudo yum install -y docker-ce docker-compose
sudo systemctl start docker
sudo systemctl enable docker
Инициализируйте Docker Swarm на мастер-ноде celery-01:
sudo docker swarm init --advertise-addr "IP-адрес мастер-ноды"
На остальных виртуальных машинах выполните команду, полученную на предыдущем шаге:
sudo docker swarm join --token SWMTKN-1-... "IP-адрес мастер-ноды"
Примечание. Все команды по взаимодействию с кластером и Docker, за исключением работы с volume и image, выполняются только на мастер-ноде celery-01.
Убедитесь, что на всех нодах открыты следующие порты, необходимые для работы кластера:
Параметры конфигурации кластера определяются в файле docker-compose-datavision.swarm.yml, который находится в архиве rtdatavision с уже выставленными необходимыми параметрами конфигурации.
Развертывание стека на кластере Docker Swarm осуществляется командой:
docker stack deploy --compose-file docker-compose-datavision.swarm.yml rtdv
Примечание. Все команды по взаимодействию с кластером и Docker, за исключением работы с volume и image, выполняются только на мастер-ноде celery-01.
