Перемещение приложения-функции в другой регион Azure
В этой статье описывается перемещение приложения-функции, размещенного Функции Azure, в другой регион Azure.
Существуют различные причины, по которым может потребоваться переместить существующие ресурсы Azure из одного региона в другой. Возможно, вам потребуется:
- Воспользуйтесь новым регионом Azure.
- Развертывание функций или служб, доступных только в определенных регионах.
- Отвечайте требованиям к внутренней политике и управлению.
- Согласование слияний и приобретений компании
- Отвечайте требованиям к планированию емкости.
Ресурсы Azure, в которых размещено приложение-функция, зависят от региона и не могут перемещаться по регионам. Вместо этого необходимо создать копию существующих ресурсов приложения-функции в целевом регионе, а затем повторно развернуть код функций в новом приложении.
Эти же ресурсы можно переместить в другую группу ресурсов или подписку, пока они остаются в одном регионе. Дополнительные сведения см. в статье "Перемещение Служба приложений ресурсов в новую группу ресурсов или подписку".
Необходимые компоненты
- Убедитесь, что целевой регион поддерживает Функции Azure и любую связанную службу, ресурсы которой необходимо переместить.
- Убедитесь, что у вас есть права на создание ресурсов, необходимых в новом регионе.
Подготовить
Определите все ресурсы приложения-функции, используемые в исходном регионе, который потенциально включает:
- Приложение-функция
- План размещения
- Слоты развертывания
- Личные домены, приобретенные в Azure
- TLS/SSL-сертификаты и параметры
- Настройка параметров сетевого подключения
- Управляемые удостоверения
- Настроенные параметры приложения
- Конфигурации масштабирования
При подготовке к перемещению приложения в новый регион существует несколько частей архитектуры, для которых требуется особое внимание и планирование.
Имя приложения-функции
Имена приложений-функций должны быть глобально уникальными во всех приложениях Azure. Это означает, что новое приложение-функция не может иметь то же имя и URL-адрес, что и исходный. Это даже верно при использовании пользовательского DNS, так как базовый <APP_NAME>.azurewebsites.net
элемент должен быть уникальным. Может потребоваться обновить все клиенты, которые подключаются к конечным точкам HTTP в приложении-функции. Эти клиенты должны использовать новый URL-адрес при выполнении запросов.
Исходный код
В идеале исходный код хранится в репозитории кода определенного типа или в репозитории контейнеров, если выполняется в контейнере Linux. Если вы используете непрерывное развертывание, запланируйте переключить подключение к репозиторию или развертыванию контейнеров с новым адресом приложения-функции. Если, по какой-то причине, у вас больше нет исходного кода, можно скачать текущий пакет из исходного приложения-функции. Рекомендуется хранить исходные файлы в репозитории кода и использовать непрерывное развертывание для обновлений.
Учетная запись хранения по умолчанию
Для узла функций требуется учетная запись служба хранилища Azure. Дополнительные сведения см. в разделе Требования к учетной записи хранения. Для повышения производительности приложение-функция должна использовать учетную запись хранения в том же регионе. При создании приложения с новой учетной записью хранения в новом регионе приложение получает новый набор ключей доступа к функциям, а состояние всех триггеров (таких как триггеры таймера) сбрасывается.
Сохраненное локальное хранилище
Выполнение функций предназначено для без отслеживания состояния. Однако мы не препятствуем записи данных в локальную файловую систему. Данные, созданные и используемые приложением, можно хранить на виртуальном %HOME%\site
диске, но эти данные не должны быть связанными с состоянием. Если в вашем сценарии требуется поддерживать состояние между выполнением функций, рекомендуется вместо этого использовать Устойчивые функции.
Если приложение сохраняет данные в общем пути к хранилищу приложения, убедитесь, что вы планируете управлять этим состоянием во время перемещения ресурсов. Помните, что для приложений плана выделенных (Служба приложений) общий доступ является частью сайта. Для планов потребления и уровня "Премиум" общая папка по умолчанию представляет собой Файлы Azure общий ресурс в учетной записи хранения по умолчанию. Приложения, работающие в Linux, могут использовать явно подключенную общую папку для сохраняемого хранилища.
Подключенные службы
Функции могут подключаться к службам Azure и другим ресурсам с помощью пакета SDK службы или триггеров и привязок. Любая подключенная служба может негативно повлиять на работу приложения в новый регион. Если задержка или все проблемы возникают, рассмотрите возможность перемещения любой подключенной службы в новый регион. Сведения о том, как перемещать эти ресурсы в разных регионах, см. в документации по соответствующим службам. При перемещении приложения с подключенными службами может потребоваться рассмотреть стратегию аварийного восстановления между регионами и непрерывности бизнес-процессов во время перемещения.
Изменения подключенных служб могут потребовать обновления значений, хранящихся в параметрах приложения, которые используются для подключения к этим службам.
Настройка
Вы можете записать моментальный снимок существующих параметров приложения и строка подключения из портал Azure. Разверните переменные среды параметров, выберите "Дополнительно изменить" в разделе "Параметры> приложения" или "Строки подключений" и сохраните выходные данные JSON, содержащие существующие параметры или подключения. Необходимо повторно создать эти параметры в новом регионе, но сами значения, скорее всего, изменятся в результате последующих изменений региона в подключенных службах.
Существующие ссылки Key Vault нельзя экспортировать по географической границе Azure. Необходимо повторно создать все необходимые ссылки в новом регионе.
Конфигурация приложения может управляться Конфигурация приложений Azure или из другой центральной (нижней) зависимости базы данных. Просмотрите любые Конфигурация приложений хранилища или аналогичные хранилища для параметров среды и региона, которые могут потребовать изменения.
Личные домены
Если приложение-функция использует личный домен, привязывает его к целевому приложению. Проверьте и включите домен в целевом приложении. После перемещения необходимо переназначить доменное имя.
Виртуальные сети
Функции Azure позволяет интегрировать приложения с ресурсами виртуальной сети и даже запускать их в виртуальной сети. Дополнительные сведения см. в статье Возможности работы с сетью в Функциях Azure. При переходе в новый регион необходимо сначала переместить или повторно создать все необходимые ресурсы виртуальной сети и подсети перед развертыванием приложения. Это включает перемещение или повторное восстановление частных конечных точек и конечных точек службы.
Удостоверения
Необходимо повторно создать все назначенные системой управляемые удостоверения вместе с приложением в новом целевом регионе. Как правило, автоматически созданное приложение идентификатора Microsoft Entra, используемое EasyAuth, по умолчанию используется для имени ресурса приложения.
Управляемые удостоверения, назначаемые пользователем, также не могут быть перемещены по регионам. Чтобы сохранить назначаемые пользователем управляемые удостоверения в одной группе ресурсов с приложением, необходимо повторно создать их в новом регионе. Дополнительные сведения см. в статье "Перемещение управляемых удостоверений для ресурсов Azure в другой регион".
Предоставьте управляемым удостоверениям те же разрешения в перенесенных службах, что и исходные удостоверения, которые они заменяют, включая членство в группах.
Сертификаты
Служба приложений ресурсы сертификатов можно переместить в новую группу ресурсов или подписку, но не в разных регионах. Сертификаты, которые можно экспортировать, также можно импортировать в приложение или в Key Vault в новом регионе. Этот процесс экспорта и импорта эквивалентен перемещению между регионами.
Существуют различные типы сертификатов, которые необходимо учитывать при планировании перемещения службы:
Тип сертификата | Доступный для экспорта | Комментарии |
---|---|---|
управляемое Служба приложений | No | Повторно создайте эти сертификаты в новом регионе. |
Управляемый Azure Key Vault | Да | Эти сертификаты можно экспортировать из Key Vault, а затем импортировать в Key Vault в новом регионе. |
Закрытый ключ (самоуправляемый) | Да | Сертификаты, приобретенные за пределами Azure, можно экспортировать из Служба приложений, а затем импортировать в новое приложение или в Key Vault в новом регионе. |
Открытый ключ | No | Ваше приложение может иметь сертификаты только с открытым ключом и без секрета, который используется для доступа к другим защищенным конечным точкам. Получите необходимые файлы сертификатов открытого ключа и импортируйте их в приложение в новом регионе. |
Access keys
Функции используют ключи доступа, чтобы упростить доступ к конечным точкам HTTP в приложении-функции. Эти ключи шифруются в учетной записи хранения по умолчанию. При создании приложения в новом регионе создается новый набор ключей. Необходимо обновить все существующие клиенты, использующие ключи доступа для использования новых ключей в новом регионе. Хотя вы должны использовать новые ключи, можно воссоздать старые ключи в новом приложении. Дополнительные сведения см. в статье "Работа с ключами доступа" в Функции Azure.
Простой
Если минимальное время простоя является обязательным, рассмотрите возможность запуска приложения-функции в обоих регионах, как рекомендуется реализовать архитектуру аварийного восстановления. Определенная архитектура, реализуемая, зависит от типов триггеров в приложении-функции. Дополнительные сведения см. в разделе "Надежность" в Функции Azure.
Устойчивые функции
Расширение Устойчивые функции позволяет определять оркестрации, где состояние сохраняется в выполнении функции с помощью сущностей с отслеживанием состояния. В идеале необходимо разрешить выполнение оркестрации перед переносом приложения Устойчивые функции, особенно при переходе на новую учетную запись хранения в новом регионе. При переносе приложений Устойчивые функции рассмотрите возможность использования одной из этих стратегий аварийного восстановления и геораспространения.
Перемещать
Для повторного создания приложения-функции в новом регионе необходимо сначала воссоздать инфраструктуру Azure плана Служба приложений, экземпляра приложения-функции и связанные ресурсы, такие как виртуальные сети, удостоверения и слоты. Кроме того, необходимо повторно подключиться или повторно создать ресурсы Azure, необходимые приложению. Эти ресурсы могут включать учетную запись служба хранилища Azure по умолчанию и экземпляр Application Insights.
Затем можно упаковать и повторно развернуть фактический исходный код приложения или контейнер в приложение-функцию, работающее в новом регионе.
Повторное создание инфраструктуры Azure
Существует несколько способов создания приложения-функции и связанных ресурсов в Azure в целевом регионе:
- Шаблоны развертывания: если вы первоначально развернули приложение-функцию с помощью файлов инфраструктуры как кода (IaC) (Bicep, шаблонов ARM или Terraform), можно обновить эти предыдущие развертывания, чтобы нацелиться на новый регион и использовать их для повторного создания ресурсов в новом регионе. Если у вас больше нет этих файлов развертывания, вы всегда можете скачать шаблон ARM для существующей группы ресурсов из портал Azure.
- Скрипты Azure CLI/PowerShell. Если вы первоначально развернули приложение-функцию с помощью Azure CLI или скриптов Azure PowerShell, можно обновить эти сценарии, чтобы вместо этого нацелиться на новый регион и снова запустить их. Если у вас больше нет этих скриптов, вы также можете скачать шаблон ARM для существующей группы ресурсов из портал Azure.
- портал Azure. Если вы создали приложение-функцию на портале изначально или не чувствуете себя комфортно с помощью скриптов или файлов IaC, вы можете просто создать все на портале. Обязательно используйте тот же план размещения, языковую среду выполнения и языковую версию, что и исходное приложение.
Проверка настроенных ресурсов
Просмотрите и настройте ресурсы, определенные на предыдущем шаге Подготовка в целевом регионе, если они не были настроены во время развертывания. Если вы используете непрерывное развертывание с проверкой подлинности управляемого удостоверения, убедитесь, что необходимые удостоверения и сопоставления ролей существуют в новом приложении-функции.
Повторное развертывание исходного кода
Теперь, когда у вас есть инфраструктура, вы можете перепаковать и повторно развернуть исходный код в приложении-функции. Это хорошее время для перемещения исходного кода или образа контейнера в репозиторий и включения непрерывного развертывания из этого репозитория.
Вы также можете использовать любой другой метод публикации, поддерживаемый Функциями. Большинство средств публикации требует включения базовой проверки подлинности в конечной точкеscm
, которая не рекомендуется для рабочих приложений.
Рекомендации по перемещению
- Не забудьте проверить конфигурацию и проверить функции в целевом регионе.
- Если у вас настроен личный домен, переназначите доменное имя.
- Для приложения-функции, работающего в выделенном плане (Служба приложений), также просмотрите план миграции Служба приложений при совместном использовании плана с одним или несколькими веб-приложениями.
Очистка
После завершения перемещения удалите приложение-функцию и план размещения из исходного региона. Вы платите за приложения-функции в планах "Премиум" или "Выделенный", даже если само приложение не запущено. Если вы повторно создали другие службы в новом регионе, вы также должны удалить старые службы после того, как вы уверены, что они больше не нужны.
Связанные ресурсы
Просмотрите Центр архитектуры Azure примеры приложений-функций, работающих в нескольких регионах, в рамках более сложных и геоизбыточные архитектуры решений.