Статьи

HawtIO на JBoss Wildfly 8.1

HawtIO удивительно смотрится на вашем промежуточном программном обеспечении на основе JVM. Это объединяющая консоль для приложений, которые в противном случае должны были бы создать свою собственную дрянную веб-консоль; и давайте будем честными, все они построены по-разному, с разными технологиями, с разным UX и со всеми ужасными способами управления промежуточным программным обеспечением в средах QA / PROD… Я слышу, как работают люди с «amen brotha».

Логотип-450px

Так что HawtIO — хорошее решение этой проблемы. Он имеет открытый исходный код , лицензирован Apache 2.0 , и за ним стоит большое сообщество. Написанный с использованием AngularJS и красивой архитектуры плагинов , вы можете расширить его до своего сердца для своих личных приложений.

Возможно, вы заметили, что это также потрясающая консоль для Fabric8, которая является открытой платформой DevOps для промежуточного программного обеспечения JVM — она ​​упрощает управление развертыванием, настройкой, управлением версиями, обнаружением, балансировкой нагрузки и т. Д. Для вашего промежуточного программного обеспечения.

Но какие у вас есть варианты использования HawtIO сегодня?

Многие!

HawtIO — это просто веб-приложение, которое работает в JVM. Итак, вот ваши варианты:

  • Разверните его как WAR в вашем любимом контейнере сервлетов (Tomcat, Jetty, JBoss Wildfly / EAP)
  • Разверните его как исполняемое приложение Java
  • Используйте расширение HawtIO Chrome для подключения к своим приложениям прямо из браузера.

Посетите страницу « Начало работы», чтобы узнать больше об использовании HawtIO, развернутого в различных конфигурациях.

HawtIO имеет отличные плагины для настройки, управления и визуализации брокеров Apache ActiveMQ , маршрутов Apache Camel , пакетов / services / config Apache Karaf OSGI и многих других, таких как Tomcat, Wildfly, Jetty, ElasticSearch, jclouds и т. Д., И т . Д. Например, чтобы управлять брокерами ActiveMQ , взгляните на запись в блоге моего приятеля Деяна .

По мере того как мы в Red Hat внедряем сервисы JBoss Fuse и JBoss Fuse Serviceworks , мы совершенствуемся в интеграции отдельных компонентов. Например, подписка Fuse Service Works предоставляет вам полный доступ к A-MQ, Fuse и всем его компонентам, включая HawtIO. К сожалению, HawtIO «официально» не поддерживается в EAP на сегодняшний день, но это будет исправлено в следующих выпусках. Это не ограничение технологии, просто ее так много, и Red Hat предъявляет строгие требования к тестированию / совместимости, поэтому нам необходимо выполнить все тестирование / сертификацию, прежде чем мы полностью «поддержим» ее.

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

wildflynewimproved

Поэтому остальная часть этого блога представляет собой пошаговое руководство с рекомендациями по развертыванию и защите HawtIO на сервере приложений JBoss Wildfly 8.1 . Следующая запись (часть II) будет показывать то же самое для дистрибутива JBoss EAP 6.2 . Я буду использовать HawtIO 1.4.11 (последний выпуск от сообщества) для этого руководства.

Начиная

Прежде всего, предполагается, что вы знаете, где скачать Wildfly 8.1 . Но чтобы начать здесь, мы хотим получить последний дистрибутив HawtIO (1.4.11 на момент написания этой статьи) . Мы будем использовать hawtio-default-1.4.11.war, чтобы быть точным. После загрузки дистрибутива рассмотрите следующий шаг:

1. Удалите файл log4j.properties

Мы хотим удалить файл log4j.properties, поставляемый с дистрибутивом, потому что мы хотим использовать встроенную функцию ведения журнала JBoss Wildfly, которая автоматически подключается к журналам log4j, в которые HawtIO пишет. Если бы мы не удалили log4j.properties, мы бы хотели установить для журнала каждого развертывания значение false. , Но так как это не так сложно, давайте просто удалим log4j.properties (ПРИМЕЧАНИЕ. Чтобы получить дополнительную информацию о гибкости подсистемы ведения журнала, вы должны увидеть документацию wildfly по ее компоненту ведения журнала ).

1
2
3
4
5
6
7
8
9
ceposta@postamachat(renamed) $ ll
total 50936
-rw-r--r--@ 1 ceposta  staff    25M Jul 25 14:00 hawtio-default-1.4.11.war
 
ceposta@postamachat(renamed) $ unzip -l hawtio-default-1.4.11.war | grep log4j.properties
     1268  07-13-14 17:23   WEB-INF/classes/log4j.properties
 
ceposta@postamachat(renamed) $ zip -d  hawtio-default-1.4.11.war WEB-INF/classes/log4j.properties
deleting: WEB-INF/classes/log4j.properties

2. Переименуйте дистрибутив

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

1
ceposta@postamachat(renamed) $ mv hawtio-default-1.4.11.war hawtio.war

Теперь, когда мы развернем файл WAR, мы сможем поразить контекст следующим образом: http: // localhost: 8080 / hawtio

вместо того, чтобы беспокоиться о номере версии.

3. Расслабьте подсистему CDI

HawtIO использует некоторые аннотации CDI (например, @Inject), но по умолчанию не содержит файл beans.xml . Wildfly 8.1 не нравится это по умолчанию согласно спецификации CDI 1.1, которая вводит неявные архивы бинов. Мы можем попросить Wildfly игнорировать это веб-приложение как приложение CDI, поскольку в него не включен файл beans.xml , и мы можем эффективно отключить неявные архивы bean-компонентов. Для этого отредактируйте ваш файл конфигурации (мы будем использовать standalone.xml, но если вы используете режим домена, отредактируйте соответствующие файлы конфигурации для этого):

1
2
3
353         ....
354         <subsystem xmlns="urn:jboss:domain:weld:2.0" require-bean-descriptor="true"/>
355     </profile>

4. Преднамеренно отключить безопасность

1
2
3
4
5
We want to make sure the webapp deployed correctly and you can access all of the HawtIO goodies. So we'll temporarily _disable_ security on the webapp so we can access it. To do this, add this section after the `<extensions/>` section:
 
    31     <system-properties>
    32         <property name="hawtio.authenticationEnabled" value="false" />
    33     </system-properties>

Мы восстановим безопасность в следующем разделе

5. Разверните HawtIO

Теперь вы готовы развернуть HawtIO!

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

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
ceposta@postamachat(wildfly-8.1.0.Final) $ ./bin/add-user.sh
 
What type of user do you wish to add?
 a) Management User (mgmt-users.properties)
 b) Application User (application-users.properties)
(a):
 
Enter the details of the new user to add.
Using realm 'ManagementRealm' as discovered from the existing property files.
Username : admin
The username 'admin' is easy to guess
Are you sure you want to add user 'admin' yes/no? yes
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
 - The password should not be one of the following restricted values {root, admin, administrator}
 - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
 - The password should be different from the username
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]: admin
About to add user 'admin' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'admin' to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/standalone/configuration/mgmt-users.properties'
Added user 'admin' to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/domain/configuration/mgmt-users.properties'
Added user 'admin' with groups admin to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/standalone/configuration/mgmt-groups.properties'
Added user 'admin' with groups admin to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/domain/configuration/mgmt-groups.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? no

Теперь вы можете запустить Wildfly и развернуть HawtIO! Запустите Wildfly:

1
ceposta@postamachat(wildfly-8.1.0.Final) $ ./bin/standalone.sh

И перейдите к веб-консоли. Используйте имя пользователя и пароль, которые вы установили в разделе добавления пользователя выше, чтобы получить доступ к веб-консоли. Вы можете получить доступ к веб-консоли, перейдя по адресу http: // localhost: 9990 / . Теперь перейдите на вкладку Runtime и затем управляйте развертыванием . Нажмите «Добавить», перейдите туда, куда вы скачали, и переименуйте дистрибутив HawtIO. После того, как вы добавили его, вы должны нажать кнопку «Включить», чтобы включить его. У вас должен быть экран, который выглядит так:

00-hawtio развернутые-wildfly

6. Используйте HawtIO!

Теперь вы сможете перейти на http: // localhost: 8080 / hawtio и начать использовать HawtIO!

01-hawtio

ПРИМЕЧАНИЕ. Похоже, что некоторые проблемы с безопасностью / входом в систему соблюдаются в Safari на Mac. Кажется, вам предложат un / pw. Просто попробуйте с Chrome или другим веб-браузером.

7. Настройте безопасность

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

Сначала давайте остановимся на Wildfly и снова отредактируем автономный файл конфигурации. Там же, где мы отключили безопасность, давайте снова включим ее и добавим еще пару опций. Ваш раздел <system-properties> должен выглядеть так:

1
2
3
4
5
31     <system-properties>
32         <property name="hawtio.authenticationEnabled" value="true" />
33         <property name="hawtio.realm" value="jboss-web-policy" />
34         <property name="hawtio.role" value="admin" />
35     </system-properties>

Потрясающие! Теперь давайте добавим пользователя, чтобы иметь возможность войти. Мы снова будем использовать ./bin/add-user.sh для этого руководства, но, скорее всего, в ваших средах вы используете более сложные механизмы безопасности (база данных, LDAP и т. Д.), Чем файлы свойств, которые используются по умолчанию. Но тем не менее, давайте добавим нового пользователя в ApplicationRealm:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
ceposta@postamachat(wildfly-8.1.0.Final) $ ./bin/add-user.sh
 
What type of user do you wish to add?
 a) Management User (mgmt-users.properties)
 b) Application User (application-users.properties)
(a): b
 
Enter the details of the new user to add.
Using realm 'ApplicationRealm' as discovered from the existing property files.
Username : ceposta
Password recommendations are listed below. To modify these restrictions edit the add-user.properties configuration file.
 - The password should not be one of the following restricted values {root, admin, administrator}
 - The password should contain at least 8 characters, 1 alphabetic character(s), 1 digit(s), 1 non-alphanumeric symbol(s)
 - The password should be different from the username
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list, or leave blank for none)[  ]: admin
About to add user 'ceposta' for realm 'ApplicationRealm'
Is this correct yes/no? yes
Added user 'ceposta' to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/standalone/configuration/application-users.properties'
Added user 'ceposta' to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/domain/configuration/application-users.properties'
Added user 'ceposta' with groups admin to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/standalone/configuration/application-roles.properties'
Added user 'ceposta' with groups admin to file '/Users/ceposta/dev/eap/wildfly-8.1.0.Final/domain/configuration/application-roles.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? no

Теперь давайте снова запустим сервер приложений:

1
ceposta@postamachat(wildfly-8.1.0.Final) $ ./bin/standalone.sh

Когда мы снова перейдем к конечной точке http: // localhost: 8080 / hawtio , нас встретит страница входа:

02-hawtio обеспеченных

Как насчет EAP?

Вот оно! У вас есть HawtIO, работающий и защищенный на Wildfly! Теперь вы можете проверить все удивительные вещи, которые вы можете сделать с HawtIO , особенно то, что вы можете сделать с управлением, отладкой, трассировкой, профилированием и мониторингом маршрутов Apache Camel .

Но как насчет того же в JBoss EAP ? Следите за обновлениями к следующей части … Я покажу вам, как это сделать!

Ссылка: HawtIO о JBoss Wildfly 8.1 от нашего партнера по JCG Кристиана Поста в блоге