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


Подготовка геореплицированного реестра контейнеров Azure

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

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

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

Примечание.

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

Необходимые компоненты

  • Пользователю требуются следующие разрешения (на уровне реестра) для создания и удаления репликаций:

    Разрешение Description
    Microsoft.ContainerRegistry/registries/write Создание репликации
    Microsoft.ContainerRegistry/registries/replications/write Удаление репликации

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

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

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

Отправка в несколько реестров
Отправка в несколько реестров

Перед использованием функций георепликации 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

Чтобы настроить георепликацию для реестра Premium, войдите в портал Azure.

Перейдите к реестру контейнеров 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 acr replication update и задайте значение --region-endpoint-enabled false для конкретной репликации. Например, чтобы изменить параметр для репликации в регион 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

Создание репликации для реестра с поддержкой частной конечной точки

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

Выполните следующие действия, если при создании репликации реестра зависли в состоянии подготовки:

  • Вручную удалите репликацию, которая зависла в состоянии подготовки.
  • Microsoft.Network/privateEndpoints/privateLinkServiceProxies/write Добавьте разрешение для удостоверения пользователя.
  • Повторно создайте запрос репликации реестра.

Эта проверка разрешений применима только к реестрам с включенной частной конечной точкой.

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

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