Системная информация
- Системные требования
- Технические рекомендации
- Установка системы с SSL (https)
- Установка системы без SSL (http)
- Обновление системы
- Технологический стек
Системные требования
Операционная система
Linux Ubuntu 22.04 или выше; Debian 12 или выше; Windows 7 или выше
Процессор
Рекомендуемое кол-во ядер: 16 или больше
Оперативная память
Рекомендуемый объем: 64 Gb или больше
Дисковое пространство
Тип диска: SSD
Рекомендуемый объем: 300 Gb
Технологический стэк
Docker version 20.10.17 или выше,
Docker-compose version 1.25.4 или выше
Базы данных
PostgreSQL 16
Clickhouse v23.8.2.7
Технические рекомендации
Процессор
Fastboard использует для обработки данных СУБД российской разработки Clickhouse. ClickHouse реализует параллельную обработку данных и использует все доступные аппаратные ресурсы. При выборе процессора учитывайте, что ClickHouse работает более эффективно в конфигурациях с большим количеством ядер, но с более низкой тактовой частотой, чем в конфигурациях с меньшим количеством ядер и более высокой тактовой частотой. Например, 16 ядер с 2600 MHz предпочтительнее, чем 8 ядер с 3600 MHz.
Рекомендуется использовать технологии Turbo Boost и hyper-threading. Их использование существенно улучшает производительность при типичной нагрузке.
RAM
Мы рекомендуем использовать как минимум 16 ГБ оперативной памяти, чтобы иметь возможность выполнять нетривиальные запросы. Сервер ClickHouse может работать с гораздо меньшим объёмом RAM, память требуется для обработки запросов.
Необходимый объём RAM зависит от:
- Сложности запросов.
- Объёма данных, обрабатываемых в запросах.
Для расчета объёма RAM необходимо оценить размер промежуточных данных для операций GROUP BY, DISTINCT, JOIN а также других операций, которыми вы пользуетесь.
ClickHouse может использовать внешнюю память для промежуточных данных.
Дисковое пространство
Для установки ClickHouse необходимо 2ГБ свободного места на диске.
Объём дискового пространства, необходимый для хранения ваших данных, необходимо рассчитывать отдельно. Расчёт должен включать:
-
Приблизительную оценку объёма данных. Можно взять образец данных и получить из него средний размер строки. Затем умножьте полученное значение на количество строк, которое вы планируете хранить. `
-
Оценку коэффициента сжатия данных. Чтобы оценить коэффициент сжатия данных, загрузите некоторую выборку данных в ClickHouse и сравните действительный размер данных с размером сохранённой таблицы. Например, данные типа clickstream обычно сжимаются в 6-10 раз.
Для оценки объёма хранилища, примените коэффициент сжатия к размеру данных. Если вы планируете хранить данные в нескольких репликах, то необходимо полученный объём умножить на количество реплик.
Файл подкачки
Отключайте файл подкачки в продуктовых средах.
Поддержка мобильных устройств
Интерфейс Fastboard спроектирован с учетом поддержки работы на мобильных устройствах. Используемые элементы управления позволяют выбирать и просматривать существующие группы, проекты, страницы дашбордов.
Сеть
По возможности, используйте сети 10G и более высокого класса.
Пропускная способность сети критически важна для обработки распределенных запросов с большим количеством промежуточных данных. Также, скорость сети влияет на задержки в процессах репликации.
Продукт может быть развернут внутри закрытого контура без доступа к интернету.
Распределение нагрузки
Cистемное устройство Fastboard состоит из следующих компонентов:
• 5 сервисов:
- HTTP-сервис
- Планировщик заданий (CRON)
- Загрузчик данных из внешних источников
- Блок трансформации файлов
- Сервис трансформации данных для визуализаций
• Сервисное хранилище PostgreSQL для настроек проектов и системных параметров
• Хранилище и расчеты данных для визуализаций ClickHouse
• Для обмена сообщений между сервисами и кеширование данных используется REDIS
• Менеджер процессов PM2 обеспечивает балансировку нагрузки между сервисами в рамках одного сервера
Каждый из этих компонентов может быть запущен на разных серверах для оптимзации нагрузки
На одном сервере может быть запущено несколько экземпляров одного или нескольких компонентов
В мультисерверных решениях для работы системы можно использовать любые системы кластеризации и балансировщики нагрузки
Данная архитектура обеспечивает следующие преимущества:
Каждый узел (компонент/сервис) выполняет свою задачу. Например, расчет данных, в том числе многопоточный, выполняет ClickHouse, а преобразование данных в формат для визуализаций выполняет сервис трансформации. Таким образом достигается оптимальное распределение нагрузки между всеми компонентами системы.
Менеджер процесов PM2 обеспечивает балансировку нагрузки выделенных для системы ресурсов. Также система готова к работе с любой существующей системой управления кластерами. Установка максимально допустимых параметров потребления происходит на уровне операционной системы или выбранной пользователем системы кластеризации.
Установка системы с SSL (https)
1. Для разворачивания контейнеров создаем директории для баз данных и обратного прокси
mkdir resources
mkdir traefik
2. Переходим в директорию баз данных и создаем директорию для postgres
cd resources/
mkdir postgres
3. Переходим в директорию postgres, копируем в нее файл docker-compose.yml из предоставленного дистрибутива.
Создаем сеть для контейнеров базами данных и запускаем контейнер с postgres
cd postgres/
docker network create resources
docker-compose up -d
4. Создаем базу данных postgres, например с именем fastboard_back, создать можно разными способами, например подключиться к контейнеру при помощи PgAdmin
5. Переходим на директорию выше, т.е. в директорию resources
cd ..
mkdir clickhouse
cd clickhouse/
6. Копируем в директорию clickhouse файл docker-compose.yml и директорию с конфигами etc из предоставленного дистрибутива Clickhouse.
Меняем параметры выделенной памяти для контейнера в файле docker-compose.yml (по умолчанию выставлено от 2 до 8 Гб ОЗУ) и запускаем контейнер с clickhouse
docker-compose up -d
7. Переходим на директорию выше, т.е. в директорию resources
cd ..
8. Создаем директории для Redis и переходим в нее
mkdir redis
cd redis/
9. Создаем директории для баз и логов redis
mkdir -p data/{bases,log}
10. Копируем в директорию redis файл docker-compose.yml и директорию с конфигами etc из предоставленного дистрибутива Redis. Запускаем контейнер с Redis
docker-compose up -d
11. Создаем директории для RabbitMQ и переходим в нее
mkdir rabbitmq
cd rabbitmq/
docker-compose up -d
Логин и пароль по умолчанию: fb_rabbit,
изменить можно в файле docker-compose.yml перед запуском контейнера
docker exec -it rabbitmq_1 bash
rabbitmqctl add_vhost fb1
rabbitmqctl list_vhosts
rabbitmqctl set_permissions -p "fb1" "fb_rabbit" ".*" ".*" ".*"
12. Переходим в директорию traefik и копируем в нее файл docker-compose.yml из из предоставленного дистрибутива Traefik
cd ../../traefik
apt install apache2-utils
ВАЖНО! Мы должны экранировать каждый символ “$” в нашем зашифрованном пароле (заменить $ на $$), так как мы используем пароль напрямую в docker-compose.yml
echo $(htpasswd -nb admin Passw0rd) | sed -e s/\\$/\\$\\$/g
admin:$$2y$$05$$iSGcI0SpukDoOZolGkfghIFe31e47F5vewcjlhzhgf0EHo45H.dFyKW
"traefik.http.middlewares.auth.basicauth.users=<USER-PASSWORD-OUTPUT>"
docker network create traefik
docker-compose up -d
ВАЖНО! Для разворачивания проекта необходимо заранее иметь две DNS-записи на IP сервера, где разворачивается проект. Записи нужны для получения сертификатов от Let's Encrypt и шифрования трафика Они включаются в сборку программы для развертывания на конкретном сервере.
Например:
front.example.com
back.example.com
13. Создаем директорию для FastBoard, переходим в нее, копируем docker-compose.yml и образы docker в рабочую директорию проекта
cd ..
mkdir fastboard
cd fastboard
docker load -i fastboard-back.tar
docker load -i fastboard-front.tar
docker-compose up -d
docker-compose logs -f
docker-compose up -d
docker-compose ps
docker logs -f container_name
14. Активация первого ключа
После успешного развертывания нужно войти в API системы под техническим пользователем для активации первого лицензионного ключа. Этот пользователь имеет права администратора и остается в системе.
Входим в API
Переходим по адресу: ваш_бэкенд/docs/swagger, находим блок аутентификации и метод get_token.
Жмем кнопку TRY OUT, вводим учетные данные:
Логин: admin
Пароль: дата первого запуска контейнеров ГГГГ-MM-ДД
Далее нажимаем кнопку EXECUTE
Далее активируем лицензионный ключ
В блоке «Лицензия» находим метод Acivate, жмем кнопку TRY OUT, выбираем файл лицензии и нажимаем кнопку EXECUTE
Система готова к работе
Теперь можно войти спомощью интерфейса и создать пользователей через панель администратора и выдавать им лицензии
Установка системы без SSL (http)
1. Для разворачивания контейнеров создаем директории для баз данных и обратного прокси
mkdir resources
2. Переходим в директорию баз данных и создаем директорию для postgres
cd resources/
mkdir postgres
3. Переходим в директорию postgres, копируем в нее файл docker-compose.yml из предоставленного дистрибутива.
Создаем сеть для контейнеров базами данных и запускаем контейнер с postgres
cd postgres/
docker network create resources
docker-compose up -d
4. Создаем базу данных postgres
C именем fastboard_back. Cоздать можно разными способами, например подключиться к контейнеру при помощи PgAdmin или psql-16
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
apt update
apt install postgresql-client-16
psql -h 127.0.0.1 -U postgres
\l
CREATE DATABASE fastboard_back;
\l
\q
5. Переходим на директорию выше, т.е. в директорию resources
cd ..
mkdir clickhouse
cd clickhouse/
6. Копируем в директорию clickhouse файл docker-compose.yml и директории с конфигами (etc, custom_config) из предоставленного дистрибутива Clickhouse.
Меняем параметры выделенной памяти для контейнера в файле docker-compose.yml (по умолчанию выставлено от 2 до 8 Гб ОЗУ) и запускаем контейнер с clickhouse
docker-compose up -d
7. Переходим на директорию выше, т.е. в директорию resources
cd ..
8. Создаем директории для Redis и переходим в нее
mkdir redis
cd redis/
9. Создаем директории для баз и логов redis
mkdir -p data/{bases,log}
10. Копируем в директорию redis файл docker-compose.yml и директорию с конфигами etc из предоставленного дистрибутива Redis. Запускаем контейнер с Redis
docker-compose up -d
11. Создаем директории для RabbitMQ и переходим в нее
mkdir rabbitmq
cd rabbitmq/
docker-compose up -d
Логин и пароль по умолчанию: fb_rabbit,
изменить можно в файле docker-compose.yml перед запуском контейнера
docker exec -it rabbitmq_1 bash
rabbitmqctl add_vhost fb1
rabbitmqctl list_vhosts
rabbitmqctl set_permissions -p "fb1" "fb_rabbit" ".*" ".*" ".*"
12. Создаем директорию для FastBoard,
Переходим в нее, копируем docker-compose.yml, license_rsa.pub и образы docker из архива fastboard.tar.gz в рабочую директорию проекта
cd ..
mkdir fastboard
cd fastboard
docker load -i fastboard-back.tar
docker load -i fastboard-front.tar
docker-compose up -d
docker-compose logs -f
docker-compose up -d
docker-compose ps
docker logs -f container_name
13. Превый вход в систему и пользователи
После успешного развертывания нужно войти в API системы под техническим пользователем для активации первого лицензионного ключа. Этот пользователь имеет права администратора и остается в системе.
Входим в API
Переходим по адресу: ваш_бэкенд/docs/swagger, находим блок аутентификации и метод get_token.
Жмем кнопку TRY OUT, вводим учетные данные:
Логин: admin
Пароль: дата первого запуска контейнеров ГГГГ-MM-ДД
Далее нажимаем кнопку EXECUTE
Далее активируем лицензионный ключ
В блоке «Лицензия» находим метод Acivate, жмем кнопку TRY OUT, выбираем файл лицензии и нажимаем кнопку EXECUTE
Система готова к работе
Теперь можно войти спомощью интерфейса и создать пользователей через панель администратора и выдавать им лицензии
Обновление системы
1. Скачиваем архив с новой сборкой по ссылке (предоставляется отдельно)
2. Распаковываем
3. Заливаем на сервер новые образы докер
4. На сервере из директории с образами выполняем:docker load -i fastboard-back.tar
docker load -i fastboard-front.tar
5. На сервере из деректории фастборда выполняем docker-compose up -d
Технологический стек
React JS
Фронтенд-библиотека используемая для разработки интерфейса ПО
Node JS
Основной фреймворк на котором построен бэкенд ПО
Echarts JS
Основная библиотека для построения визуализаций
D3 JS
Дополнительная библиотека для построения визуализаций
Click House
Колоночная база данных, используемая для хранения аналитических данных проектов
Postgres
Реляционная база данных, используемая для хранения настроек и служебной информации системы. Файлы настроек проектов, пользователи, потоки, данные источников, действия пользователей, настройки системы и системных событий
SQL
Основной язык запросов используемый для получения данных из источников и агрегаций в визуализациях проекта
Golang
Язык программирования используемый для некоторых преобразований данных
Docker
Платформа используемая для «упаковки» и развертывания ПО
Rabbit MQ
Брокер сообщений, используется для обмена данными между компонентами ПО
Redis
NoSQL база данных, используется для кеширования запросов и хранит эти данные в оперативной памяти (in-memory) для мгновенного доступа