Развертывание приложений в облаке с помощью IBM Application Pattern для Java

Как создать и развернуть виртуальное Java-приложение за считанные минуты

IBM Application Pattern для Java позволяет легко перемещать любые существующие Java-приложения в облачную среду и делать их многократно используемыми в качестве платформы или изменяемого шаблона. Здесь описано, как эта модель работает с облачными предложениями IBM, и приведены пошаговые инструкции – включая два демонстрационных видеоролика – по созданию, развертыванию и мониторингу виртуальных Java-приложений в различных сценариях использования.

Крис Бэйли, Advisory Software Engineer, IBM

Крис Бэйли вошел в состав Центра Технологий Java в IBM, как только окончил Университет г. Саутгемптон в 2000 году. В основном он работает с пользователями для решения проблем, возникающих с версиями Java-технологии и программами на базе Java от IBM. Крис ведет форум developerWorks, озаглавленный "IBM Java Runtimes and SDK" и на данный момент его интересует проблема улучшения качества информации и инструментов, доступных пользователям версий Java-платформы, представленных IBM.



01.07.2013

Одна из целей облачных вычислений – оградить разработчиков от необходимости понимать сложную инфраструктуру аппаратного и программного обеспечения и управлять ею, так чтобы они могли сосредоточиться на функциональности своего приложения. Эта цель в различной степени достигается с помощью облачных служб "инфраструктура как сервис" (IaaS) и "платформа как сервис" (PaaS). Облака IaaS обеспечивают оборудование и позволяют использовать свое собственное программное обеспечение. Облака PaaS дополнительно предоставляют программное обеспечение и обычно берут на себя развертывание инфраструктуры и промежуточного ПО, позволяя клиенту сосредоточиться на создании и развертывании собственных приложений. В этой статье за кратким обзором вариантов PaaS и IaaS для работы с Java-программами в облаке приводится подробное описание того, что предлагает IBM в виде IBM Application Pattern для Java.

Java-приложения в облаке

Большинство основных поставщиков облачных услуг разрешает использовать в своих облачных предложениях технологию Java. На одном конце шкалы — служба Amazon EC2, которая на самом деле представляет собой облако IaaS. Вы устанавливаете образы Amazon Machine Images (AMI), которые Amazon называет «предварительно настроенным ПО операционной системы и виртуального приложения, используемым для создания виртуальной машины в пределах Amazon Elastic Compute Cloud (EC2)». То есть нужно развернуть самодельный или готовый образ, содержащий необходимое вам программное обеспечение, которое может включать в себя среду выполнения Java.

Далее по шкале следуют такие службы, как Microsoft Azure и Heroku от Salesforce.com. Это облака PaaS, которые предоставляют среду программного обеспечения и позволяют Java-приложениям работать в ней. Однако из двух предложений только Heroku обеспечивает среду выполнения Java, предоставляя OpenJDK 6. В Azure необходимо использовать свою собственную.

Google App Engine и Amazon Elastic Beanstalk предоставляют почти все необходимое. Вам не нужно беспокоиться об установке виртуальных машин и программного обеспечения; вы просто размещаете свое приложение. Однако запускать можно только Web-приложения, и обе службы налагают некоторые ограничения на то, что именно эти приложения могут делать.


Развертывание в облаке IBM

Бесплатная ознакомительная версия IBM SmartCloud Application Services

90-дневная бесплатная ознакомительная версия IBM SmartCloud Application Services, доступная через developerWorks, позволяет развернуть до пяти виртуальных машин и использовать до 30 ГБ дискового пространства. Она предоставляет доступ к IBM Application Pattern для Java, а также к шаблонам Web Application, Transactional Database и Data Mart. Это означает, что можно приступить к развертыванию своих собственных приложений в облаке IBM или просто попробовать его с помощью одного из примеров шаблонов приложений.

Подход IBM заключается в том, чтобы предоставить набор технологий с возможностями IaaS и PaaS. Что касается IaaS, то предоставляется возможность развертывать виртуальные устройства. Это готовый стек программного обеспечения — содержащий операционную систему, программного приложение, промежуточное ПО, библиотеки приложения и дополнительные библиотеки, а также метаданные для настройки и запуска стека ПО — в одном образе с использованием стандартной спецификации Distributed Management Task Force (DMTF) Open Virtualization Format (OVF). Также поддерживается возможность использования сценариев для перенастройки стека ПО, содержащегося в устройстве.

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

  • Шаблон виртуальной системы — это определение установки, основанное на топологии. Редактор шаблонов (Pattern Editor) позволяет разрабатывать топологию, определяя количество образов виртуальных машин, компоненты программного обеспечения, подлежащие установке на них, и используемые для их настройки пакеты сценариев (метаданных). Это делается с помощью виртуальных машин, созданных вручную, импортированных виртуальных машин или одного из образов IBM Hypervisor Edition. После создания шаблона виртуальной системы для воспроизведения топологии с помощью сценариев конфигурации с целью установки приложения его можно использовать в качестве стандартной платформы.
  • Шаблон виртуального приложения ― это определение установки, ориентированное на приложение. Virtual Application Builder позволяет подготовить само приложение вместе с определением любых требуемых ему ресурсов с использованием таких компонентов, как соединения с базами данных, очереди сообщений и т.п., и таких политик, как масштабируемость, соглашения об уровне обслуживания (SLA) и т.п.

Эти три механизма развертывания приложений в облаке IBM иллюстрируются на рисунке 1.

Рисунок 1. Механизмы развертывания приложений в облаке IBM
Механизмы развертывания приложений в облаке IBM Виртуальные устройства сочетают в себе операционную систему, приложение и метаданные. Шаблон виртуальной системы — это совокупность виртуальных устройств. Шаблон виртуального приложения ориентирован на приложение.

В таблице 1 сравниваются характеристики трех механизмов развертывания.

Таблица 1. Сравнение механизмов развертывания
Виртуальные устройстваШаблоны виртуальной системыШаблоны виртуального приложения

Установка и настройка стандартного ПО на ОС

Традиционная модель администрирования и управления

Эластичность, определяемая инфраструктурой

Образы, созданные посредством расширения/копирования

Стандартная общая стоимость владения (TCO) как у существующих приложений

Автоматизированное развертывание топологий промежуточного ПО

Традиционная модель администрирования и управления

Эластичность, определяемая приложением и инфраструктурой

Улучшенная TCO как у виртуализированных приложений

Высокая степень автоматизации процесса развертывания с помощью готовых шаблонов

Использование служб эластичного управления рабочей нагрузкой

Эластичность на основе бизнес-политики

Предназначено для облачной среды

Лучшее TCO как у облачных приложений

Облачные предложения IBM

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

  • IBM SmartCloud: облако, размещенное в IBM, которое может быть частным и специфическим для данного клиента или общедоступным, где всю подготовку выполняют пользователи. Это можно считать облачным решением, предоставляемым IBM.
  • IBM Workload Deployer: аппаратное устройство, которое предоставляет возможности по подготовке и управлению для развертывания виртуальных устройств и моделей рабочей нагрузки на оборудовании пользователя, так что существующие аппаратные ресурсы приобретают возможности облака. Этот подход можно назвать так: принеси свое облако с собой.
  • IBM PureApplication System: оптимизированный в отношении рабочей нагрузки аппаратно-программный комплекс, который предоставляет возможности для подготовки и управления наряду с оптимизированным оборудованием, на котором развертываются рабочие нагрузки. Такой подход можно назвать коробочным облаком.

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


IBM Application Pattern для Java

IBM Application Pattern для Java ― это шаблон виртуального приложения, который позволяет легко и быстро развертывать новые и существующие Java-приложения в облаке IBM. Это простой процесс, потому что предоставляются готовые конструктивные блоки со встроенными возможностями по умолчанию. Такая простота экономит время: для создания большинства виртуальных Java-приложений достаточно трех минут!

Конструктивные блоки виртуального Java-приложения

В настоящее время IBM Application Pattern для Java предоставляет пять простых конструктивных блоков, которые можно использовать для создания нового виртуального Java-приложения. Они позволяют развертывать приложение и любые дополнительные библиотеки или файлы конфигурации, которые могут потребоваться, настроить входной и выходной межсетевые экраны и добавить файлы журналов событий приложения в предоставленную среду мониторинга.

  • Java application: компонент, который позволяет создать и настроить основную часть Java-приложения. Само приложение нужно представить в виде файла архива — например, ZIP, TAR.GZ или TGZ, — содержащего скомпилированный код Java-приложения. Передав приложение, вы объявляете соответствующий параметр, который указывает, как приложение будет выполняться: методом Main (например, com.ibm.sample.HelloWorld с любыми дополнительными параметрами и записями classpath) или из командной строки, если приложение запускает сценарий запуска (например, /bin/start.sh).

    Health Center

    IBM Monitoring and Diagnostics tools for Java – Health Center (Health Center) ― это бесплатный, необременительный для системы диагностический инструмент для мониторинга приложений, работающих на IBM Java virtual Machine. Он входит в состав IBM Support Assistant. Используя возможность «позднего прикрепления», IBM Application Pattern для Java позволяет запускать мониторинг во время выполнения.

    К конфигурации устанавливаемого Java-приложения можно добавить политику JVM, которая позволяет изменять конфигурацию базовой среды выполнения Java. Можно установить минимальный и максимальный размеры кучи Java, включить режим отладки, включить мониторинг с помощью Health Center или добавить другие Универсальные аргументы JVM. Включение режима отладки или мониторинга с помощью Health Center также приводит к открытию необходимых портов межсетевого экрана, и можно ограничить диапазон IP-адресов, которым разрешено подключаться к Java-приложению.

  • Additional archive file: этот компонент позволяет добавлять файлы в виртуальное приложение, указав файл архива с дополнительными файлами. Это может быть архив Java (например, файл JAR, WAR или EAR), который будет установлен как есть в указанном месте, или обычный файл архива (ZIP, TAR.GZ или TGZ), содержащий дополнительные файлы, которые можно распаковать в нужное место. Вариант Java-архива удобен для добавления дополнительных компонентов, таких как драйверы JDBC, или развертывания Web-приложения, если основное Java приложение ― это сервер приложений, например, Apache Tomcat. Вариант обычного архива удобен для добавления или перезаписи файлов конфигурации по умолчанию, например server.xml, чтобы изменить используемый порт по умолчанию или добавить идентификаторы пользователей.
  • Generic listener: по умолчанию развернутое приложение не допускает любой входящий или исходящий сетевой трафик. Компонент generic listener позволяет настроить межсетевой экран для входящего сетевого трафика. Обратите внимание, что при этом только настраивается межсетевой экран, а не устанавливается HTTP-сервер. Зато можно использовать IP-адрес/маску подсети для ограничения диапазона IP-адресов, которые могут подключаться к приложению.
  • Generic target: это аналог компонента generic listener, который используется для настройки исходящих сетевых соединений. Он точно так же позволяет указать IP-адрес или диапазон IP-адресов, к которым может подключиться приложение. Например, если приложение подключается к базе данных, то для разрешения этого подключение требуется generic target.
  • Monitored file: этот компонент позволяет добавлять один или несколько файлов в средство просмотра журнала консоли рабочей нагрузки с помощью интерфейса пользователя IBM SmartCloud, IBM Workload Deployer и IBM PureApplication System. В нем можно использовать подстановочные знаки, и если к средству просмотра журнала нужно добавить несколько файлов или каталогов, то можно указать несколько компонентов monitored file. Например, /logs/*.log добавляет в средство просмотра журнала любой файл из каталога журналов с суффиксом .log.

Сочетание этих пяти простых компонентов создает возможность строить и развертывать на сервере удивительно широкий спектр виртуальных Java-приложений.

Встроенные знания: возможности по умолчанию

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

  • Мониторинг жизненного цикла: состояние Java-приложения контролируется и отображается в консоли рабочей нагрузки IBM SmartCloud, IBM Workload Deployer или IBM PureApplication System. Интерфейс пользователя показывает, выполняется ли приложение, имеется ли сообщение об ошибке (выход с ненулевым кодом возврата, сбой или OutOfMemoryError), или же приложение выполнено без ошибок. В случае ошибки встроенные средства протоколирования, мониторинга и захвата данных о первом отказе (First Failure Data Capture – FFDC) помогут вам определить ее причину.
  • Готовые средства протоколирования и мониторинга: в дополнение к мониторингу, запрашиваемому через компонент Monitored file, все развернутые приложения предоставляют через средство просмотра журнала данные stdout, stderr и verbose: gc. Готовые средства мониторинга также доступны через вкладку Monitoring в Virtual Application Console, и можно подключить инструмент мониторинга реального времени Health Center. Если использование Health Center не включено посредством политики JVM при запуске, то его можно включить во время выполнения.
  • Готовые средства FFDC: в случае ошибки в развернутом приложении производится сбор заранее определенных данных. Сюда входит создание файлов javadump и системного дампа, а также автоматическое выполнение утилиты jextract по отношению к дампам системы.

Создание виртуального Java-приложения: Hello World

Предоставляемый набор конструктивных блоков и возможностей по умолчанию делает создание виртуального Java-приложения относительно простой задачей. Я воспользуюсь традиционным примером Hello World, чтобы показать, как создать и развернуть Java-приложение с помощью IBM Application Pattern для Java.

Как построить и развернуть приложение

Прежде чем развернуть приложение, необходимо написать его и упаковать в файл архива (ZIP, TAR.GZ или TGZ). В листинге 1 показана простая реализация приложения Hello World с добавлением задержки перед выходом для подсоединения инструмента мониторинга.

Листинг 1. Пример приложения Hello World
package com.ibm.sample;

public class HelloWorld {

    public static void main(String[] args) {
        /* Печать «Hello World!» в stdout */
        System.out.println("Hello World!");
        try {
            /* Ожидание 5 минут */
            Thread.sleep(5 * 60 * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

После компиляции этого кода вы получите файл com.ibm.sample.HelloWorld.class, который необходимо добавить в файл ZIP. Архив HelloWorld.zip (см. раздел Загрузки) содержит только один файл: /com/ibm/sample/HelloWorld.class.

Теперь, когда у вас есть приложение, следующим шагом будет создание нового виртуального приложения с помощью IBM Application Pattern для Java.

  1. Откройте панель Virtual Application Pattern: Patterns -> Virtual Applications.
  2. Из развертывающегося меню Virtual Application Patterns выберите Application Pattern Type for Java 1.0.
  3. Нажмите кнопку +, чтобы создать новое виртуальное приложение.
  4. Нажмите кнопку Start Building, чтобы начать построение нового приложения из чистого шаблона.

В новом окне откроется консоль Virtual Application Console. Она содержит палитру доступных компонентов с левой стороны, холст для построения приложения в середине и правую панель для настройки компонентов приложения. Чтобы создать виртуальное приложение Hello World, выполните следующие шаги, как показано на рисунке 2.

  1. Перетащите виджет Java application из палитры на холст.
  2. При необходимости впишите в поле Name имя Java-приложения (например, HelloWorld).
  3. В поле Archive File на панели конфигурации найдите в файл HelloWorld.zip в своей локальной системе.
  4. В списке Application launch type выберите Main Class.
  5. В разделе Main Class укажите имя основного класса своего приложения (в этом примере – com.ibm.sample.HelloWorld).
  6. При необходимости добавьте JVM Policy с помощью значка + на виджете Java-приложения. Используйте ползунок на панели конфигурации для настройки размера кучи Java и установите флажок Enable Health Center, чтобы включить мониторинг Health Center.
Рисунок 2. Этапы создания приложения Hello World в Virtual Application Builder
Этапы создания приложения Hello World в Virtual Application Builder

Нажмите кнопку Save в левом верхнем углу окна, чтобы сохранить виртуальное приложение HelloWorld, присвоив ему имя и описание.

Возвратившись в окно Virtual Application Pattern, разверните новое виртуальное приложение.

  1. Выберите приложения HelloWorld в списке приложений слева.
  2. Нажмите кнопку Deploy.
  3. Выберите соответствующий профиль среды или группу облака и нажмите кнопку ОК.

Теперь приложение развернуто и вскоре будет доступно!

Как контролировать свое приложение: файлы журналов

Если приложение развернуто, оно появится на панели Virtual Application Instances. Следующие действия (см. рисунок 3) позволяют отслеживать состояние развернутых Java-приложений.

  1. Выберите Instances -> Virtual Applications, чтобы открыть панель Virtual Application Instances.
  2. Убедитесь, что в развёртывающемся меню Virtual Application Application выбран пункт Application Pattern Type for Java 1.0.

    На левой панели должны быть перечислены все развернутые виртуальные Java-приложения вместе с общим представлением их состояния: Running (работает), Stopped (остановлено) или Error (ошибка). Следующие инструкции позволяют получить более подробную информацию о своем виртуальном приложении.

    1. Выберите приложение на левой панели.
    2. Нажмите на ссылку Log в разделе VM Status, чтобы открыть средство просмотра журнала.
    3. Щелкните на значке Manage, чтобы открыть Virtual Application Console.
Рисунок 3. Этапы запуска Virtual Application Console
Этапы запуска Virtual Application Console

Для просмотра файлов журнала развернутого приложения можно использовать представление дерева на левой панели Log Viewer (см. рисунок 4). Ниже показано, как увидеть сами файлы журналов Java-приложения.

  1. Выберите JAVA -> /opt/java-deploy в представлении дерева.
  2. Выберите stdout.log, чтобы отобразить сообщение Hello World! из приложения на главной панели.
  3. Можно выбрать verbosegc001.log, чтобы увидеть историю сбора мусора.
  4. При необходимости выберите символ загрузки справа от имени файла, чтобы загрузить файл.
Рисунок 4. Просмотр файлов журнала в Log Viewer
Просмотр файлов журнала в Log Viewer

В этой части представления отображаются любые файлы дампа, а также любые файлы, добавленные в Log Viewer с помощью виджета Monitored file.

Как контролировать свое приложение: мониторинг в режиме реального времени

В консоли Virtual Application Console есть возможность использовать:

  • вкладку Monitoring, чтобы увидеть данные по использованию ресурсов развернутого приложения в режиме реального времени;
  • вкладку Logging, чтобы открыть Log Viewer;
  • вкладку Operation, чтобы внести изменения в работающее приложение.

IBM Application Pattern для Java позволяет подключить Health Center к приложению, даже если оно не было настроено через JVM Policy в Virtual Application Builder. Используйте следующие инструкции (см. рисунок 5).

  1. Выберите вкладку Operation.
  2. Выберите пункт JAVA из списка доступных операций.
  3. Разверните элемент Attach Health Center.
  4. При необходимости укажите порт, к которому может подключиться Health Center.
  5. При необходимости укажите IP-адрес или IP-адрес и маску подсети, откуда может подключаться клиент Health Center.
  6. Нажмите кнопку Submit.
Рисунок 5. Включение мониторинга Health Center во время выполнения
Включение мониторинга Health Center во время выполнения

Теперь к приложению можно подключить клиент IBM Monitoring and Diagnostic Tools for Java – Health Center, доступный в IBM Support Assistant, чтобы с очень малыми издержками следить за тем, что делает приложение. Он же предоставляет путь для запроса создаваемых файлов дампа и обеспечивает сбор данных более высокого уровня — например, профилирование распределения.


Сценарии использования Java Virtual Application Pattern

HelloWorld удобно использовать для того, чтобы продемонстрировать последовательность развертывания Java-приложения в качестве виртуального приложения. Но это не очень хороший пример реальных приложений, особенно если они развертываются в облачной среде на основе сервера. Теперь я приведу ряд гораздо более полезных примеров, чтобы показать, как можно переместить существующие приложения в облако с помощью IBM Application Pattern для Java. Все они основаны на использовании Java-приложений с открытым исходным кодом, так что эти примеры можно попробовать без всякой лицензионной платы.

Промежуточное ПО с открытым исходным кодом: Apache Tomcat

IBM Application Pattern для Java можно использовать для создания виртуального приложения или любого промежуточного ПО на базе Java, представляя его как часть приложения. Хорошим примером служит развертывание Apache Tomcat и Web-приложения. Это можно сделать одним из двух способов: включить то и другое в файл архива, который загружается в компонент Java application; или же развернуть Apache Tomcat в качестве Java-приложения, а Web-приложение ― с помощью компонента Additional archive. Второй метод обычно предпочтительнее, потому что он не требует манипуляции архивными файлами, и конфигурацию Apache Tomcat можно сохранить в качестве шаблона, просто добавляя Web-приложение для создания нового виртуального приложения.

В качестве упражнения создадим установку Apache Tomcat 7.0.27 с примером Web-приложения, добавленным отдельно в Virtual Application Builder. Начните с загрузки и сохранения архива Tomcat от Apache.org и примера Web-приложения (simpleapp.war), который я приложил к этой статье (см. раздел Загрузка). Затем выполните следующие действия (см. рисунок 6).

  1. Перетащите из палитры на холст виджет Java application, который станет сервером Tomcat. Ему можно дать имя (например, Apache Tomcat 7.0.27 Server).
  2. В поле конфигурации Archive File укажите архив Tomcat, загруженный с Apache.org (например, apache-tomcat-7.0.27.tar.gz). Используйте этот файл в точности как есть; в него не нужно вносить никаких изменений.
  3. Для компонента Java-приложения выберите запуск приложения из командной строки и укажите сценарий запуска Tomcat — например, /apache-tomcat-7.0.27/bin/startup.sh. Этот сценарий запуска — содержащийся в загрузке из apache.org — используется для запуска сервера Tomcat.
  4. Добавьте процесс Generic listener, перетащив его на холст из поля Other Components палитры Assets, и настройте так, чтобы разрешить соединения через порт 8080. Это откроет межсетевой экран для входящих соединений через порт 8080, который будет прослушивать Tomcat.
  5. Перетащите на холст контролируемый файл Monitored file из списка Other Components и настройте его на мониторинг файлов журнала Tomcat — например, /apache-tomcat-7.0.27/logs/*.log. Это добавит в средство просмотра журнала файлы журнала, созданные Tomcat. Использование подстановочного знака *.log означает, что будут читаться все файлы .log из этого каталога: catalina.log, manager.log и т.п.
  6. Добавьте компонент Additional archive file для развертывания Web-приложения simpleapp.war. Присвойте ему значение пути развертывания /apache-tomcat-7.0.27/webapps/ и выберите тип файла архива Java archive file.
Рисунок 6. Создание установки Apache Tomcat в Virtual Application Builder
Создание установки Apache Tomcat в Virtual Application Builder

Теперь у вас есть экземпляр Apache Tomcat с Web-приложением SimpleApp, которое можно развернуть. После развертывания оно будет доступно по указанному IP-адресу через порт 8080 (http://IP-адрес:8080/ выдаст первую страницу Tomcat).

Виртуальный шаблон богатого Web-приложения

IBM предлагает специальный шаблон Web-приложения, который обеспечивает гораздо более богатый набор возможностей для развертывания Web-приложений (а также корпоративных и OSGi-приложений) в облаке, включая настроенные соединения с базами данных и очередями сообщений, а также автоматическое масштабирование с выравниванием нагрузки. Если же нужно запустить в облаке специальный сервер приложений (например, Tomcat), то теперь есть простой способ сделать это с помощью IBM Application Pattern для Java.

Вместо того чтобы добавлять Web-приложение SimpleApp, можно добавить компонент Additional archive file и настроить его, указав путь развертывания, но не добавлять Web-приложение. Виртуальное приложение можно будет сохранить в качестве многоразового шаблона с параметром Additional archive file в качестве единственного разблокированного (изменяемого) поля в шаблоне. Пользователи смогут создавать свои собственные приложения из стандартного профиля Tomcat 7.0.27 с возможностью добавлять свои Web-приложения.

Тестирование нагрузки на основе облака: Apache JMeter

Еще один сценарий использования IBM Application Pattern для Java ― это тестирование нагрузки на основе облака, когда облачные механизмы настроены на тестирование нагрузки Web- (или других) приложений. Для этой цели можно использовать IBM Application Pattern для Java, чтобы развернуть Apache JMeter и использовать возможности этого механизма тестирования нагрузки сервера.

Если вы загрузили и сохранили архив JMeter из Apache, выполните следующие инструкции (см. рисунок 7) по созданию в Virtual Application Builder установки Apache JMeter 2.7 в режиме сервера.

  1. Перетащите из палитры на холст виджет Java application, который станет сервером JMeter. Ему можно дать имя (например, Apache JMeter 2.7 Server).
  2. В поле конфигурации Archive File укажите архив JMeter, загруженный из Apache.org (например, apache-jmeter-2.7.tar.gz). Не нужно вносить никаких изменений в загрузку.
  3. Выберите Command Line из списка способов запуска приложений и в поле командной строки наберите: /apache-jmeter-2.7/bin/jmeter-server-Jserver.rmi.localport=6437. Этот сценарий запуска сервера — включенный в загрузку из apache.org — используется для запуска сервера JMeter с дополнительным параметром, который задает порт подключения RMI, вместо случайно выбранного порта (что вызвало бы проблемы с межсетевым экраном).
  4. Добавьте один компонент Generic listener для подключения RMI Registry к порту 1099, а другой ― для подключения RMI к порту 6437 (указывается с помощью параметра localport). Два универсальных компонента прослушивания нужны потому, что для каждого можно указать только один порт. RMI Registry по умолчанию настроен на порт 1099, а порт соединения RMI указан с помощью параметра Jserver.rmi.localport=6437 в командной строке.
  5. Добавьте компонент Generic target, настроенный на порт 9080, чтобы Web-приложение, которое вы будете тестировать, размещалось на сервере приложений (AppServer на рисунке 7). IP-адрес и маска подсети сервера 0.0.0.0/0.0.0.0 допускают любой IP-адрес сервера приложений. Компонент generic target с портом 9080 означает, что он может отправлять трафик на порт 9080 на целевом сервере ― порт, используемый приложением, развернутым с помощью Web Application Pattern. Это полезно, когда не известно, где именно будет находиться целевое приложение. Его можно ограничить определенным IP-адресом или диапазоном IP-адресов.
  6. Перетащите компонент Monitored file и настройте его на мониторинг файлов журналов JMeter, таких как /jmeter-server.log, файл журнала JMeter по умолчанию, который показывает состояние тестов, выполняемых через сервер.
Рисунок 7. Создание установки Apache JMeter в Virtual Application Builder
Создание установки Apache JMeter в Virtual Application Builder

После развертывания серверного приложения JMeter можно выполнять тест нагрузки из клиентской установки JMeter, запустив клиент с параметром -Jremote_hosts=comma-separated server list и воспользовавшись параметром Run -> Remote Start внутри пользовательского интерфейса клиента JMeter для тестирования из серверов в облаке.

Можно запустить пример плана тестирования JMeter (см. раздел Загрузка и соответствующую сноску) по отношению к установке примера Sample Web application only, входящего в состав шаблона Web Application Pattern Type 2.0.

  1. Запустите JMeter из командной строки с адресом серверной установки JMeter — например:
    jmeter -Jremote_hosts=172.17.108.222.
  2. Внутри JMeter выберите File -> Open, чтобы открыть план тестирования.
  3. Выберите файл SampleWebAppTestPlan.jmx.
  4. Из представления дерева на левой панели выберите Test Plan -> Thread Group -> HTTP Requests Default.
  5. Отредактируйте Web-сервер: имя сервера или IP-адрес на главной панели должны быть частью адреса конечной точки развертывания примера Sample Web application only.
  6. Измените запрос HTTP: путь должен содержать любую другую часть адреса конечной точки перед /webapp/.
  7. Выберите Run -> Remote Start -> JMeter Server Address, чтобы начать тестирование.

Следующие действия позволяют увидеть, приложена ли нагрузка к примеру Sample Web application only.

  1. Для развернутого примера выберите пункт Manage, чтобы запустить Virtual Application Console.
  2. Выберите Monitoring > Middleware.
  3. Выберите элемент Web-приложения из списка — например, Web-Application-was.11342004774648.

Главная панель должна отобразить количество графиков, которые можно использовать для мониторинга развернутого Web-приложения. Если Web-приложение получает нагрузку от сервера JMeter, то график Web Applications Request Count должен показать обслуживаемые запросы, как показано на рисунке 8.

Рисунок 8. Представление запросов к примеру Web-приложения в режиме тестировании нагрузки
Представление запросов к примеру Web-приложения в режиме тестировании нагрузки

Другие варианты использования

Помимо развертывания виртуальных приложений с помощью Apache Tomcat и Apache JMeter, можно создавать виртуальные приложения для ряда других вариантов использования и промежуточного ПО. К ним относятся:

  • Eclipse Jetty
  • JBoss
  • Apache ftpServer
  • Apache Derby
  • Apache MINA

Обычно проблема создания любых новых виртуальных приложений с помощью стороннего промежуточного ПО заключается в том, что надо знать, какие входные и выходные порты межсетевого экрана нужно настроить с использованием компонентов generic listener и generic target. Если в документации продукта не указаны порты, которые нужно открыть, то можно либо развернуть приложение и проверить его журналы событий на записи SocketException, либо развернуть продукт локально и посмотреть, какие порты используются, с помощью таких инструментов, как netstat.

Для облегчения задачи к этой статье прилагаются шаблоны для Tomcat и JMeter (см. раздел Загрузка), а шаблоны для Eclipse Jetty, JBoss, Derby, ftpServer и др. можно взять в блоге IBM Application Pattern для Java (см. раздел Ресурсы). Чтобы использовать эти шаблоны, достаточно загрузить пакет соответствующего промежуточного ПО, передать его в компонент Java-приложения через Virtual Application Builder и нажать кнопку Deploy!


Заключение

IBM Application Pattern для Java не является ни IaaS-, ни PaaS-предложением в прямом смысле каждого из этих терминов. Гибкость, которую он обеспечивает, позволяя развертывать любые приложения, дается не даром: пользователь должен определить топологию и предоставить промежуточное ПО — когда требуется служба промежуточного ПО. В этом смысле больше подходит определение IaaS. Однако имеется и ряд особенностей, характерных для платформы: среда выполнения для развертывания любого чистого Java-приложения простым и повторяемым способом с помощью встроенных знаний, охватывающих настройку, управление жизненным циклом и мониторинг приложения. Теперь любое существующее Java-приложение легко переместить в облачную среду. После этого его можно использовать как платформу или изменяемый шаблон, что приближает данное предложение к PaaS.


Загрузка

ОписаниеИмяРазмер
Приложение HelloWorldHelloWorld.zip1 KБ
Шаблон приложения для Apache Tomcat 7.0.27Tomcat-7.0.27-Template.zip2 KБ
Простое Web-приложение для Apache Tomcatsimpleapp.war2 KБ
Шаблон приложения для Apache JMeter 2.7JMeter-2.7-Template.zip2 KБ
Пример плана тестирования JMeter1SampleWebAppTestPlan.jmx6 KБ

Заметка

  1. Этот план тестирования относится к образцу Web-приложения, входящему в состав образа Web Application Type 2.0. Требуется настроить IP-адрес и пути.

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Технология Java, Облачные вычисления
ArticleID=936206
ArticleTitle=Развертывание приложений в облаке с помощью IBM Application Pattern для Java
publish-date=07012013