Как отключить кластеризацию в JBoss 5?

кто-нибудь знает, как отключить автоматическую кластеризацию в JBoss 5.1.0? у нас есть JBoss, работающий на каждой машине разработчика, и, поскольку мы все находимся в одной сети, они выполняют автоматическую кластеризацию. Проблема могла бы быть решена, если бы каждый из нас мог получить свой мультикастовый ip, но сетевое оборудование на это не способно.

Разве в jboss нет переключателя, чтобы деактивировать это?


person martin    schedule 18.11.2011    source источник


Ответы (3)


В Eclipse под Windows вы можете запустить сервер, используя следующее свойство JVM (см. Open Launch Configuration):

-Djboss.partition.name=${env_var:COMPUTERNAME}

Таким образом, каждая машина разработчика будет иметь свой собственный кластер (с одним сервером, если вы используете только один сервер). В Linux вам нужно будет заменить COMPUTERNAME на HOSTNAME.

Если вы запускаете JBoss AS из командной строки, вы должны использовать что-то вроде -Djboss.partition.name=%COMPUTERNAME% под Windows (не тестировалось).

Обратите внимание, что использование -Djgroups.udp.ip_ttl=0 (как предлагается в другом ответе) имеет следующие недостатки:

  • запуск сервера медленнее (в моем случае 4 минуты вместо 1 минуты);
  • много журналов предупреждений/ошибок NAKACK;
  • многоадресная рассылка JGroups UDP ограничена локальной машиной, которая может конфликтовать с другими приложениями, основанными на JGroups UDP;
  • другие серверы на той же машине с такой же конфигурацией будут в том же кластере, что может быть нежелательно.
person Julien Kronegg    schedule 13.06.2013

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

Однако, если вы хотите отключить кластеризацию в «производственной» или «всей» конфигурации, вам необходимо выполнить следующие действия:

Удалять

  • ферма/
  • развернуть-hasingleton/
  • развернуть/кластер/

В файле deploy/messaging/*-persistence-service.xml измените Clustered на false:

<attribute name="Clustered>false</attribute>

и удалить

<depends optional-attribute-name="ChannelFactoryName">jboss.jgroups:service=ChannelFactory</depends>

В conf/bootstrap/profile.xml замените

<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.StaticClusteredProfileFactory">

с участием

<bean name="BootstrapProfileFactory" class="org.jboss.system.server.profileservice.repository.StaticProfileFactory">

и удалите свойство «farmURIs» несколькими строками ниже.

Замените deploy/httpha-invoker.sar на http-invoker.sar из профиля по умолчанию.

В файле deployers/clustering-deployer-jboss-beans.xml закомментируйте WebAppClusteringDependencyDeployer.

В SOA-P, если вы удаляете кластеризацию, вам нужно будет выполнить несколько дополнительных шагов.

  • Скопируйте файл server/default/deploy/jbpm.esb/hibernate.cfg.xml на сервер//deploy/jbpm.esb/hibernate.cfg.xml.

  • Удалить server//deploy/riftsaw* и cp -R server/default/deploy/riftsaw* server//deploy/

person Wenbing Li    schedule 30.09.2014

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

При запуске JBoss установите системное свойство jgroups.udp.ip_ttl, например.

-Djgroups.udp.ip_ttl=0

Скорее всего, вам нужно взломать это в сценарии запуска JBoss.

person skaffman    schedule 18.11.2011
comment
Это работает хорошо, но это отключает сеть JGroups UDP для всей JVM (т.е. это не будет работать, если вам нужен JGroups UDP для другого использования, например, пользовательская синхронизация данных на основе JGroups). Обратите внимание, что TTL=0 по-прежнему передает пакеты UDP, но только на текущем компьютере (localhost). Таким образом, вы можете иметь кластер JBoss AS на каждой машине разработчика. - person Julien Kronegg; 13.06.2013
comment
Кстати, вы получите много журналов WARN/ERROR от NAKACK, уровня подтверждения JGroups. - person Julien Kronegg; 13.06.2013