Apache-2.2
使用 mod_jk 使用 Apache 對 JBoss 應用伺服器進行負載平衡
我正在嘗試使用 Apache 負載平衡設置 JBoss 集群。但是當我
localhost
在瀏覽器中輸入時,它應該被重定向(代理?)到埠 8080(JBoss),但它沒有被重定向。這是我的環境設置:
Ubuntu 11.04 JBoss AS 5.1-GA Apache 2 mod_jk 1.2.30
我的設置如下所示:
Apache Web Server: 192.168.1.12:80 - lb1 JBoss App Server 1: 192.168.1.12:8080 - app1 JBoss App Server 2: 192.168.1.23:8080 - app2
我的負載均衡器和 JBoss1 在同一台機器上。(我什至嘗試將它保存在兩台不同的機器上)。
我已將 mod_jk.so 文件複製到 /usr/lib/apache2/modules/mod_jk.so 中,並執行以下步驟:
- 現在執行以下
# echo LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so" > /etc/apache2/mods-available/jk.load
- 和
# touch /etc/apache2/mods-available/jk.conf
- 和
# touch /etc/apache2/workers.conf
# a2enmod jk
我已經在
/etc/apache2/workers.conf
lb1 機器中創建了文件# Defining the workers list: worker.list=loadbalancer,status # first worker properties, we use the AJB13 connection type: worker.worker1.type=ajp13 worker.worker1.connection_pool_size=20 worker.worker1.host=192.168.1.12 worker.worker1.port=8080 worker.worker1.lbfactor=1 # second worker properties, we use the AJB13 connection type: worker.worker2.type=ajp13 worker.worker2.connection_pool_size=20 worker.worker2.host=192.168.1.23 worker.worker2.port=8080 worker.worker2.lbfactor=1 # No we set the load balancing config worker.loadbalancer.type=lb worker.loadbalancer.sticky_session=true worker.loadbalancer.balance_workers=worker1,worker2 worker.status.type=status
我已經創建了文件
/etc/apache2/mods-available/jk.conf
:<IfModule mod_jk.c> # The Jk shared mem location JkShmFile /var/log/apache2/mod_jk.shm # Jk logs JkLogFile /var/log/apache2/mod_jk.log # Jk loglevel JkLogLevel info # Jk logformat JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # Our workers config JkWorkersFile /etc/apache2/workers.conf # The most important: # We will send eveything (/*) to our loadbalancer (set in JkWorkersFile) JkMount /* loadbalancer </IfModule>
我更改了 JBoss 的 serve.xml 文件:
<Connector port="8009" address="${jboss.bind.address}" emptySessionPath="true" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" connectionTimeout="600000" maxThreads="200"/>
我檢查了它說 mod_jk 已初始化的日誌文件。
但它沒有被重定向到 jboss 的 8080 埠。
提前致謝。
這是我的 mod_jk.log 文件
[Tue Jul 19 13:17:23 2011] [5505:3079493376] [info] init_jk::mod_jk.c (3183): mod_jk/1.2.28 initialized [Tue Jul 19 13:17:23 2011] [5506:3079493376] [info] init_jk::mod_jk.c (3183): mod_jk/1.2.28 initialized
和 apache 的 error.log 文件
[Tue Jul 19 13:17:23 2011] [notice] Apache/2.2.17 (Ubuntu) mod_jk/1.2.28 configured -- resuming normal operations [Tue Jul 19 13:22:13 2011] [error] [client 192.168.1.12] File does not exist: /var/www/favicon.ico
我看到了這樣的潛在錯誤:
- 基於
workers.conf
您要使用 AJP 協議在埠 8080 上連接的文件。如果你想使用 AJP,你應該使用這樣的定義(查看埠定義):worker.worker1.type=ajp13 worker.worker1.connection_pool_size=20 worker.worker1.host=192.168.1.12 worker.worker1.port=8009 worker.worker1.lbfactor=1
Engine
文件中的標籤缺少定義server.xml
。在每台伺服器上,您應該定義jvmRoute
參數 - 基於您的workrs.conf
文件:<Engine name="jboss.web" defaultHost="localhost" jvmRoute="worker1">
你可以在這裡找到更多資訊:http: //tomcat.apache.org/tomcat-5.5-doc/config/engine.html 3. 你如何執行你的 JBoss?預設情況下,JBoss 僅在
localhost
. 您可以使用以下方法進行檢查netstat
:netstat -ltnp
您還可以使用
-b
參數執行 JBoss:run.sh -b 192.168.1.12