Высокий уровень доступности в кэше роли Azure

Важно!

Корпорация Майкрософт рекомендует все новые разработки использовать кэш Redis для Azure. Текущая документация и рекомендации по выбору предложения кэша Azure см. в статье о том, какое предложение кэша Azure подходит для меня?

In-Role Кэш позволяет поддерживать высокий уровень доступности для кэшированных объектов. Используйте свойства роли Azure, чтобы обеспечить высокий уровень доступности для каждого кэша, требующего этой функции. Изменять код не требуется. Необходимо только пересчитать требуемый объем памяти для рабочей нагрузки. Для этого следует выбрать параметр "Высокий уровень доступности" в таблице планирования емкости. Дополнительные сведения см. в статье "Рекомендации по планированию емкости" для кэша In-Role Azure.

Кэшированные объекты при использовании высокого уровня доступности реплицируются в той же облачной службе для обеспечения гибкости в случае сбоя аппаратной части. Дополнительные копии также размещаются в разных доменах отказоустойчивости и доменах обновления для повышения доступности. Если одна из виртуальных машин в кластере перестает работать, кластер может использовать дополнительные копии, чтобы избежать потери данных.

Architecture

Для высокой доступности требуется несколько экземпляров соответствующей роли. Вторая копия кэшированного элемента обслуживается в отдельном экземпляре, который принадлежит к другим доменам сбоя и обновления. Таким образом, если один экземпляр перестанет работать, в другом экземпляре имеется резервная копия. В такой ситуации дополнительная копия становится основной копией. Затем для поддержки высокой доступности в одном из оставшихся экземпляров создается новая дополнительная копия.

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

Примечание

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

Рекомендации

Роль, в которую размещается In-Role cache, должна быть настроена для запуска по крайней мере на четырех экземплярах. Высокую доступность можно включить в узлах, настроенных для двух или трех работающих экземпляров, но это не рекомендуется по следующим причинам.

  • Azure иногда перезагружает виртуальные машины для планового обслуживания. Обновления приложений на месте также приводят к выключению виртуальных машин. В обоих случаях лучше поддерживать не менее трех серверов в кластере кэша. Если один из них перестанет работать, кластер кэша будет содержать еще два сервера, на которых создаются основные и дополнительные копии кэшированных объектов. При одном работающем сервере кэш остается доступным, но высокая доступность будет невозможна.

  • Хотя ситуация с тремя серверами отвечает предыдущему требованию, рекомендуется использовать четыре сервера. Это помогает более равномерно распределять основные копии по доменам сбоя. Таким образом улучшается распределение данных по кластеру кэша, что в свою очередь оптимизирует сетевой трафик и производительность.

Когда экземпляр становится недоступен, может возникнуть короткий период, когда дополнительные копии преобразуются в основные и происходит обновление сведений о перенаправлении. В течение этого времени клиенты получают исключения DataCacheException с кодом errorCodeRetryLater. In-Role приложения кэша должны использовать обычную логику обработки ошибок и логики повторных попыток, чтобы правильно реагировать на это условие.

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

Важно!

При обеспечении высокой доступности алгоритмом предусмотрено потребление памяти в двойном объеме для каждого кэшированного элемента. Учитывайте эту особенность при планировании загрузки. Дополнительные сведения см. в статье "Рекомендации по планированию емкости" для кэша In-Role Azure.

Включение высокого уровня доступности

  1. Дважды щелкните роль с включенным кэшем In-Role.

  2. На вкладке Конфигурация убедитесь, что Число экземпляров не меньше 4.

  3. На вкладке Кэширование установите флажок Высокий уровень доступности для нужного кэша. На следующем снимке экрана показан включенный Высокий уровень доступности для двух кэшей из трех.

    Caching Backup Copies

См. также:

Основные понятия

Функции кэша роли для кэша Azure