Ответ
Катастрофоустойчивость (Disaster Recovery, DR) обеспечивается комплексом мер для восстановления работы системы после крупного сбоя. Основные подходы:
1. Стратегия репликации и размещения:
- Multi-AZ (Availability Zone) развёртывание: Компоненты (БД, инстансы приложений) размещаются в разных физических дата-центрах внутри одного региона для отказоустойчивости.
- Cross-Region репликация: Критичные данные асинхронно реплицируются в другой географический регион (например, из
eu-west-1вus-east-1). Используется для AWS RDS, S3, DynamoDB Global Tables.
2. Резервное копирование (Backup) и восстановление:
- Автоматические снепшоты (snapshots) БД и файловых систем.
- Регулярное тестирование процедуры восстановления для проверки RPO (Recovery Point Objective) и RTO (Recovery Time Objective).
3. Отказоустойчивые кластеры:
- Базы данных: PostgreSQL/MySQL в кластерной конфигурации с автоматическим failover (Patroni, Galera).
- Брокеры сообщений: Apache Kafka с репликацией партиций на брокеры в разных AZ (фактор репликации min. 3).
Пример настройки источника данных в Spring для работы с Multi-AZ кластером:
@Bean
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
// Подключение к endpoint кластера, который управляет failover
config.setJdbcUrl("jdbc:postgresql://my-cluster.cluster-xyz.eu-west-1.rds.amazonaws.com/db");
config.setConnectionTimeout(30000); // Увеличенный таймаут на случай переключения AZ
config.setMaximumPoolSize(20);
return new HikariDataSource(config);
}
Тестирование: Регулярно проводятся DR-дриллы — имитация отключения региона или AZ для проверки процедур восстановления и соблюдения SLA (например, RTO < 15 минут).