Отказоустойчивость
Назначение
Сервис описывает обеспечение устойчивой работы системы при сбоях и недоступности отдельных компонентов. Включает механизмы платформы Dinext (очереди, фоновые задачи, планировщик), администрирование bench и сайтов , а также рекомендации по развертыванию и мониторингу.
Цели и задачи
- Обеспечивать продолжение работы при сбое одного воркера или временной недоступности внешнего сервиса.
- Использовать очереди заданий и воркеры для асинхронной обработки и распределения нагрузки.
- Планировать резервное копирование и восстановление сайта и данных.
- Администрировать несколько сайтов и процессы bench через Dinext при установке.
- Снижать риск потери данных и длительного простоя за счет архитектуры и процедур.
Для кого
- Администраторы серверов и Dinext.
- Разработчики при проектировании фоновых задач и интеграций.
- Руководители ИТ при планировании SLA и восстановления.
Основные понятия
- Очередь заданий — буфер задач (short, default, long); при падении воркера задания остаются в очереди и обрабатываются после перезапуска воркера.
- Воркер — процесс bench worker; рекомендуется несколько воркеров или мониторинг и автоперезапуск (systemd/supervisor).
- Планировщик (scheduler) — отдельный процесс для периодических задач; при падении пропущенные запуски не восстанавливаются автоматически — важна мониторинг и перезапуск.
- Dinext — приложение для администрирования bench, сайтов, бэкапов (README).
- Резервное копирование — регулярные бэкапы базы и файлов (sites, private/files) по регламенту.
Основные сущности / объекты
- background_jobs.py, scheduler.py .
- Dinext (README).
- Конфигурация: common_site_config.json, количество воркеров, мониторинг процессов.
Основные сценарии / процессов
Обеспечение устойчивости воркеров и планировщика
- Запускать воркеры под управлением systemd или supervisor с автоперезапуском при падении.
- Запускать планировщик (bench schedule или аналог) отдельно; мониторить его работу и перезапускать при сбое.
- Использовать несколько воркеров для очередей short и default для распределения нагрузки и снижения последствий падения одного процесса.
- Логи воркеров и планировщика писать в файлы или централизованное логирование для оперативного анализа сбоев.
Резервное копирование и восстановление
- Настроить регулярные бэкапы: база данных (mysqldump или встроенная команда bench backup) и каталоги сайта (sites/*/private, public).
- Хранить бэкапы вне сервера приложения и тестировать восстановление по регламенту.
- При использовании Dinext использовать встроенные возможности бэкапов по документации приложения.
- Документировать процедуру восстановления и сроки RTO/RPO по политике компании.
Администрирование через Dinext
- Установить Dinext при необходимости; использовать для просмотра списка сайтов, перезапуска сервисов, создания бэкапов (в соответствии с возможностями приложения).
- Ограничить доступ к Dinext только администраторам; не раскрывать интерфейс публично.
- Сочетать с ручными командами bench при необходимости (миграции, обновления приложений).
Правила и ограничения
- Отказоустойчивость на уровне приложения (очереди, воркеры) не заменяет отказоустойчивость БД и инфраструктуры (репликация, кластеризация). Для высоких требований к доступности планируйте отказоустойчивость СУБД и веб-сервера отдельно.
- Задания в очереди при перезапуске Redis (если используется) могут теряться в зависимости от конфигурации Redis; учитывайте при выборе брокера очередей.
- Регулярно проверяйте работоспособность воркеров и планировщика (health check, мониторинг).
Результаты / отчетность
- Стабильная работа фоновых заданий и планировщика при перезапусках процессов.
- Регулярные бэкапы и успешные тесты восстановления.
- Журналы и алерты мониторинга для оперативного реагирования на сбои.
Типовые вопросы и ошибки (FAQ)
Задания накапливаются в очереди и не обрабатываются
Проверьте, что воркеры запущены для соответствующих очередей (bench worker --queue default и т.д.). Проверьте логи воркеров на ошибки (падение при выполнении одного и того же задания). При необходимости увеличьте количество воркеров или оптимизируйте время выполнения заданий.
Где хранятся бэкапы bench backup?
По умолчанию в каталоге sites/ARCHIVES или в пути, указанном в конфигурации bench. Проверьте команду bench backup в документации вашей версии и настройте перенос архивов на внешнее хранилище.
Как перезапустить все сервисы bench?
Обычно: bench restart (перезапуск веб-сервера и воркеров, если настроены через bench). Воркеры и планировщик, запущенные через systemd, перезапускаются командами systemctl. При использовании Dinext — через интерфейс приложения по документации.