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

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

Можно организовать высокий уровень отказоустойчивости коробочной версии YouGile. Для этого необходимо выполнить следующий набор рекомендаций.

Настройка доступной памяти

По умолчанию сервис YouGile использует только ограниченных объём доступной памяти на машине (приблизительно 1Гб). Чтобы YouGile использовал бОльшее количество памяти, доступное на машине, необходимо запускать приложение с переменной окружения NODE_OPTIONS=--max-old-space-size=<память в Мб> (при использовании systemd, поменять поле Environment в файл сервиса systemd), либо задать эту переменную в переменных окружения пользователя, под которым запускается YouGile. Количество памяти должно вычисляться из расчёта: вся память доступная на машине минус 300Мб. Пример файла yougile.service для systemd:

[Unit]
Description=yougile

[Service]
WorkingDirectory=/opt/yougile
ExecStart=/opt/yougile/server
Environment="NODE_OPTIONS=--max-old-space-size=5000"
LimitNOFILE=500000
LimitNPROC=500000

[Install]
WantedBy=multi-user.target

Бэкапы

Необходимо убедиться, что резервное копирование удовлетворяет требованиям по отказоустойчивости:

  • должно быть настроено инкрементальное резервное копирование папок user-data/ и database/ с регулярностью 10 мин (или лучше 5 мин если время инкрементального копирования меньше 1 минуты)
  • помимо наиболее свежей версии должны быть также доступны точки восстановления 1 час назад, 3 часа назад, 1 день назад, 2 и 3 дня назад (можно больше точек восстановления)
  • резервное копирование не должно создавать существенной нагрузки на машине (диск, память, процессор, сеть)
  • бэкап должен храниться на другой хост-машине (лучше если в другом датацентре)
  • бэкап должен быть доступен для быстрого восстановления.

Резервная машина

Для возможности быстрого восстановления работы YouGile при сбое, необходимо настроить резервную машину с YouGile:

  • установить на резервную машину лицензию (запросить в поддержке ключ для новой машины, либо запросить специальный ключ с поддержкой нескольких машин)
  • проверить работоспособность резервной машины (зайдя в аккаунт в браузере на резервной машине)
  • настроить переключение на аварийный режим по нажатию одной кнопки (выполнению одной команды / запроса).

При переключении в аварийный режим (если основная машина с YouGile доступна, необходимо остановить сервис, после этого выполнить обновление бэкапа). Последний бэкап развернуть на резервной машине и запустить сервис. Публичный ip основной машины должен быть передан резервной машине (использовать DNS для переключения нельзя).

Для переключения в аварийный режим можно настроить автоматику, но переключать обратно в штатный режим нужно только вручную (решение о переключении обратно в штатный режим может принять ответственный сотрудник после анализа ситуации и проверки работоспособности основной машины).

Алертирование

Чтобы можно было следить за доступностью 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. Для этого нужно добавить строку в /etc/fstab ( /opt/yougile/user-data при необходимости изменить на свой путь)
# /etc/fstab
<имя_бакета> /opt/yougile/user-data fuse.geesefs _netdev,allow_other,--file-mode=0666,--dir-mode=0777 0 0
  1. GeeseFS использует статический ключ доступа к Object Storage. Он задается несколькими способами:
  • помощью файла credentials, который нужно поместить в директорию ~/.aws/:
[default]
aws_access_key_id=<идентификатор_ключа>
aws_secret_access_key=<секретный_ключ>
  • Если файл с ключом находится в другом месте, передайте путь к нему в параметре --shared-config при монтировании бакета:
geesefs \
--shared-config <путь_к_файлу_с_ключом> \
<имя_бакета> <точка_монтирования>
  • С помощью переменных окружения:
export AWS_ACCESS_KEY_ID=<идентификатор_ключа>
export AWS_SECRET_ACCESS_KEY=<секретный_ключ>