Home
entries friends calendar user info Previous Previous Next Next
skarpenkov -

Реклама

skarpenkov
[info]skarpenkov
в избранное
рассказать другу

Некоторые аспекты настройки JBoss

Исходными данными для этой статьи является фирменная документация JBoss и сама статья собственно ни что иное как вольный пересказ этой документации. Она не претендует на полноту описаний, но может помочь новичку в JBoss быстро настроить некоторые из параметров.

Настройка параметров соединения с базой данных с использованием шифрованных паролей

Если мы посмотрим на файлы настройки data source в JBoss поставляемым по умолчанию, то заметим, что пароль пользователя под которым осуществляется соединение с базой данных хранится в открытом виде. На самом деле при грамотном администрировании это не является такой уж проблеммой или дырой в безопастности, но в определённых условиях может оказаться не приемлемым. И так, что же мы должны сделать чтобы "спрятать" пароль от взора постороннего? Для примера мы возьмём файл настройки для соединения с Oracle.

Для "изъятия" пароля в явном виде, необходимо в файле $JBOSS_HOME$/server/<used_config>/deploy/oracle-ds.xml убрать все явные упоминания имени пользователя и пароля, а вместо этого, добавить строчку:

<security-domain>EncryptDBPassword</security-domain>

Где EncryptDBPassword – имя домена, описанного в файле файле $JBOSS_HOME$/server/<used_config>/cong/login-config.xml.

Описание домена так же очень простое:

<application-policy name = "EncryptDBPassword">

<authentication>

<login-module code = "org.jboss.resource.security.SecureIdentityLoginModule"

flag = "required">

<module-option name = "username">user</module-option>

<module-option name = "password">шифрованный_пароль</module-option>

<module-option name = "managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=имя_date source_из_oracle-ds.xml</module-option>

</login-module>

</authentication>

</application-policy>

Единственный вопрос, который остался, это как зашифровать пароль, чтобы вставить его в login-config.xml. Шифрованый пароль получается следующей командой:

java -cp "libjboss-jmx.jar;libjboss-common.jar;serverdefaultlibjboss-jca.jar;serverdefaultlibjbosssx.jar" org.jboss.resource.security.SecureIdentityLoginModule <пароль>

команду надо запустить в корне каталога, в котором установлен JBoss. Вот собственно и всё что надо сделать.

Настройка работы через внешний web-сервер с балансировкой нагрузки web запросов.

Документация JBoss рекомендует в качестве load balancer использовать Web server Apache с модулем mod_jk. Хотя это и не единственный способ обеспечить балансировку, я не буду изобретать ничего нового и будем следовать этим рекомендациям.

Для настройки мы возьмём Apache версии 2.2.4, на самом деле вы можете взять любую версию Apache, единственное требование, это использовать "подходящий" модуль mod_jk.

И так, качаем mod_jk подходящий для нашего Apache и копируем его в каталог $APACHE_HOME$/modules.

Далее в файл $APACHE_HOME$/conf/httpd.conf надо добавить строку:

Include conf/mod-jk.conf

Создадим mod-jk.conf с примерно таким содержимым:

# Load mod_jk module

# Specify the filename of the mod_jk lib

LoadModule jk_module modules/mod_jk.so

# Where to find workers.properties

JkWorkersFile conf/workers.properties

# Where to put jk logs

JkLogFile logs/mod_jk.log

# Set the jk log level [debug/error/info]

JkLogLevel info

# Select the log format

JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

# JkOptions indicates to send SSK KEY SIZE

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

# JkRequestLogFormat

JkRequestLogFormat "%w %V %T"

# Mount your applications

JkMount /CONTEXT/* loadbalancer

# You can use external file for mount points.

# It will be checked for updates each 60 seconds.

# The format of the file is: /url=worker

# /examples/*=loadbalancer

#JkMountFile conf/uriworkermap.properties

# Add shared memory.

# This directive is present with 1.2.10 and

# later versions of mod_jk, and is needed for

# for load balancing to work properly

JkShmFile logs/jk.shm

# Add jkstatus for managing runtime data

<Location /jkstatus/>

JkMount status

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Location>

И наконец создадим файл workers.properties, в котором хранятся описания или хостов для балансировки.

# Define list of workers that will be used

# for mapping requests

worker.list=loadbalancer,status

# Define Node1

# modify the host as your host IP or DNS name.

worker.node1.port=8009

worker.node1.host=<JBoss host1>

worker.node1.type=ajp13

worker.node1.lbfactor=1

worker.node1.cachesize=10

# Define Node2

# modify the host as your host IP or DNS name.

worker.node2.port=8009

worker.node2.host= <JBoss host2>

worker.node2.type=ajp13

worker.node2.lbfactor=1

worker.node2.cachesize=10

# Load-balancing behaviour

worker.loadbalancer.type=lb

worker.loadbalancer.balance_workers=node1,node2

worker.loadbalancer.sticky_session=1

worker.list=loadbalancer

# Status worker for managing load balancer

worker.status.type=status

На этом настройка Apache закончена, можно перестартовать его и перейдти к настройкам JBoss. Для этого надо в файле $JBOSS_HOME$/server/<used_config>/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml установить параметр “UseJK” в true:

<attribute name="UseJK">true</attribute>

Кроме того, на каждом узле надо прописать имя node, соответствующее имени данного узла в файле workers.properties из настройки Apache.

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">

Собственно всё, перестартуем JBoss. Теперь про обращении на хост с Apache по контексту CONTEXT, все запросы будут отсылаться на один из серверов JBoss.

Самый простой кластер.

И так мы выяснили как балансировать нагрузку web запросов. Теперь попробуем быстро организовать полноценный кластер в JBoss. В самом простом случае, достаточно запустить сервера с конфигурацией all. Делается это командой run.bat –c all. При условии, если каждый из серверов настроен в соответствии с этими инструкциями, они автоматически объединятся в кластер. Порядок запуска серверов не важен. Следует помнить, что в кластерной конфигурации развёртывание приложение производится копированием ear файла в папку farm а не в папку deploy. Кроме того, приложение разворачиваемое на сервере, должно быть готово для работы в условиях кластера. Для этого в файл WEB-INF/web.xml надо в случае отсутствия добавить

<distributable/>

который должен идти сразу после корневого элемента <web-app>.

Кроме того в файле WEB-INF/jboss-web.xml надо настроить репликацию сессий.

<jboss-web>

<replication-config>

<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>

<replication-granularity>SESSION</replication-granularity>

<replication-field-batch-mode>true</replication-field-batch-mode>

</replication-config>

</jboss-web>

После этого, приложение необходимо пересобрать и развернуть на сервере.

Полное описание настроек кластера можно посмотреть в JBoss Clustering guide.

Comments
(без темы) - [info]3igenr1etta598
1 комментарий or Оставить комментарий
profile
skarpenkov
Name: skarpenkov
calendar
Back Февраль 2007
123
45678910
11121314151617
18192021222324
25262728
page summary
tags

    Реклама

    Настроить