Поделиться через


Настройка активной георепликации для экземпляров Управляемого Redis (предварительная версия) Azure

Из этой статьи вы узнаете, как настроить кэш с активной георепликацией с помощью портала Azure.

Активные группы георепликации до пяти экземпляров Управляемого Redis Azure (предварительная версия) в один кэш, охватывающий регионы Azure. Все экземпляры действуют как локальные первичные кэши. Приложение определяет, какие экземпляры следует использовать для запросов на чтение и запись.

Примечание.

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

Как работает активная георепликация

Активная георепликация использует реплицированные типы данных без конфликтов (CRDTs) для бесшовного распределения данных между экземплярами Redis, которые можно распределять по континентам. Эти экземпляры подключены в конфигурации active-active, где записи в один экземпляр автоматически отражаются в других экземплярах в той же группе георепликации. Эта двунаправленная репликация данных отличается от подходов к однонаправленной активно-пассивной репликации, где данные реплицируются от первичной в геореплику, но не от другого направления. Это мощный инструмент, который часто используется несколькими способами:

  • Предоставление локальной задержки путем распространения кэширования ближе к пользователям. Используя сеть активных геореплицированных экземпляров Redis, вы можете размещать кэши географически ближе к пользователям в каждом регионе, уменьшая задержку и повышая производительность приложения.
  • Синхронизация глобальных приложений. Так как геореплицированные кэши отображаются как один экземпляр Redis, вы можете глобально распределять данные без необходимости сегментировать данные по регионам. Например, можно использовать один отсортированный набор Redis для предоставления игровой таблицы лидеров для всех пользователей по всему миру, а не для отдельного списка лидеров для каждого географического региона.
  • Сокращение простоя и риска от региональных сбоев. Так как каждый экземпляр Redis в группе георепликации постоянно обновляется с помощью последних данных из других экземпляров в группе, данные хорошо сохраняются в случае регионального сбоя. Приложения могут временно переключаться на использование одного из других экземпляров в группе, и когда регион возвращается в режим "в сети", экземпляр Redis будет автоматически загружен с данными из других геореплицированных кэшей.

Более подробную информацию о том, как работает активная георепликация, см. в разделе "Геораспространения Active-Active" (на основе CRDTS)

Область доступности

Уровень Оптимизированная для памяти, балансированная, оптимизированная для вычислений Оптимизировано для флэш-памяти
На месте Да (кроме B0 и B1) Да

Внимание

SKU Balanced B0 и B1 не поддерживают активную георепликацию.

Предварительные требования для активной георепликации

При использовании активной георепликации существует несколько ограничений:

  • Активная георепликация поддерживается только в том случае, если Управляемый Redis Azure находится в конфигурации высокой доступности (т. е. использует репликацию).
  • Поддерживаются только модули RediSearch и RedisJSON
  • На уровне "Оптимизация флэш-памяти" можно использовать только политику вытеснения без вытеснения. Все политики вытеснения поддерживаются на других уровнях.
  • Сохраняемость данных не поддерживается, так как активная георепликация обеспечивает превосходный интерфейс.
  • Все кэши в группе георепликации должны иметь одинаковую конфигурацию. Например, все кэши должны иметь одинаковый номер SKU, емкость, политику вытеснения, политику кластеризации, модули и параметры TLS.
  • Если один экземпляр в группе георепликации масштабируется, другие экземпляры в этой группе должны масштабироваться до того же размера, прежде чем может произойти любое дополнительное масштабирование. Дополнительные сведения см. в разделе "Масштабирование экземпляров" в группе георепликации.
  • Команды Redis FLUSHDB нельзя использовать при использовании активной FLUSHALL георепликации. Запрет команд предотвращает непреднамеренное удаление данных. Используйте вместо этого операцию очистки.

Создание или присоединение группы активной георепликации

  1. При создании нового ресурса Управляемого Redis Azure выберите вкладку "Дополнительно ". Выполните первую часть формы, включая политику кластеризации. Дополнительные сведения о выборе политики кластеризации см. в разделе "Кластеризация" в Управляемом Redis Azure.

  2. Нажмите кнопку Настроить, чтобы настроить активную георепликацию.

    Снимок экрана: дополнительная вкладка страницы создания кэша Redis.

  3. Создайте новую группу репликации для первого экземпляра кэша. Или выберите существующую из списка.

    Снимок экрана: группы репликации.

  4. Нажмите кнопку Настроить, чтобы завершить процесс.

  5. Дождитесь успешного создания первого кэша. После завершения вы увидите Настроено для Активной георепликации. Повторите описанные выше шаги для каждого экземпляра кэша в группе георепликации.

    Снимок экрана: настроенные группы активной георепликации.

Добавление существующего экземпляра в активную группу георепликации

Чтобы добавить существующий экземпляр кэша в активную группу георепликации, можно использовать REST API для выполнения действия принудительной связи.

Все данные в связанном экземпляре кэша будут удалены. Экземпляр также временно недоступен в течение нескольких минут при присоединении к группе георепликации. Поддержка портала и интерфейса командной строки пока недоступна для этой функции.

Удаление из группы активной георепликации

Чтобы удалить экземпляр кэша из группы активной георепликации, просто удалите его. Остальные экземпляры затем автоматически настраиваются.

Активная георепликация — это мощная функция для повышения доступности при использовании Управляемого Redis в Azure. Однако необходимо выполнить действия, чтобы подготовить кэши, если произошел региональный сбой.

Например, рассмотрим следующие советы:

  • Заранее определите, какой другой кэш в группе георепликации переключиться на, если регион исчез.
  • Убедитесь, что брандмауэры установлены таким образом, чтобы все приложения и клиенты могли получить доступ к определенному кэшу резервных копий.
  • Каждый кэш в группе георепликации имеет собственный ключ доступа. Определите, как приложение переключается на разные ключи доступа при выборе кэша резервных копий.
  • Если кэш в группе георепликации исчез, сборка метаданных начинается во всех кэшах в группе георепликации. Метаданные нельзя отменить до тех пор, пока записи не будут синхронизированы со всеми кэшами. Вы можете предотвратить сборку метаданных путем принудительного отмены связывания кэша, который находится вниз. Рассмотрите возможность мониторинга доступной памяти в кэше и отмене связи при нехватке памяти, особенно для рабочих нагрузок с высокой нагрузкой на запись.

Кроме того, можно использовать шаблон разбиения цепи. Используйте шаблон для автоматического перенаправления трафика из кэша сбоем региона и в сторону кэша резервного копирования в той же группе георепликации. Используйте службы Azure, такие как Диспетчер трафика Azure или Azure Load Balancer, чтобы включить перенаправление.

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

Недоступный кэш следует удалить, так как оставшиеся в группе репликации кэши начнут хранить метаданные, которые не поступят в недоступный кэш. В подобном случае доступные кэши в группе репликации могут столкнуться с нехваткой памяти.

  1. Перейдите на портал Azure и выберите в группе репликации один из доступных кэшей.

  2. В меню ресурсов слева выберите Активная георепликация, чтобы просмотреть параметры в рабочей области.

    Снимок экрана: группа активной георепликации.

  3. Выберите кэш, связь с которым требуется принудительно отменить, установив флажок.

  4. Выберите Принудительная отмена связи и нажмите ОК для подтверждения.

    Снимок экрана: отмена связи с группой активной георепликации.

  5. Когда доступность региона восстановится, нужно будет удалить его кэш и повторно создать его, чтобы снова добавить в группу репликации.

Настройка активной георепликации с помощью Azure CLI или PowerShell

Azure CLI

Используйте Azure CLI для создания нового кэша и группы георепликации или добавления нового кэша в существующую группу георепликации. Дополнительные сведения см. в разделе az redisenterprise create.

Создание нового экземпляра Управляемого Redis Azure в новой группе георепликации с помощью Azure CLI

В этом примере создается новый экземпляр Azure Managed Redis Balanced B10 с именем Cache1 в регионе "Восточная часть США". Затем кэш добавляется в новую группу активной георепликации replicationGroup:

az redisenterprise create --location "East US" --cluster-name "Cache1" --sku "Balanced_B10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"

Чтобы правильно настроить активную георепликацию, добавьте идентификатор создаваемого экземпляра кэша с параметром --linked-databases. Идентификатор имеет следующий формат.

/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default

Создание нового экземпляра Управляемого Redis в существующей группе георепликации с помощью Azure CLI

В этом примере создается новый экземпляр кэша Balanced B10 с именем Cache2 в регионе "Западная часть США". Затем скрипт добавляет кэш replicationGroup в активную группу георепликации, созданную в предыдущей процедуре. Таким образом, он связан в конфигурации "активный — активный" с Cache1.

az redisenterprise create --location "West US" --cluster-name "Cache2" --sku "Balanced_B10" --resource-group "myResourceGroup" --group-nickname "replicationGroup" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default" --linked-databases id="/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"

Как и ранее, необходимо перечислить Cache1 и Cache2 с использованием параметра --linked-databases.

Azure PowerShell

PowerShell позволяет создать кэш и группу георепликации или добавить новый кэш в существующую группу георепликации. Дополнительные сведения см. в статье New-AzRedisEnterpriseCache.

Создание нового экземпляра Управляемого Redis Azure в новой группе георепликации с помощью PowerShell

В этом примере создается новый экземпляр кэша Redis Balanced B10 Azure с именем Cache1 в регионе "Восточная часть США". Затем кэш добавляется в новую группу активной георепликации replicationGroup:

New-AzRedisEnterpriseCache -Name "Cache1" -ResourceGroupName "myResourceGroup" -Location "East US" -Sku "Balanced_B10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}'

Чтобы правильно настроить активную георепликацию, добавьте идентификатор создаваемого экземпляра кэша с параметром -LinkedDatabase. Идентификатор имеет следующий формат.

/subscriptions/<your-subscription-ID>/resourceGroups/<your-resource-group-name>/providers/Microsoft.Cache/redisEnterprise/<your-cache-name>/databases/default

Создание нового экземпляра Управляемого Redis в существующей группе георепликации с помощью PowerShell

В этом примере создается новый экземпляр кэша Balanced B10 с именем Cache2 в регионе "Западная часть США". Затем скрипт добавляет кэш в активную группу георепликации,"replicationGroup", созданную в предыдущей процедуре. Результатом является два кэша, Cache1 и Cache2, связаны в конфигурации active-active.

New-AzRedisEnterpriseCache -Name "Cache2" -ResourceGroupName "myResourceGroup" -Location "West US" -Sku "Balanced_B10" -GroupNickname "replicationGroup" -LinkedDatabase '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache1/databases/default"}', '{id:"/subscriptions/34b6ecbd-ab5c-4768-b0b8-bf587aba80f6/resourceGroups/myResourceGroup/providers/Microsoft.Cache/redisEnterprise/Cache2/databases/default"}'

Как и ранее, необходимо перечислить Cache1 и Cache2 с использованием параметра -LinkedDatabase.

Масштабирование экземпляров в группе георепликации

Можно масштабировать экземпляры, настроенные для использования активной георепликации. Однако группа георепликации с сочетанием различных размеров кэша может привести к проблемам. Чтобы предотвратить возникновение этих проблем, все кэши в группе георепликации должны иметь одинаковый размер и уровень производительности.

Так как масштабирование требует изменения размера или уровня, и одновременно масштабировать все экземпляры в группе георепликации, Управляемый Redis Azure имеет механизм блокировки. При масштабировании одного экземпляра в группе георепликации базовая виртуальная машина будет масштабирована, но доступная память будет ограничена исходным размером, пока другие экземпляры не будут масштабироваться. И все другие операции масштабирования для оставшихся экземпляров блокируются до тех пор, пока они не соответствуют той же конфигурации, что и первый кэш для масштабирования.

Пример масштабирования

Например, у вас может быть три экземпляра в группе георепликации, все экземпляры, оптимизированные для памяти M10:

Имя экземпляра Redis00 Redis01 Redis02
Тип Оптимизированная для памяти память M10 Оптимизированная для памяти память M10 Оптимизированная для памяти память M10

Предположим, вы хотите увеличить масштаб каждого экземпляра в этой группе георепликации до экземпляра X20, оптимизированного для вычислений. Сначала вы масштабируете один из кэшей до X20:

Имя экземпляра Redis00 Redis01 Redis02
Тип Оптимизированный для вычислений X20 Оптимизированная для памяти память M10 Оптимизированная для памяти память M10

На этом этапе Redis01 экземпляры могут Redis02 масштабировать только экземпляр, оптимизированный для вычислений X20. Все остальные операции масштабирования блокируются.

Примечание.

Экземпляр Redis00 не блокируется для дальнейшего масштабирования в данный момент. Но он будет заблокирован один раз Redis01 или Redis02 масштабируется, чтобы быть оптимизированным для вычислений X20.

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

Имя экземпляра Redis00 Redis01 Redis02
Тип Оптимизированный для вычислений X20 Оптимизированный для вычислений X20 Оптимизированный для вычислений X20

Операция очистки

Из-за непреднамеренной потери данных нельзя использовать FLUSHALL команды Redis FLUSHDB с любым экземпляром кэша, находящимся в группе георепликации. Вместо этого нажмите кнопку Flush Cache(s), расположенную в верхней части рабочей области активной георепликации .

Снимок экрана: активная георепликация, выбранная в меню

Очистка кэшей с помощью Azure CLI или PowerShell

Azure CLI и PowerShell также можно использовать для активации операции очистки. Дополнительные сведения об использовании Azure CLI см. в статье az redisenterprise database flush. Дополнительные сведения об использовании PowerShell см. в разделе Invoke-AzRedisEnterpriseCacheDatabaseFlush.

Внимание

Будьте осторожны при использовании функции кэшей Flush. При выборе кнопки удаляются все данные из текущего кэша и из всех связанных кэшей в группе георепликации.

Управление доступом к функции с помощью управления доступом на основе ролей Azure. Доступ к очистке всех кэшей должен быть предоставлен только авторизованным пользователям.

Следующие шаги