Отказоустойчивость
Можно организовать высокий уровень отказоустойчивости коробочной версии YouGile. Для этого необходимо выполнить следующий набор рекомендаций.
Настройка доступной памяти
По умолчанию сервис YouGile использует только ограниченный объём доступной памяти на машине
(приблизительно 1 Гб). Чтобы YouGile использовал бо́льшее количество памяти, доступное
на машине, необходимо запускать приложение с переменной окружения NODE_OPTIONS=--max-old-space-size=<память в Мб>
(при использовании WinSW добавить переменную в файл сервиса yougile.xml),
либо задать эту переменную в переменных окружения пользователя,
под которым запускается YouGile.
Количество памяти должно вычисляться из расчёта: вся память, доступная на машине, минус 300 Мб.
Пример файла yougile.xml для WinSW:
<service>
<id>yougile</id>
<name>YouGile</name>
<description>YouGile App</description>
<env name="NODE_OPTIONS" value="--max-old-space-size=5000" />
<executable>%BASE%\server.exe</executable>
</service>
Бэкапы
Необходимо убедиться, что резервное копирование удовлетворяет требованиям по отказоустойчивости:
- должно быть настроено инкрементальное резервное копирование папок
user-data/иdatabase/с регулярностью 10 мин (или лучше 5 мин, если время инкрементального копирования меньше 1 минуты) - помимо наиболее свежей версии должны быть также доступны точки восстановления 1 час назад, 3 часа назад, 1 день назад, 2 и 3 дня назад (можно больше точек восстановления)
- резервное копирование не должно создавать существенной нагрузки на машине (диск, память, процессор, сеть)
- бэкап должен храниться на другой хост-машине (лучше если в другом датацентре)
- бэкап должен быть доступен для быстрого восстановления.
Алертирование
Чтобы можно было следить за доступностью YouGile для пользователей и реагировать
на сбои (переключать на резервную машину), необходимо реализовать событийный мониторинг по доступности YouGile — http-запрос к адресу /data/check должен выдавать status 200. По этому алерту можно судить о доступности системы. Нужно сделать, чтобы по срабатыванию этого алерта происходило аварийное реагирование (ответственные сотрудники должны получать уведомление, например sms, звонок или сообщение в telegram).
Необходимо также сделать событийное алертирование по использованию памяти — оно должно срабатывать, если на машине осталось менее 1 Гб памяти. Это событие указывает на необходимость увеличения количества памяти на машине, даже если затем ситуация исправляется и потребление памяти приходит в норму. Для увеличения памяти создаётся новая машина, для которой отдельно запрашивается лицензионный ключ в поддержке (или используется специальный ключ с поддержкой нескольких машин) и после проверки работоспособности машины, производится переключение и удаление старой машины.
Логирование
Настроить систему логирования для исследования возможных проблем. Необходимо убедиться, что системные логи и логи YouGile сохраняются после перезагрузки машины. Настроить политику ротации этих логов (например, оставлять логи только за последние 30 дней — в зависимости от количества доступного места на диске).
Количественный мониторинг
Убедиться, что есть количественный мониторинг на основной и резервной машине YouGile и на соответствующих хост-машинах. Раз в неделю необходимо проверять потребление ресурсов системой (процессор, память, диск, сеть) и, при необходимости, планировать увеличение ресурсов, либо обращаться за консультацией в поддержку YouGile.
Подключение S3 для хранения файлов
Общая информация
- В YouGile загружаемые пользователями файлы хранятся в директории user-data
- Поддерживаемые инструменты
- geeseFS (работает лучше для яндекс облака)
- s3fs-fuse
Реализация (на примере использования GeeseFS)
- Установить и настроить GeeseFS. Подробная инструкция описана здесь
- Примонтировать GeeseFS в директорию user-data. Для автоматического монтирования при старте системы добавьте задачу в планировщик задач (Task Scheduler) или создайте скрипт запуска. Пример команды монтирования (
C:\yougile\user-dataпри необходимости изменить на свой путь):
geesefs <имя_бакета> C:\yougile\user-data
- GeeseFS использует статический ключ доступа к Object Storage. Он задаётся несколькими способами:
- с помощью файла credentials, который нужно поместить в директорию
%USERPROFILE%\.aws\:
[default]
aws_access_key_id=<идентификатор_ключа>
aws_secret_access_key=<секретный_ключ>
- Если файл с ключом находится в другом месте, передайте путь к нему в параметре --shared-config при монтировании бакета:
geesefs `
--shared-config <путь_к_файлу_с_ключом> `
<имя_бакета> <точка_монтирования>
- С помощью переменных окружения:
$env:AWS_ACCESS_KEY_ID = "<идентификатор_ключа>"
$env:AWS_SECRET_ACCESS_KEY = "<секретный_ключ>"