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


Перенос приложений WebSphere в Служба Azure Kubernetes (AKS)

В этом руководстве описывается, что следует учитывать при переносе существующей рабочей нагрузки сервера приложений WebSphere (WAS) в IBM WebSphere Liberty или Open Liberty на Служба Azure Kubernetes (AKS).

Подготовка к миграции

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

Убедитесь, что целевой объект является подходящим целевым объектом для усилий по миграции.

Первым шагом в успешной миграции приложения WAS в Azure является выбор наиболее подходящего целевого объекта миграции.

Традиционное работает в Azure Виртуальные машины. Целевой объект виртуальной машины — самый простой выбор, так как он больше всего похож на локальное развертывание. Интерфейс администрирования и развертывания виртуальных машин аналогиен тому, что у вас есть локально.

Другим вариантом является миграция в контейнеры путем преобразования традиционной рабочей нагрузки WAS в контейнеры приложений. Целевой объект контейнера можно запустить в Служба Azure Kubernetes (AKS) и Azure Red Hat OpenShift. Компромисс для этой простоты является экономической стоимостью.

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

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

Если вы можете терпеть преобразование приложения в контейнеры для снижения затрат на среду выполнения, рассмотрите возможность миграции на основе AKS или Azure Red Hat OpenShift.

Для миграции на основе AKS можно начать использование уровня "Бесплатный". Получение бесплатного управления кластерами и оплата только виртуальных машин, связанных с хранилищем и сетевыми ресурсами. В этом случае см. статью "Миграция приложений WebSphere в Служба Azure Kubernetes".

Для миграции на основе Azure Red Hat OpenShift в дополнение к затратам на вычисления и инфраструктуру узлы приложений имеют еще одну стоимость для компонента лицензии OpenShift. Эта плата взимается на основе количества узлов приложения и типа экземпляра. Используйте цены по запросу или зарезервированные экземпляры, независимо от того, что лучше всего соответствует потребностям рабочей нагрузки и бизнеса. В этом случае см. статью "Миграция приложений WebSphere в Azure Red Hat OpenShift".

Инструкции в документации по Azure Red Hat OpenShift охватывают некоторые аспекты, относящиеся к миграции. Полный список руководств см. в документации по Azure Red Hat OpenShift.

Определите, является ли предварительно созданное предложение Azure Marketplace хорошим отправной точкой

После того как вы решили, что AKS является подходящим целевым объектом развертывания, необходимо принять, что оператор IBM WebSphere Liberty или Open Liberty Operator (оператор) является единственным способом запуска Liberty в Kubernetes. После принятия этого факта необходимо решить, является ли предварительно созданное предложение Azure Marketplace хорошим отправным пунктом. Ниже приведены некоторые сведения о предварительно созданном предложении Azure Marketplace:

  • IBM и Корпорация Майкрософт создали это предложение, чтобы быстро подготовить Свободу в AKS. Эта концепция более подробно описана в следующем содержимом.
  • На высоком уровне предложение автоматизирует следующие шаги.
    • При желании создайте существующий образ приложения.
    • При необходимости подготовьте кластер AKS и экземпляр Реестр контейнеров Azure (ACR).
    • Установите и настройте оператор IBM WebSphere Liberty или оператор Open Liberty в AKS.
    • Используйте оператор для выполнения всего действия. Оператор развертывает контейнерные приложения Liberty и управляет ими в AKS. Справочную документацию можно найти в операторе IBM WebSphere Liberty и операторе Open Liberty.

Если вы не используете предварительно созданное предложение Azure Marketplace, необходимо узнать, как напрямую использовать оператор. Мастеринг оператора выходит за рамки этой статьи. Полная документация для оператора доступна в операторе IBM WebSphere Liberty и операторе Open Liberty.

Теперь, когда вы познакомились с различными способами обработки Свободы в AKS, вы можете выбрать, следует ли использовать предварительно созданное предложение Azure Marketplace или сделать это самостоятельно с помощью оператора напрямую.

Определение совместимости версии Liberty

Вам нужен оператор Open Liberty или оператор WebSphere Liberty для развертывания приложений на основе Kubernetes и управления ими. Убедитесь, что существующая версия Liberty является одной из версий, поддерживаемых оператором. Версии Open Liberty поддерживаются в GitHub OpenLiberty/open-liberty. IBM поддерживает версии IBM WebSphere Application Server Liberty. Дополнительные сведения см. в статье WebSphere Application Server Liberty.

Предварительно созданное предложение Azure Marketplace позволяет выбирать образы приложений из общедоступного реестра, поэтому неявно поддерживает все версии.

Определение необходимости лицензии

Для IBM WebSphere Liberty необходимо принять условия лицензионного соглашения, соответствующего версии программы IBM в контейнере приложений. Лицензионное соглашение, применимое к этой программе IBM, см. в разделе "Просмотр сведений о лицензии" оператора WebSphere Liberty. Дополнительные сведения см. в статье "Запуск WebSphere Liberty" в Microsoft Azure.

Если выпуск продукта отличается от используемого по умолчанию сервера приложений IBM WebSphere (базовый), .spec.license.edition value необходимо указать выпуск продукта. Другие доступные значения: IBM WebSphere Application Server Liberty Core и IBM WebSphere Application Server Network Deployment. Предварительно созданное предложение Azure Marketplace позволяет выбрать поддерживаемый выпуск продукта.

Различия в инвентаризации с помощью средств миграции IBM

Чтобы переместить приложения в WebSphere Application Server Liberty или Open Liberty, необходимо спланировать миграцию, проанализировать приложения и обновить исходный код. IBM предоставляет средства миграции для выявления различий между текущей средой и технологиями в новой среде Liberty, например Java EE 7 или Java EE 8, и Java SE 8 или Java SE 11. Дополнительные сведения см. в разделе "Перенос приложений в Свободу".

Проверка емкости сервера

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

Можно изменить размер пулов узлов в AKS. Дополнительные сведения см. в разделе "Изменение размера пулов узлов" в Служба Azure Kubernetes (AKS).

Проверка всех секретов

До появления таких технологических решений "конфигурация как услуга", как Azure Key Vault, понятие "секреты" не было четко определено. Вместо этого предоставлялся разнородный набор параметров конфигурации, которые использовались в качестве того, что сейчас называется секретами. С такими серверами приложений, как WAS, эти секреты находятся во многих разных файлах конфигурации и хранилищах конфигурации. Проверьте все свойства и файлы конфигурации на рабочих серверах на наличие секретов и паролей. Кроме того, в приложении могут быть файлы конфигурации, содержащие пароли или учетные данные. WAS хранит данные конфигурации в нескольких документах в каскадной иерархии каталогов. Большинство документов конфигурации содержат XML-содержимое. Дополнительные сведения см. в разделах "Документы конфигурации" и основные понятия Azure Key Vault.

После получения твердой инвентаризации секретов обратитесь к документации оператора по секретам. Дополнительные сведения см. в следующих статьях:

Проверка всех сертификатов

Определите все сертификаты, используемые для общедоступных конечных точек SSL. Вы можете просмотреть все сертификаты на рабочих серверах, выполнив следующую команду:

keytool -list -v -keystore <path to keystore>

После того как у вас есть твердый список сертификатов, настройте их с помощью следующих статей:

Проверка правильной работы поддерживаемой версии Java

Для использования Liberty требуется определенная версия Java, поэтому необходимо убедиться, что приложение работает правильно, используя эту поддерживаемую версию.

Среда выполнения WebSphere Application Server Liberty имеет определенные требования к минимальному уровню среды выполнения Java (JRE). Дополнительные сведения см. в разделе зависимостей версий Java для функций.

Для open Liberty требуется среда выполнения Java SE. Он может выполняться с помощью дистрибутива Java Runtime Environment (JRE) или пакета средств разработки Java SE (JDK). Дополнительные сведения см. в статье "Поддерживаемые выпуски Java SE".

Проверка ресурсов JNDI

Проверьте все ресурсы JNDI. Например, у источников данных, таких как базы данных, может быть связанное имя JNDI, которое позволяет JPA правильно привязывать экземпляры EntityManager к определенной базе данных. Дополнительные сведения о ресурсах и базах данных JNDI см . в документации IBM по источникам данных WebSphere. Для других ресурсов, связанных с JNDI, таких как брокеры сообщений JMS, может потребоваться выполнить миграцию или перенастройку. Дополнительные сведения о конфигурации JMS см. в разделе "Использование ресурсов JMS".

Если вы используете предварительно созданное предложение Azure Marketplace, набор ресурсов JNDI, которые можно настроить во время развертывания, ограничен тем, что поддерживает предложение. Для WebSphere Liberty в AKS можно сделать объект доступным в пространстве имен Java Naming and Directory Interface (JNDI) по умолчанию. Дополнительные сведения см. в статье "Разработка с использованием пространства имен по умолчанию JNDI" в функции Liberty. Сведения о Open Liberty см. в разделе "Именование Java" и интерфейс каталогов.

Проверка конфигурации профиля

Основной единицей конфигурации в WAS является профиль. Таким образом, файл resources.xml содержит множество конфигураций, которые необходимо тщательно рассмотреть для миграции. Файл содержит ссылки на другие XML-файлы, хранящиеся в подкаталогах. Дополнительные сведения см. в разделе "Управление профилями в распределенных и операционных системах IBM i".

В приложении

Проверьте файл deployment.xml и/или ФАЙЛ WEB-INF/web.xml.

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

Если вы используете ячейку сетевого развертывания webSphere Application Server, каждый член кластера выполняется в установке традиционной версии WAS. Liberty — это упрощенный профиль сервера приложений WebSphere. Это гибкий и динамический профиль WAS, который позволяет серверу WAS развертывать только необходимые пользовательские функции, а не развертывать большой набор доступных компонентов Java EE.

Определение того, используется ли репликация сеансов

Если приложение использует репликацию сеансов, у вас есть следующие параметры:

Для всех этих вариантов рекомендуется понять, как Свобода выполняет репликацию состояния сеанса HTTP. Следующие документы помогут вам понять, как управлять сеансами HTTP в Либерти:

Предварительно созданное предложение Azure Marketplace поддерживает сходство сеансов с помощью контроллера входящего трафика Шлюз приложений. При развертывании предложения выберите "Включить сходство на основе файлов cookie".

Определение источников данных

Если приложение использует какие-либо базы данных, необходимо определить следующие сведения:

  • имя источника данных;
  • конфигурация пула подключений;
  • путь к JAR-файлу драйвера JDBC.

Дополнительные сведения о драйверах JDBC в WAS см. в разделе "Использование драйверов JDBC с сервером приложений WebSphere".

Конфигурация JDBC — это базовая конфигурация сервера в Liberty. Дополнительные сведения см. в разделе JDBC Driver.

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

Определение того, настроено ли значение WAS

Определите, какие из следующих настроек были сделаны.

  • Были ли изменены скрипты запуска? К таким сценариям относятся wsadmin, AdminControl, AdminConfig, AdminApp и AdminTask.
  • Есть ли какие-либо определенные параметры, передаваемые в виртуальную машину Java?
  • Есть ли JAR-файлы, включенные в путь к классу сервера?
  • Используются ли такие средства уровня ОС, как systemd для автоматического запуска компонентов WAS после перезапуска сервера?

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

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

Определение того, нужно ли подключаться к локальной среде

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

Определение того, используются ли очереди или разделы Java Message Service (JMS)

Если приложение использует очереди или разделы JMS, необходимо перенести их на внешний размещенный сервер JMS. Одной из стратегий использования JMS является использование Служебная шина Azure и расширенного протокола очереди сообщений. Дополнительные сведения см. в разделе "Использование службы сообщений Java 1.1" с Служебная шина Azure standard и AMQP 1.0.

Если вы настроили постоянные хранилища JMS, необходимо записать конфигурацию и применить ее после миграции.

Если вы используете IBM MQ, вы можете перенести это программное обеспечение в Azure Виртуальные машины и использовать его как есть.

Корпорация Майкрософт имеет решение для интеграции IBM MQ с Logic Apps. Дополнительные сведения см. в статье "Подключение к серверу IBM MQ" из рабочего процесса в Azure Logic Apps.

Определение того, используются ли настраиваемые общие библиотеки Java EE

Если вы используете общие библиотеки Java EE, у вас есть два варианта:

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

Эти библиотеки можно обрабатывать с помощью таких же методов, как описано в статье Accessing сторонних API из приложения Java EE.

Определение того, используются ли пакеты OSGi

Если вы использовали пакеты OSGi, добавленные в WAS, необходимо добавить эквивалентные JAR-файлы непосредственно в веб-приложение.

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

Определение того, содержит ли приложение код, зависящий от ОС

Если приложение содержит любой код с зависимостями в ос узла, необходимо рефакторинговать его, чтобы удалить эти зависимости. Например, может потребоваться заменить любое использование / или \ в пути к файловой системе или File.Separator Paths.get , если ваше приложение работает в Windows.

Свобода в AKS работает на x86_64 Linux. Любой код, зависящий от ОС, должен быть совместим с Linux. Чтобы узнать, как обнаружить определенные сведения о ОС, выполните действия, описанные в разделе "Определение совместимости версии Liberty".

Определение того, используется ли шина интеграции IBM

Если приложение использует IBM Integration Bus, необходимо записать, как настроена шина интеграции IBM. Дополнительные сведения см . в документации по IBM Integration Bus.

Ibm Integration Bus не поддерживается непосредственно в предварительно созданном предложении Azure Marketplace. Чтобы включить эту функцию, следуйте инструкциям в статье "Включение приложения JMS в Liberty" для подключения к шине интеграции службы в документации IBM.

Определение того, состоит ли приложение из нескольких WAR-файлов

Если приложение состоит из нескольких WAR-файлов, их следует рассматривать как отдельные приложения, как описано в этом руководстве.

Определение того, упаковано ли приложение как EAR-файл

Если приложение упаковывается в виде ФАЙЛА EAR, обязательно изучите application.xml, ibm-application-bnd.xmi и ibm-application-ext.xmi-файлы и зафиксируйте их конфигурации. Дополнительные сведения см. в статье о создании пакета корпоративного архива (EAR) в WebSphere.

Предварительно созданное предложение Azure Marketplace позволяет использовать существующий образ контейнера. Приложение можно подготовить в соответствии с вашими бизнес-требованиями.

Определение всех внешних процессов и управляющих программ, запущенных на рабочих серверах

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

Определение того, используется ли файловая система и как именно она используется

Kubernetes работает с файловыми системами с постоянными томами (PV). В предварительно созданном предложении Azure Marketplace не поддерживается подключение постоянных томов. Чтобы включить различные варианты хранения, следуйте инструкциям в разделе "Параметры хранилища" для приложений в Служба Azure Kubernetes.

Статическое содержимое только для чтения

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

Динамически опубликованное статическое содержимое

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

Определение топологии сети

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

Топология сети является широкой темой, но следующие ссылки могут дать некоторое направление для ваших усилий по миграции:

  • Перечисление разделов высокого уровня, относящихся к миграции топологии сети в Azure, см . в топологиях сетевого развертывания webSphere Application Server.
  • Так как источники данных являются отдельными серверами в системе Liberty, их необходимо рассматривать как часть анализа топологии сети. Дополнительные сведения см. в статье WebSphere Application Server Liberty Data Sources.
  • Источники служб сообщений также являются отдельными серверами: Дополнительные сведения см. в статье WebSphere Application Server Liberty: обмен сообщениями WebSphere MQ.
  • Балансировка нагрузки Сведения о стороне свободы балансировки нагрузки см . в коллективной архитектуре WebSphere Application Server Liberty.

Учетная запись использования адаптеров JCA и адаптеров ресурсов

Если существующее приложение использует адаптеры JCA или адаптеры ресурсов для подключения к другим корпоративным системам, убедитесь, что конфигурация этих артефактов применяется к серверу Liberty, работающему на Служба Azure Kubernetes (AKS). Дополнительные сведения см. в разделе "Общие сведения о элементах конфигурации JCA" и архитектуре соединителя Java.

Определение того, используется ли кластеризация

Оператор обрабатывает кластеризацию для всех возможных способов выполнения рабочей нагрузки WAS в AKS.

Проверка кластеризации EJB

Если приложение использует локальные корпоративные серверы Java Beans (EJB), их может потребоваться перенести в кластеризованный EJB. Дополнительные сведения см. в статье о разработке приложений EJB на Liberty.

Учет требований к балансировке нагрузки

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

Миграция

В этом разделе предполагается, что анализ привел к тому, что вы решили использовать предварительно созданное предложение Azure Marketplace.

Подготовка предложения

Чтобы открыть предложение в портал Azure, см. статью IBM WebSphere Liberty и Open Liberty на Служба Azure Kubernetes. Нажмите кнопку "Создать", а затем используйте сведения, собранные на предыдущих шагах, чтобы помочь в заполнении полей предложения.

Учет хранилищ ключей

Необходимо учитывать миграцию любых хранилищ ключей SSL/TLS, используемых приложением. См. сведения о том, как настроить хранилище ключей.

Подключение источников JMS

После подключения баз данных можно настроить JMS, выполнив инструкции по элементам конфигурации JCA в документации IBM.

Учетная запись для ведения журнала

Не удается сделать облако без ведения журнала. Оператор предоставляет различные подходы к мониторингу. Дополнительные сведения см. в разделе "Мониторинг среды выполнения сервера Liberty". Если вы предпочитаете использовать Elastic Stack, Azure обеспечивает большую поддержку Elastic. Полные сведения см. в статье "Что такое интеграция Elastic с Azure" Вы можете объединить знания в этих двух ресурсах, чтобы достичь решения для ведения журналов, оптимизированного для Azure для Liberty в AKS.

Перенос приложений

Если вы решили предоставить образ приложения во время развертывания, необходимо обновить приложение с помощью CI/CD. Документация IBM содержит пример, показывающий, как выполнить это обновление. Дополнительные сведения см. в статье "Развертывание приложений в Либерти".

Настройка тестов

Для доступа к новым серверам, работающим в Azure, необходимо настроить все тесты в контейнере для приложений. Как и в случае с проблемами CI/CD, необходимо убедиться, что необходимые правила безопасности сети позволяют тестам получать доступ к приложениям, развернутыми в Azure. Дополнительные сведения см. в разделе Группы безопасности сети.

После миграции

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