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

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

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