Перенос приложений WebSphere в Azure Red Hat OpenShift

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

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

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

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

Первым шагом в успешной миграции приложения 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 хорошим отправной точкой

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

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

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

Теперь, когда вы познакомились с различными способами обработки Свободы в Azure Red Hat OpenShift, вы можете выбрать, следует ли использовать предварительно созданное предложение 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. Дополнительные сведения см. в разделе "Перенос приложений в Свободу".

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

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

Чтобы воспользоваться неиспользуемой емкостью при значительной экономии затрат, можно использовать azure Spot Виртуальные машины в Azure Red Hat OpenShift. Сведения о том, как использовать Виртуальные машины Azure Spot в кластере Azure Red Hat OpenShift.

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

До появления таких технологических решений "конфигурация как услуга", как 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Если приложение использует очереди или разделы JMS, необходимо перенести их на внешний размещенный сервер JMS. Одной из стратегий использования JMS является использование Служебная шина Azure и расширенного протокола очереди сообщений. Сведения см. в руководстве по использованию JMS со Служебной шиной Azure и 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.

Свобода в Azure Red Hat OpenShift работает на 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 служба хранилища Class, выполните инструкции по созданию Файлы Azure служба хранилища Class в Azure Red Hat OpenShift 4.

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

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

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

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

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

Текущий набор предложений 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, работающему на AKS. Дополнительные сведения см. в разделе "Обзор элементов конфигурации JCA" и архитектуры java Подключение or.

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

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

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

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

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

Предварительно созданное предложение Azure Marketplace использует встроенный маршрут OpenShift для размещения приложения по общедоступному URL-адресу и учетной записи для балансировки нагрузки. Дополнительные сведения см. в разделе "Конфигурация маршрута OpenShift".

Миграция

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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