Масштабирование шардов в кластерном режиме
Архитектура Redis Cluster предоставляет горизонтальную масштабируемость за счет распределения данных по нескольким шарам. По мере изменения требований к нагрузке может потребоваться корректировка количества шаров для оптимизации производительности, использования ресурсов и распределения данных. Этот документ описывает технические аспекты, требования к ресурсам и рекомендации по реализации операций масштабирования шардов.
Содержание
Предварительные требования
Перед изменением конфигурации шардов в Redis Cluster убедитесь, что выполнены следующие условия:
- Операционный статус: кластер должен находиться в стабильном состоянии
Работающийс корректно функционирующими всеми узлами. - Доступность ресурсов: в кластере должно быть достаточно памяти для перераспределения данных в процессе масштабирования.
- Окно технического обслуживания: планируйте операции масштабирования в периоды низкой загрузки, чтобы минимизировать возможное влияние на сервис.
- Пропускная способность сети: проверьте достаточную пропускную способность сети между узлами Redis для поддержания эффективной миграции данных.
- Стабильность инфраструктуры: убедитесь, что базовая инфраструктура стабильна, чтобы избежать сбоев узлов во время операции масштабирования, что может компрометировать целостность данных.
Требования к ресурсам
Правильное планирование ресурсов является критически важным для успешных операций масштабирования шардов. Важно понимать следующие концепции, связанные с памятью:
Операции увеличения масштаба
При увеличении количества шаров каждый экземпляр должен удовлетворять следующему условию:
Эта формула обеспечивает успешное добавление шардов в сценариях сбалансированного распределения данных. В средах с несбалансированными данными или присутствием BigKeys требуется дополнительное планирование емкости, так как модели миграции данных могут сосредоточивать нагрузку на конкретных шарах.
Операции уменьшения масштаба
При уменьшении количества шаров каждый оставшийся экземпляр должен удовлетворять следующему условию:
Эта формула учитывает перераспределение данных из выведенных из эксплуатации шардов. В отличие от операций увеличения масштаба, процессы уменьшения масштаба накладывают строгие требования к ресурсам для учета возможных сценариев концентрации данных даже при несбалансированном распределении данных.
Процедура
Масштабирование шардов контролируется через поле spec.replicas.cluster.shard в пользовательском ресурсе Redis (см. документацию API для подробных спецификаций параметров).
Чтобы следить за ходом операции масштабирования:
После отправки изменения конфигурации шардов система переводит экземпляр в состояние Балансировка данных и самостоятельно управляет процессом миграции слотов. Находясь в этом состоянии, все изменения экземпляра, кроме удаления, ограничены.
Подключение клиентов во время масштабирования
Во время перераспределения шардов миграция слотов Redis влияет на обработку клиентских запросов следующим образом:
-
Когда клиент запрашивает доступ к ключу в слоте, отмеченном для миграции:
- Если ключ уже мигрировал на целевой шард, Redis возвращает ошибку перенаправления
MOVED - Если ключ еще не мигрировал, он будет обработан исходным shard
- Если ключ уже мигрировал на целевой шард, Redis возвращает ошибку перенаправления
-
Клиенты, осведомленные о Redis Cluster, автоматически обрабатывают эти ошибки перенаправления, повторно отправляя запрос на соответствующий шард.
Рекомендация по производительности: Масштабирование шардов в период высокой нагрузки может удвоить фактический объем клиентских запросов из-за перенаправлений, потенциально создавая сетевую перегрузку. По возможности планируйте операции масштабирования в периоды снижения активности.
Длительность операции
Время, необходимое для завершения операций масштабирования шардов, зависит от нескольких факторов:
- Общий объем данных, подлежащих перераспределению
- Пропускная способность сети между узлами
- Спецификации ресурсов экземпляра
- Наличие BigKeys, требующих миграции
- Интенсивность текущей нагрузки
Как правило, операции масштабирования шардов занимают от 20 минут до нескольких часов. Более крупные наборы данных и более сложные схемы миграции увеличивают это время.