Apache-2.2

使用 mod_jk 使用 Apache 對 JBoss 應用伺服器進行負載平衡

  • July 25, 2011

我正在嘗試使用 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 中,並執行以下步驟:

  1. 現在執行以下# echo LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so" > /etc/apache2/mods-available/jk.load
  2. # touch /etc/apache2/mods-available/jk.conf
  3. # touch /etc/apache2/workers.conf
  4. # a2enmod jk

我已經在/etc/apache2/workers.conflb1 機器中創建了文件

# 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

我看到了這樣的潛在錯誤:

  1. 基於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
  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

引用自:https://serverfault.com/questions/291400