Перенос рабочих нагрузок Linux и PostgreSQL

Завершено

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

В этом уроке вы узнаете, как сделать следующие переходы с помощью полного набора элементов управления безопасностью и удостоверениями, которые предоставляет Azure:

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

Вы также изучите преимущества управления ресурсами в облаке с точки зрения затрат и производительности. И вы узнаете, как точно вычислять затраты до и после развертывания и управлять ими, а также как оптимизировать производительность как с точки зрения вычислений, так и с точки зрения данных.

Рабочая нагрузка и данные

Наша рабочая нагрузка — это приложение, написанное в Go и работающее с данными в PostgreSQL. Наши данные — это открытый набор данных, который позволяет изучать возможности платформы Postgres и связанных расширений.

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

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

Каково значение миграции этой рабочей нагрузки?

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

Безопасность и соответствие требованиям

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

Виртуальные машины в Azure получают широкий спектр функций безопасности и соответствия требованиям, включая брандмауэры, виртуальные сети, JIT-доступ к виртуальным машинам, шифрование, управление доступом на основе ролей (RBAC) и конфиденциальные вычисления. База данных Azure для PostgreSQL поддерживает множество аналогичных функций, таких как шифрование с помощью ключей, управляемых клиентом, сертификатов соответствия требованиям и поддержки Microsoft Defender для облака.

Безопасность подключений между виртуальными машинами и базами данных

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

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

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

Доступ к высокопроизводительной и экономичной вычислительной среде в нескольких регионах

Требуется ли экономичное вычисление для разработки или тестирования или последнего, высокого уровня производительности или крупнейших типов вычислений, доступных в облаке, Azure имеет широкий выбор вариантов вычислений как для виртуальных машин, так и для База данных Azure для PostgreSQL. Вы можете увеличить и уменьшить масштаб этих параметров по мере необходимости, и они доступны в более чем 60 регионах в Azure.

Вы можете масштабировать вычисления как по вертикали, так и по горизонтали, включая реплики баз данных и распределенные параметры , такие как Azure Cosmos DB для PostgreSQL. Azure Cosmos DB for PostgreSQL — это управляемая служба для PostgreSQL, дополненная сверхмощными возможностями распределенных таблиц Citus с открытым кодом. Эти вычисления связаны с некоторыми из самых быстрых вариантов облачного хранилища для настройки требований к вычислительным ресурсам и хранилищу для рабочей нагрузки.

Управление затратами и эффективность затрат

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

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

Клиенты также могут воспользоваться преимуществами Преимущество гибридного использования Azure, чтобы сэкономить на расходах на лицензирование для конкретных дистрибутивов Linux. Дополнительные сведения см. в статье Преимущество гибридного использования Azure виртуальных машин Red Hat Enterprise Linux (RHEL) и SUSE Linux Enterprise Server (SLES).

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

Операции дня 2

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

Подготовка к работе

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

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

Вы используете пример приложения Azure-Samples /tailwind-traders-go в качестве автономного приложения для переноса кода приложения. Инфраструктура Bicep в виде кода, примеры Postgres и двоичные данные, а также другие ресурсы для поддержки практических частей этого модуля доступны в репозитории GitHub для azure-Samples/linux-postgres-migration .

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

Код приложения

Код приложения следует хранить в системе управления версиями, желательно репозиторий в GitHub.

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

Данные Postgres

Данные Postgres следует хранить в .sql файле, который можно использовать для создания схемы базы данных и вставки данных. В этом имитации миграции используется пример файла tailwind.sqlданных в репозитории Azure-Samples/linux-postgres-migration . Скопируйте файл в Хранилище BLOB-объектов Azure, а затем импортируете его в База данных Azure для PostgreSQL.

Когда приходит время перенести собственные данные, вы экспортируете данные из исходной .sql базы данных и сохраняете их в файл. Затем скопируйте файл в хранилище BLOB-объектов, как описано в этом модуле.

Двоичные файлы

Большинство приложений имеют другие двоичные файлы, такие как файлы мультимедиа, которые необходимо перенести. Для примера приложения вы узнаете, как перенести образы, скопировав их из Azure-Samples/linux-postgres-migration хранилища BLOB-объектов.

Аналогичным образом необходимо скопировать двоичные файлы в хранилище BLOB-объектов при переносе собственной рабочей нагрузки. В этом экземпляре вычислительные ресурсы бессерверны, а приложение имеет разрешение на доступ к двоичным данным непосредственно в хранилище BLOB-объектов.

Инфраструктура как код (Bicep)

Инфраструктура в виде кода для этого модуля также хранится Azure-Samples/linux-postgres-migration. Она предназначена для эталонной архитектуры, которую можно использовать как есть, с минимальными изменениями, если можно внести исходные данные и приложение в соответствие с ранее описанной структурой.

Безопасность является основной темой этой миграции, и мы выбрали определенные параметры безопасности, чтобы упростить выполнение этой части модуля. Например, хранилище BLOB-объектов использует более безопасный, бессерверный метод проверки подлинности, но мы разрешаем сетевые подключения из любого IP-адреса. В рабочей среде необходимо заблокировать сетевой доступ только к IP-адресам, которым требуется доступ к учетной записи хранения.

Аналогичным образом мы оставим возможность добавить правило брандмауэра на сервер PostgreSQL, чтобы разрешить определенный IP-адрес. В рабочей среде можно полностью отключить весь общедоступный доступ к серверу.

Различия между исходными средами и Azure

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

  • Управляемые удостоверения используются для виртуальных машин и База данных Azure для PostgreSQL.
  • Идентификатор Microsoft Entra используется для проверки подлинности в базе данных.
  • Вы используете идентификатор Microsoft Entra, а не ключи Secure Shell (SSH) для доступа к виртуальным машинам.

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

Локально вы можете использовать имя пользователя и пароль для проверки подлинности в базе данных. В Azure мы продемонстрируем, как использовать управляемое удостоверение виртуальной машины для проверки подлинности в базе данных. Этот метод проверки подлинности является более безопасным и снижает риск скомпрометированных учетных данных.

Для использования управляемого удостоверения для проверки подлинности часто требуются изменения кода в приложении. В этом модуле показано, как использовать azidentity библиотеку в Go, чтобы получить маркер для управляемого удостоверения. Одна и та же библиотека доступна в пакетах SDK Майкрософт.

Создание учетной записи Azure и установка Azure CLI

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

Чтобы выполнить команды в следующих уроках, необходимо получить доступ к оболочке Bash. Эта оболочка может находиться в любой из следующих областей:

  • На локальном компьютере. Например, используйте macOS, Linux, подсистема Windows для Linux (WSL) или Docker.
  • На виртуальной машине. Например, используйте Multipass или Azure.
  • В облаке. Например, используйте Azure Cloud Shell или GitHub Codespaces.

Чтобы завершить этот модуль, вам потребуется Azure CLI. Вы можете установить Azure CLI на локальном компьютере, следуя инструкциям в статье "Установка Azure CLI ". Также необходимо установить Git.

Ресурсы