Как да деактивирам групирането в 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 е ограничен до локалната машина, което може да влезе в конфликт с други приложения, базирани на JGroupds 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 на server//deploy/jbpm.esb/hibernate.cfg.xml

  • Премахване на сървър//deploy/riftsaw* и cp -R server/default/deploy/riftsaw* сървър//deploy/

person Wenbing Li    schedule 30.09.2014

Можете да направите това, като зададете TTL (time-to-live) на мултикаст пакетите на нула. Клъстерирането все още ще бъде активирано, но нито един от 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