Перейти к содержанию

Кластер Comindware Platform. Восстановление после аварий

Экспериментальная функция

Представленная здесь функция находится на стадии разработки. См. «Поддержка экспериментальных функций».

Введение

Comindware Platform поддерживает кластерные конфигурации, которые обеспечивают высокую доступность, отказоустойчивость и горизонтальное масштабирование.

Здесь представлены рекомендации и процедуры восстановления ПО Comindware Platform в кластерных конфигурациях после сбоев.

Средства, обеспечивающие надежность и восстановление кластеров

Кластерная архитектура Comindware Platform позволяет восстанавливать систему благодаря следующим средствам:

  • проверка здоровья узлов: все узлы предоставляют эндпоинт api/health для мониторинга состояния;
  • автоматическое перераспределение трафика: балансировщик нагрузки должен автоматически исключать неисправные узлы;
  • резервные узлы: кластеры Apache Ignite, OpenSearch (Elasticsearch) и Apache Kafka обеспечивают избыточность во время восстановления;
  • распределённое хранилище: DFS обеспечивает сохранность и целостность резервных копий и файлов для всех узлов.

Стратегические принципы обеспечения надёжности системы

Подготовка к авариям

Чтобы оперативно восстанавливать систему в аварийных ситуациях, рекомендуется реализовать следующие меры:

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

Стратегия резервного копирования

Многоуровневый подход к резервному копированию

Современные системы требуют многоуровневого подхода к резервному копированию, где каждый уровень решает свои задачи.

Различные периоды хранения данных (от 1 часа до 1 месяца) для каждого уровня позволяют сбалансировать требования к надёжности и стоимости хранения резервных копий:

  • Полные резервные копии всей системы (еженедельно для продуктивных систем, ежемесячно для тестовых) — обеспечивают точку восстановления для критических ситуаций.
  • Инкрементальные копии (ежедневно для всех систем) — минимизируют потерю данных при некритических сбоях.
  • Копии базы данных Comindware Platform (каждые 4–12 часов в зависимости от критичности) — обеспечивают быстрое восстановление конфигурации и данных экземпляра ПО в непредвиденных обстоятельствах.

Кроме того, следует применять различные подходы к резервному копированию в зависимости от контура, в котором эксплуатируется экземпляр системы.

Подходы к резервному копированию по контурам

Ниже представлен пример параметров резервного копирования, которые следует адаптировать к особенностям вашей конкретной системы и бизнес-требованиям.

  • Продуктивный контур
    • Полные копии: еженедельно (воскресенье), хранить 1 месяц.
    • Инкрементальные копии: ежедневно (00:00–03:00), хранить последние 15 копий.
    • Копии базы данных: не реже 1 раза в 4 часа, хранить не менее одного дня.
    • Автоматизация: VEEAM для полных и инкрементальных копий, платформа Comindware Platform для платформенных копий.
  • Предпродуктивный контур
    • Полные копии: ежемесячно, хранить 1 месяц.
    • Инкрементальные копии: ежедневно (00:00–03:00), хранить последние 15 копий.
    • Копии базы данных: каждые 12 часов, хранить последние 6 копий.
  • Тестовый контур
    • Полные копии: ежемесячно, хранение 1 месяц.
    • Инкрементальные копии: ежедневно (00:00–03:00), хранить последние 15 копий.
    • Копии базы данных: каждые 8 часов, хранить последние 4 копии.

Тестирование процедур восстановления

Для обеспечения готовности к возможным авариям необходимо регулярно тестировать возможность восстановления системы.

Регулярное тестирование помогает:

  • выявить проблемы в процедурах восстановления до того, как ими придётся воспользоваться;
  • обучить команду порядку действий в нештатных ситуациях;
  • проверить актуальность резервных копий;
  • оценить время восстановления (RTO) и потенциальные потери данных (RPO).

Следует тестировать следующие сценарии восстановления:

  • восстановление одного узла — наиболее вероятный сценарий, требуется тестировать регулярно;
  • полное восстановление кластера — критический сценарий, следует тестировать реже, но тщательно;
  • восстановление в нетипичных условиях — тестирует устойчивость установленных процедур к непредвиденным обстоятельствам, необязательно, но рекомендуется.

См. Рекомендации по восстановлению кластера.

Мониторинг состояния системы

В любой конфигурации необходимо обеспечить непрерывный мониторинг работоспособности Comindware Platform в целом и каждого компонента в отдельности.

Эффективный мониторинг помогает:

  • предотвратить сбои до их возникновения;
  • оперативно диагностировать проблемы;
  • оценивать эффективность восстановительных процедур.

Следует предусмотреть следующие средства мониторинга:

  • автоматические уведомления о критических событиях;
  • регулярные проверки состояния компонентов;
  • журнал инцидентов;
  • Мониторинг резервного копирования.

Рекомендации по восстановлению кластера

Фактические пути и имена файлов

При выполнении инструкций будьте внимательны: указывайте фактические имена файлов и пути, которые используются в вашей системе.

Такие имена указаны в угловых скобках, например:

  • <instanceName> — имя экземпляра ПО;
  • <node-ip> — IP-адрес узла.

См. «Пути и содержимое директорий экземпляра ПО».

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

При восстановлении кластера Comindware Platform соблюдайте рекомендованный порядок:

  1. Диагностика проблемы — определите причину сбоя и масштаб повреждений:

    • Проверьте состояние узла с помощью эндпоинта api/health, на работающих узлах он должен возвращать статус 200.
    • Проверьте журналы состояния экземпляра Comindware Platform (heartbeat_*.log).
    • Проверьте журналы Apache Ignite (igniteClient_*.log).
    • Проверьте состояние файловой системы.
    • Проверьте доступность сетевых ресурсов.
    • Проверьте состояние и топологию кластера Apache Ignite со всех узлов.
  2. Запланируйте восстановление:

    • Выберите подходящую стратегию восстановления: восстановление одного узла или полное восстановление кластера.
    • Подготовьте план действий и необходимые ресурсы.
  3. Выполните восстановление: следуйте процедурам для выбранной стратегии. См. Сценарии и порядок восстановления.

  4. Контролируйте работоспособность кластера в процессе и после восстановления:

    • Отслеживайте состояние всех компонентов и сервисов.
    • Контролируйте состояние и топологию кластера Apache Ignite.
    • Анализируйте файловые журналы на предмет наличия ошибок и предупреждений, которые могут помешать восстановлению.
    • Замеряйте производительность системы.
    • Будьте готовы к немедленному откату при необходимости.

Мониторинг во время восстановления

В процессе восстановления кластера необходимо контролировать состояние кластера в целом и отдельных компонентов:

  • постоянно контролируйте эндпоинт api/health, на работающих узлах он должен возвращать статус 200;
  • анализируйте журналы состояния Comindware Platform (heartbeat_*.log);
  • контролируйте журнал Apache Ignite (igniteClient_*.log);
  • контролируйте состояние топологии кластера Apache Ignite со всех узлов во время восстановления;
  • контролируйте распределение нагрузки между узлами;
  • контролируйте синхронизацию данных между узлами.

Проверка после восстановления

  • Дождитесь сообщения об окончании ребалансировки кластера в журнале Apache Ignite (igniteClient_*.log):

    INFO Skipping rebalancing (nothing scheduled) 
  • Проверьте результирующую топологию Apache Ignite с нескольких узлов.

Критичность компонентов

При планировании, конфигурировании и восстановлении системы следует учитывать значение каждого компонента для работоспособности системы:

  • критичные компоненты: узлы Comindware Platform, Apache Ignite, Apache Kafka, файловое хранилище — нарушение работоспособности может вывести систему из строя;
  • важные компоненты: OpenSearch (Elasticsearch) — нарушение работоспособности не выводит систему из строя;
  • вспомогательные компоненты: мониторинг, дополнительные сервисы — не влияют на состояние системы.

Сценарии и порядок восстановления

Полное восстановление кластера

Полное восстановление накладывает следующие ограничения:

  • требуется полная остановка кластера, система временно утрачивает работоспособность;
  • выполняется восстановление конфигурации и данных всех узлов из резервной копии;
  • кластер снова запускается в полном составе;
  • выполняется синхронизация данных между узлами, что занимает некоторое время;
  • производится последовательный запуск узлов с реконфигурацией кластера.

При отказе всех узлов кластера восстанавливайте его в указанном ниже порядке:

  1. Остановите все службы на каждом узле кластера в следующем порядке: NGINX → API Gateway → Comindware Platform → Apache Ignite.
  2. Восстановите из резервной копии данные и конфигурацию Comindware Platform и служб на одном или нескольких узлах.
  3. Настройте ссылки на общие файлы (например, директорию Scripts), расположенные в файловом хранилище.
  4. Проверьте файлы конфигурации на всех узлах:

    • /usr/share/comindware/configs/instance/<instanceName>.yml
    • /var/www/<instanceName>/adapterhost.yml
    • /var/www/<instanceName>/apigateway.yml
    • /var/www/<instanceName>/ignite.config
  5. Запустите все службы на каждом узле кластера в следующем порядке: Apache Ignite → Comindware Platform → API Gateway → NGINX.

  6. Включите узлы в топологию кластера.
  7. Проверьте синхронизацию данных между узлами: дождитесь сообщения об окончании ребалансировки в файле igniteClient_*.log Apache Ignite:

    INFO Skipping rebalancing (nothing scheduled) 
  8. Активируйте кластер.

  9. Проверьте подключение каждого узла к сервисам Apache Kafka и OpenSearch (Elasticsearch).
  10. Проверьте работоспособность кластера:

    • убедитесь, что все узлы возвращают статус 200 на эндпоинте api/health;
    • проверьте время отклика всех узлов;
    • протестируйте балансировку нагрузки.
  11. Выполните проверку целостности данных и работоспособности системы в целом.

Восстановление одного узла кластера

Восстановление одного узла накладывает следующие ограничения:

  • не требуется полная остановка кластера, узел временно выводится из состава кластера;
  • выполняется восстановление конфигурации и данных узла из резервной по необходимости;
  • выполняется возврат узла в состав кластера;
  • выполняется синхронизация данных с другими узлами, что занимает некоторое время.

При отказе одного узла восстановление можно выполнить без остановки кластера в указанном ниже порядке:

  1. Остановите все службы на узле в следующем порядке: API Gateway → Comindware Platform → Apache Ignite.
  2. Очистите локальную базу данных узла.
  3. Настройте ссылки на общие файлы (например, директорию Scripts), расположенные в файловом хранилище.
  4. Проверьте файлы конфигурации на всех узлах:

    • /usr/share/comindware/configs/instance/<instanceName>.yml
    • /var/www/<instanceName>/adapterhost.yml
    • /var/www/<instanceName>/apigateway.yml
    • /var/www/<instanceName>/ignite.config
  5. Запустите все службы на узле в следующем порядке: Apache Ignite → Comindware Platform → API Gateway.

  6. Выполните реконфигурацию кластера для подключения узла.
  7. Проверьте синхронизацию данных с остальными узлами: дождитесь сообщения об окончании ребалансировки в файле igniteClient_*.log Apache Ignite:

    INFO Skipping rebalancing (nothing scheduled) 
  8. Проверьте подключение каждого узла к сервисам Apache Kafka, OpenSearch (Elasticsearch).

  9. Проверьте работоспособность кластера:

    • убедитесь, что все узлы возвращают статус 200 на эндпоинте api/health;
    • проверьте время отклика всех узлов;
    • протестируйте балансировку нагрузки.
  10. Выполните проверку целостности данных и работоспособности системы в целом.

Полезные приёмы

Проверка топологии кластера

  1. Проверьте подключение к Apache Ignite. Для этого выполните на восстановленном и соседнем узлах команду:

    bash /usr/share/ignite/bin/control.sh --baseline 
  2. Удостоверьтесь, что топологии совпадают на всех узлах.

Проверка ребалансировки кластера

Удостоверьтесь, что в файле igniteClient_*.log Apache Ignite имеется сообщение об окончании ребалансировки:

``` 
INFO Skipping rebalancing (nothing scheduled)
```

Блокировка запуска Comindware Platform до сборки кластера

В случае полного восстановления кластера следует заблокировать возможность запуска Comindware Platform до тех пор, пока кластер не будет собран после восстановления.

  1. Создайте файл hold.lock в директории базы данных. Этот файл служит для блокировки передачи запросов из веб-интерфейса Comindware Platform в БД Apache Ignite до завершения ребалансировки узлов.
  2. Удалите файл hold.lock, чтобы снова активировать кластер.

Проверка статуса узла Comindware Platform

  1. Убедитесь, что эндпоинт api/health возвращает статус 200. Проверяйте регулярно, например каждые 30 секунд.
  2. Проверьте время отклика (не должно превышать 5 секунд).
  3. Проанализируйте журналы на предмет ошибок.
  4. Проверьте синхронизацию данных между узлами.

Проверка статуса OpenSearch (Elasticsearch)

  • Используйте эндпоинт /_cluster/health для проверки состояния.
  • Проверяйте состояние индексов и их репликации.
  • Отслеживайте производительность поисковых запросов.

Проверка статуса Apache Kafka

  • Контролируйте состояние топиков и партиций.
  • Отслеживайте задержки обработки сообщений.
  • Контролируйте размер очередей сообщений.

Устранение неполадок

Типовые проблемы при восстановлении

  • Узел не подключается к кластеру Apache Ignite: проверьте сетевое соединение между узлами, конфигурацию Apache Ignite, сетевой экран и сетевые настройки.
  • Ошибки синхронизации данных: проверьте доступность NFS-сервера, права доступа к файлам, состояние дискового пространства, конфигурацию монтирования в /etc/fstab.
  • Проблемы с балансировщиком нагрузки: проверьте конфигурацию балансировщика, доступность эндпоинта api/health, настройки проверки состояния узлов.
  • Проблемы с NFS-монтированием: проверьте доступность NFS-сервера, настройки в /etc/fstab, права доступа к общим директориям.

Журналы для диагностики

В процессе диагностики состояния системы используйте следующие журналы:

  • Основные журналы Comindware Platform:
    • heartbeat_*.log — состояние экземпляра и процесс запуска
    • igniteClient_*.log — подключение к Apache Ignite и ребалансировка кластера
  • Журналы инфраструктуры:
    • Журналы Apache Ignite — состояние кластера хранилища данных.
    • Журналы OpenSearch (Elasticsearch) — состояние кластера журналирования транзакций.
    • Журналы Apache Kafka — состояние очередей сообщений.

Инструменты диагностики

В процессе диагностики состояния системы используйте следующие инструменты:

  • Проверка состояния узлов:

    curl -X GET "http://<node-ip>/api/health" 
  • Проверка Apache Ignite:

    bash /usr/share/ignite/bin/control.sh --baseline 
  • Проверка OpenSearch (Elasticsearch):

    curl -X GET "localhost:9200/_cluster/health?pretty" 
  • Проверка Apache Kafka:

    kafka-topics.sh --bootstrap-server localhost:9092 --list 

Практики, которых следует избегать

  • Не игнорируйте резервное копирование: нерегулярное или неправильное резервное копирование данных может осложнить восстановление системы после сбоя.
  • Не пропускайте тестирование восстановления: невыполнение регулярного тестирования процедур восстановления может привести к неготовности к авариям.
  • Не восстанавливайте несколько узлов одновременно: одновременное восстановление нескольких узлов может привести к конфликтам данных.
  • Не игнорируйте реконфигурацию кластера: после восстановления каждого узла необходимо синхронизировать данные в кластере.
  • Не нарушайте порядок остановки и запуска служб: неправильный порядок может привести к повреждению данных или неработоспособности кластера.
  • Не игнорируйте проверки целостности: всегда проверяйте целостность данных после восстановления.
К началу