Георепликация в реестре контейнеров Azure

Компании, которым необходимо местное присутствие или выполнять оперативное резервное копирование, запускают службы из нескольких регионов Azure. Мы советуем разместить реестр контейнеров в каждом регионе, в котором запускаются образы, чтобы выполнять операции, аналогичные сетевым, для быстрой и надежной передачи слоев образа. Георепликация позволяет реестру контейнеров Azure работать в качестве отдельного реестра и обслуживать несколько регионов с несколькими региональными реестрами.

Геореплицированный реестр предоставляет следующие преимущества:

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

Примечание

  • Если вам нужно хранить копии образов контейнеров в нескольких реестрах контейнеров Azure, Реестр контейнеров Azure также поддерживает импорт образа. Например, в рабочем процессе DevOps вы можете импортировать образы из реестра разработки в рабочий реестр без необходимости использовать команды Docker.
  • Если вы хотите переместить реестр в другой регион Azure, чтобы не геореплицировать его, см. статью Перемещение реестра контейнеров в другой регион вручную.

Примеры использования

Contoso запускает общедоступный веб-сайт, расположенный в США, Канаде и Европе. Чтобы предоставить этим рынкам локальное и аналогичное сетевому содержимое, Contoso запускает Службу Azure Kubernetes (AKS) в западной части США, восточной части США, Центральной Канаде и Западной Европе. Веб-приложение, развернутое в качестве образа Docker, использует тот же код и образ во всех регионах. Содержимое, локальное для этого региона, извлекается из базы данных, которая уникально подготавливается в каждом регионе. Каждое региональное развертывание имеет свою уникальную конфигурацию для ресурсов, например, для локальной базы данных.

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

Принудительная отправка в несколько реестров
Отправка в несколько реестров

Перед использованием функций георепликации Contoso использовал в западной части США реестр, который размещается в США, а также дополнительный реестр в Западной Европе. Для обслуживания этих разных регионов команда разработчиков отправила образы в два разных реестра.

docker push contoso.azurecr.io/public/products/web:1.2
docker push contosowesteu.azurecr.io/public/products/web:1.2

Извлечение из нескольких реестров
Извлечение из нескольких реестров

К типичным сложностям нескольких реестров относятся:

  • Все кластеры восточной части США, западной части США и Центральной Канады извлекаются из реестра в западной части США. При этом взимается дополнительная исходящая плата, так как каждый из этих удаленных узлов контейнера извлекает образ из центров обработки данных в западной части США.
  • Команда разработчиков должна отправлять образы в реестры в западной части США и Западной Европе.
  • Команде разработчиков необходимо настроить и поддерживать каждое региональное развертывание с именами образов, ссылающихся на локальный реестр.
  • Для каждого региона, необходимо настроить доступ к реестру.

Преимущества георепликации

Извлечение из геореплицированного реестра

С помощью функции георепликации реестра контейнеров Azure можно реализовать следующие преимущества:

  • Управление одним реестром во всех регионах: contoso.azurecr.io.
  • Управление единой конфигурацией развертываний образов для всех регионов, так как везде используется один URL-адрес образа: contoso.azurecr.io/public/products/web:1.2.
  • Отправляйте данные в отдельный реестр, а ACR будет автоматически управлять георепликацией. Реестр контейнеров реплицирует только уникальные уровни, уменьшая объем передаваемых между регионами данных;
  • Вы можете настроить региональные веб-перехватчики, чтобы получать уведомления о событиях в определенных репликах.
  • Реестр становится высокодоступным и устойчивым к региональным сбоям.

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

Настройка георепликации

Настроить георепликацию так же просто, как и выбрать регионы на карте. Вы можете управлять георепликацией, используя команды az acr replication в Azure CLI и другие инструменты, а также развернуть реестр с поддержкой георепликации с помощью шаблона Azure Resource Manager.

Функция георепликации доступна для реестров уровня "Премиум". Вы можете изменить уровень "Базовый" или "Стандартный" на "Премиум" (если у вас его еще нет) на портале Azure.

Изменение уровней служб с помощью портала Azure

Чтобы настроить георепликацию для реестра уровня "Премиум", войдите на портал Azure по адресу https://portal.azure.com.

Перейдите к реестру контейнеров Azure и выберите Replications (Репликации).

Репликации в реестре контейнера пользовательского интерфейса на портале Azure

Отобразится карта со всеми текущими регионами Azure:

Карта регионов на портале Azure

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

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

Создание пользовательского интерфейса репликации на портале Azure

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

ACR начинает синхронизацию образов между настроенными репликами. После завершения на портале отобразится состояние Готово. Состояние реплики на портале не обновляется автоматически. Нажмите кнопку "Обновить", чтобы просмотреть обновленное состояние.

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

  • Каждый регион в геореплицированном реестре является независимым после настройки. Соглашения об уровне обслуживания Реестра контейнеров Azure применяются к каждому геореплицированному региону.
  • При отправке образов в геореплицированный реестр или извлечении их из него Диспетчер трафика Azure в фоновом режиме отправляет запрос в реестр, расположенный в ближайшем к вам регионе по характеристикам сетевой задержки.
  • После отправки образа или тега обновления в ближайший регион потребуется некоторое время, чтобы Реестр контейнеров Azure реплицировал манифесты и слои в остальные регионы, которые вы выбрали. Чем больше образ, тем дольше он реплицируется. Образы и теги синхронизируются во всех регионах репликации в соответствии с моделью итоговой согласованности.
  • Для управления рабочими процессами, зависящими от отправки обновлений в геореплицированный реестр, мы рекомендуем настроить веб-перехватчики. Это позволит реагировать на события отправки. Можно настроить региональные веб-перехватчики в геореплицированном реестре, чтобы отслеживать выполнение событий отправки во всех геореплицированных регионах.
  • Чтобы обслуживать большие двоичные объекты, представляющие уровни содержимого, Реестр контейнеров Azure использует конечные точки данных. Вы можете включить выделенные конечные точки данных для реестра в каждом регионе, в который геореплицируется этот реестр. Эти конечные точки позволяют настроить правила доступа брандмауэра со строго ограниченными областями. На период устранения неполадок можно отключить маршрутизацию к репликации, сохраняя уже реплицированные данные.
  • Если настроить для реестра приватный канал с частными конечными точками в виртуальной сети, то по умолчанию будут включены выделенные конечные точки данных в каждом регионе для георепликации.

Рекомендации по обеспечению высокого уровня доступности

  • Для обеспечения высокого уровня доступности и устойчивости рекомендуется создать реестр в регионе, который поддерживает включение избыточности между зонами. Также рекомендуется включить избыточность между зонами в каждом регионе реплики.
  • Если происходит сбой в домашнем регионе реестра (регион, в котором он был создан) или в одном из его регионов реплики, геореплицированный реестр остается доступным для операций в плоскости данных, например отправки или извлечения образов контейнеров.
  • Если домашний регион реестра становиться недоступным, вы не сможете выполнять операции управления реестром, а также настраивать правила сети, включать зоны доступности и управлять репликами.
  • Для планирования высокого уровня доступности геореплицированного реестра, зашифрованного с помощьюключа, управляемого клиентом, который хранится в хранилище ключей Azure, ознакомьтесь с руководством по отработке отказа и избыточности хранилища ключей.

Удаление реплики

Настроив реплику для реестра, вы сможете удалить ее в любое время, когда надобность в ней отпадет. Реплику можно удалить на портале Azure или с помощью других средств, например команды az acr replication delete в Azure CLI.

Чтобы удалить реплику на портале Azure, сделайте следующее:

  1. Перейдите к службе "Реестр контейнеров Azure" и выберите Репликации.
  2. Выберите имя реплики и щелкните Удалить. Подтвердите удаление реплики.

Чтобы с помощью Azure CLI удалить реплику реестра myregistry в регионе "Восточная часть США", сделайте следующее:

az acr replication delete --name eastus --registry myregistry

Расходы, связанные с георепликацией

Георепликация — это функция уровня служб "Премиум" в службе "Реестр контейнеров Azure". При репликации реестра в необходимые регионы с вас взимается плата за реестры уровня "Премиум" для каждого региона.

В предыдущем примере Contoso объединил два реестра в один, добавив реплики в восточную часть США, Центральную Канаду и Западную Европу. Contoso будет платить за уровень "Премиум" четыре раза в месяц. Для этого не нужна дополнительная настройка и управление. Теперь каждый регион извлекает свои образы локально, повышая производительность и надежность, без дополнительной исходящей платы за сеть начиная от западной части США и заканчивая Канадой и восточной частью США.

Устранение неполадок с операциями отправки с использованием геореплицированных реестров

Клиент DOCKER, который передает образ в геореплицированный реестр, может отправить все слои образа и его манифест не в один реплицированный регион. Это может произойти из-за того, что диспетчер трафика Azure направляет запросы к реестру в ближайший к сети реплицированный реестр. Если вблизи реестра находятся два региона репликации, то слои образа и манифест могут быть распределены между ними, а операция отправки завершится ошибкой при проверке манифеста. Эта проблема возникает из-за того, что DNS-имя реестра разрешается на некоторых узлах Linux. Эта проблема не возникает в Windows, где предоставляется кэш DNS на стороне клиента.

В случае возникновения этой проблемы одним из решений является применение кэша DNS на стороне клиента, например dnsmasq на узле Linux. Это гарантирует согласованное разрешение имени реестра. Если вы используете виртуальную машину Linux в Azure для отправки в реестр, ознакомьтесь со статьей Параметры разрешения DNS-имен для виртуальных машин Linux в Azure.

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

Временное отключение маршрутизации к репликации

Если вам потребуется устранять неполадки с реестром, для которого применяется георепликация, иногда полезно временно отключить в Диспетчере трафика маршрутизацию для одной или нескольких репликаций. Начиная с Azure CLI версии 2.8 можно настроить параметр --region-endpoint-enabled (предварительная версия) при создании или обновлении реплицированного региона. Если для параметра репликации --region-endpoint-enabled задано значение false, Диспетчер трафика прекратит перенаправление запросов Docker на отправку и вытягивание в соответствующий регион. По умолчанию маршрутизация включена для всех репликаций, а синхронизация данных между всеми репликациями выполняется независимо от наличия маршрутизации.

Чтобы отключить маршрутизацию к существующей репликации, сначала выполните команду az acr replication list, чтобы получить список репликаций в реестре. Затем выполните команду AZ запись контроля доступа Update и задайте для конкретной репликации. Например, чтобы изменить параметр для репликации в регион westus в реестре myregistry, сделайте следующее:

# Show names of existing replications
az acr replication list --registry --output table

# Disable routing to replication
az acr replication update --name westus \
  --registry myregistry --resource-group MyResourceGroup \
  --region-endpoint-enabled false

Чтобы восстановить маршрутизацию репликации, выполните:

az acr replication update --name westus \
  --registry myregistry --resource-group MyResourceGroup \
  --region-endpoint-enabled true

Дальнейшие действия

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