Балансировка нагрузки JBoss и Apache - PullRequest
1 голос
/ 22 сентября 2010

Я пытаюсь настроить кластер JBoss с балансировкой нагрузки Apache.В основном я следовал руководству от здесь .Никаких проблем не возникало.Единственная проблема, с которой я столкнулся, - как получить доступ к своему приложению?Из руководства не упоминалось, как мне смонтировать собственное приложение.

Вот мои настройки среды:

  • Windows XP
  • JBoss AS 5.0
  • Apache 2.2.16
  • mod_jk 1.2.30

Вот мои настройки свойств:

httpf.conf

Include conf/mod_jk.conf

mod_jk.conf

LoadModule jk_module modules/mod_jk.so   
JkWorkersFile conf/workers.properties   
JkLogFile logs/mod_jk.log   
JkLogLevel info   
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"   
JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories   
JkRequestLogFormat "%w %V %T"   
JkMount /application/* loadbalancer   
JkUnMount /application/images/* loadbalancer   
JkMountFile conf/uriworkermap.properties   
JkShmFile run/jk.shm

<Location /jkstatus>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>

worker.properties

worker.list=loadbalancer,status
worker.node1.port=8009
worker.node1.host=10.67.51.129
worker.node1.type=ajp13
worker.node1.lbfactor=1
worker.node1.prepost_timeout=10000 #Not required if using ping_mode=A
worker.node1.connect_timeout=10000 #Not required if using ping_mode=A
worker.node1.ping_mode=A #As of mod_jk 1.2.27

worker.node2.port=8009
worker.node2.host= 10.67.51.64
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.prepost_timeout=10000 #Not required if using ping_mode=A
worker.node2.connect_timeout=10000 #Not required if using ping_mode=A
worker.node2.ping_mode=A #As of mod_jk 1.2.27

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2

worker.status.type=status

uriworkermap.properties

/jmx-console=loadbalancer
/jmx-console/*=loadbalancer

/web-console=loadbalancer
/web-console/*=loadbalancer

/admin-console=loadbalancer
/admin-console/*=loadbalancer

/myapp/*=loadbalancer
!/myapp/images/*=loadbalancer

server.xml в JBoss

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector port="8009" address="${jboss.bind.address}"
  emptySessionPath="true" enableLookups="false" redirectPort="8443" 
  protocol="AJP/1.3" connectionTimeout="600000" maxThreads="200"/>

Вот так я запускаю JBoss

Comp1

run.bat -c all -g DefaultPartition -u 230.0.0.4 -b 10.67.51.129 -Djboss.messaging.ServerPeerID=1 -Djboss.service.binding.set=ports-default

Comp2

run.bat -c all -g DefaultPartition -u 230.0.0.4 -b 10.67.51.64 -Djboss.messaging.ServerPeerID=2 -Djboss.service.binding.set=ports-01

Имя моего приложения называется JBossDB.Когда мне надоело получать доступ к 10.67.51.129:8080/JBossDB, я могу запустить свое приложение.Но если я попытался запустить localhost / JBossDB, он не загружается.Обратите внимание, я могу запустить localhost / admin-console.

Я надеюсь, что предоставил всю необходимую информацию.Пожалуйста, помогите мне.Спасибо

1 Ответ

2 голосов
/ 24 сентября 2010

Вы забыли добавить правильное сопоставление адресов в файл uriworkermap.properties или в опции JkMount.

В uriworkermap.properties вы должны поставить такую ​​строку:

/JBossDB=loadbalancer
/JBossDB/*=loadbalancer

ИЛИ в mod_jk.conf такая строка:

JkMount /JBossDB loadbalancer
JkMount /JBossDB/* loadbalancer
...