Eng

Examus

база знаний

поделись своим мнением и помоги нам стать лучше!

Подготовка к установке

Получение авторизационного токена

Прежде чем начать установку, вам потребуется авторизационный токен. Он состоит из имени и значения. Введите эти данные на начальном этапе установки, когда система запросит их. Авторизационный токен вам должны предоставить с данным установочным дистрибутивом представители компании Examus.

Установка в Docker контейнерах
Весь проект предполагает запуск в Docker контейнерах. Структура контейнеров зависит от выбранного типа работы системы.

Выбор конфигурации

Базовый вариант:

Предусматривает запуск всех компонентов на одном сервере с производительностью не менее 8 ядер и 15 гигабайт оперативной памяти. Данная конфигурация позволяет проводить тестирование одновременно до 100 студентов. Для хранения одной записи сдачи экзамена длительностью 1 час потребуется примерно 310 Мб места на сервере.

Продвинутый вариант:

Предусматривает запуск всех компонентов на разных серверах, сгруппированных по производительности. Основной сервер - набор компонентов, отвечающих за обработку трафика, фронтенд и бекенд, сервер хранилища данных - набор компонентов, отвечающих за хранение данных, сервер обработки видео - функция обработки и сохранения видеозаписей экзаменов. Базовые параметры всех серверов должны быть не менее 4 ядер и 8 гигабайт оперативной памяти, такая конфигурация позволяет производить тестирование до 300 студентов одновременно.


Схема размещения и взаимодействия сервисов приложения:


.


Расчет мощности

Для примерного расчета требуемой мощности представляем следующую таблицу:

Пользователей онлайн

Вариант установки

Основной сервер

Сервер хранилища данных

Сервер обработки видео

2 (тестовый)

Базовый

4 CPU \ 8GB RAM \ 50 HDD

-

-

100 (стандартный)

Базовый

8 CPU \ 16GB RAM \ 250 SSD

-

-

300 (повышенный)

Продвинутый

4 CPU \ 8GB RAM \ 100 SSD

4 CPU \ 8GB RAM \ 500 SSD

4 CPU \ 8GB RAM \ 50 SSD

1000 (производительный)

Продвинутый

8 CPU \ 16GB RAM \ 200 SSD

8 CPU \ 16GB RAM \ 1tb SSD

8 CPU \ 16GB RAM \ 100 SSD

2000 (максимальный)

Продвинутый

16 CPU \ 32GB RAM \ 200 SSD

16 CPU \ 32GB RAM \ 1tb SSD

16 CPU \ 16GB RAM \ 100 SSD


Узлы системы и нагруженность

Размещение на одном сервере

Основной сервер может выступать в качестве единственного сервера в системе при выборе базовой версии установки. В этом случае все компоненты будут запущены на нем. Самые высоконагруженные компоненты: postgresql db, s3minio, video-worker, web backend. В момент массового проведения экзаменов одновременную нагрузку выполняет web backend + postgresql + s3minio. После окончания экзаменов студентов запускается команда для video-worker для обработки и сжатия видео. Если студенты сдают экзамены одновременно (например, начали в 9:00 утра и в 10:00 закончили), то нагрузка будет с 9:00 до 10:00 равномерно высокая на компоненты web backend + postgresql + minio. А начиная с 10:00 будет максимальный пик нагрузки на video-worker до окончания обработки всех видео. Если же сдача экзаменов равномерно распределена по шкале времени, то и нагрузка будет равномерно распределяться по времени, когда все компоненты системы работают одновременно. Это стоит учитывать при планировании сдачи экзаменов и расчете нагрузки на систему.

Схема расположения сервисов внутри сервера:

Размещение на нескольких серверах:

При продвинутом варианте установки на основном сервере располагается группа сервисов web backend, балансировщик трафика, frontend dashboard, student web portal. На сервере хранилища данных располагается postgresql, s3minio. На сервере обработки видео располагается video-worker. Нагрузка распределяется в таком же виде как и в базовой установке, но уже между тремя серверами в сети. Серверы в такой конфигурации должны находиться в одном ДЦ или серверной стойке! Так же критичным местом становится доступ в интернет и сетевая связанность между серверами. На пике нагрузки в 2000 пользователей онлайн сетевая нагрузка достигает пиков в 1гб\с и является уязвимым местом системы. Запускать такую конфигурацию на более узких каналах интернет или сети категорически не рекомендуется. Пользователи будут получать частые ошибки о потере связи. Так же уязвимым местом является дисковая подсистема, если не обеспечить хорошую производительность i\o операций, то так же пользователи будут получать ошибки. Оптимален запуск высоконагруженных конфигураций в облачных ДЦ, на магистральных каналах 1гб\с и больше и дисковой подсистеме NVME 10,000iops и выше.

При установке продвинутого варианта коробки можно воспользоваться дополнительно параметрами ограничения памяти и процессов внутри контейнеров.

Для контейнеров доступны параметры :

  • mem_limit: 1610612736 # 1.5Gi (максимальное потребление оперативной памяти контейнера)
  • processes 4 или concurrency 2 (максимальное количество процессов внутри контейнера)


Схема расположения сервисов внутри серверов: