Перейти к основному содержимому

Отказоустойчивость

Можно организовать высокий уровень отказоустойчивости коробочной версии 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)​

  1. Установить и настроить GeeseFS. Подробная инструкция описана здесь
  2. Примонтировать GeeseFS в директорию user-data. Для автоматического монтирования при старте системы добавьте задачу в планировщик задач (Task Scheduler) или создайте скрипт запуска. Пример команды монтирования (C:\yougile\user-data при необходимости изменить на свой путь):
geesefs <имя_бакета> C:\yougile\user-data
  1. 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 = "<секретный_ключ>"