Docs

Docs

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

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

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

Назначение

Сервис описывает обеспечение устойчивой работы системы при сбоях и недоступности отдельных компонентов. Включает механизмы платформы 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, количество воркеров, мониторинг процессов.

Основные сценарии / процессов

Обеспечение устойчивости воркеров и планировщика

  1. Запускать воркеры под управлением systemd или supervisor с автоперезапуском при падении.
  2. Запускать планировщик (bench schedule или аналог) отдельно; мониторить его работу и перезапускать при сбое.
  3. Использовать несколько воркеров для очередей short и default для распределения нагрузки и снижения последствий падения одного процесса.
  4. Логи воркеров и планировщика писать в файлы или централизованное логирование для оперативного анализа сбоев.

Резервное копирование и восстановление

  1. Настроить регулярные бэкапы: база данных (mysqldump или встроенная команда bench backup) и каталоги сайта (sites/*/private, public).
  2. Хранить бэкапы вне сервера приложения и тестировать восстановление по регламенту.
  3. При использовании Dinext использовать встроенные возможности бэкапов по документации приложения.
  4. Документировать процедуру восстановления и сроки RTO/RPO по политике компании.

Администрирование через Dinext

  1. Установить Dinext при необходимости; использовать для просмотра списка сайтов, перезапуска сервисов, создания бэкапов (в соответствии с возможностями приложения).
  2. Ограничить доступ к Dinext только администраторам; не раскрывать интерфейс публично.
  3. Сочетать с ручными командами bench при необходимости (миграции, обновления приложений).

Правила и ограничения

  • Отказоустойчивость на уровне приложения (очереди, воркеры) не заменяет отказоустойчивость БД и инфраструктуры (репликация, кластеризация). Для высоких требований к доступности планируйте отказоустойчивость СУБД и веб-сервера отдельно.
  • Задания в очереди при перезапуске Redis (если используется) могут теряться в зависимости от конфигурации Redis; учитывайте при выборе брокера очередей.
  • Регулярно проверяйте работоспособность воркеров и планировщика (health check, мониторинг).

Результаты / отчетность

  • Стабильная работа фоновых заданий и планировщика при перезапусках процессов.
  • Регулярные бэкапы и успешные тесты восстановления.
  • Журналы и алерты мониторинга для оперативного реагирования на сбои.

Типовые вопросы и ошибки (FAQ)

Задания накапливаются в очереди и не обрабатываются

Проверьте, что воркеры запущены для соответствующих очередей (bench worker --queue default и т.д.). Проверьте логи воркеров на ошибки (падение при выполнении одного и того же задания). При необходимости увеличьте количество воркеров или оптимизируйте время выполнения заданий.

Где хранятся бэкапы bench backup?

По умолчанию в каталоге sites/ARCHIVES или в пути, указанном в конфигурации bench. Проверьте команду bench backup в документации вашей версии и настройте перенос архивов на внешнее хранилище.

Как перезапустить все сервисы bench?

Обычно: bench restart (перезапуск веб-сервера и воркеров, если настроены через bench). Воркеры и планировщик, запущенные через systemd, перезапускаются командами systemctl. При использовании Dinext — через интерфейс приложения по документации.

Связанные темы

Last updated 3 months ago
Was this helpful?
Thanks!