不是真正意义上的负载均衡,只是一种简单实现。
使用环境:
windows XP
weblogic 8.1.5
apache_2.0.59-win32-x86-no_ssl.msi
1.在多个不同的服务器分别创建domian,并部署相同的应用程序,应用程序连接同一个数据库,要求多个domain相互独立,能单独正常运行。测试用TestDL.war应用运行时,会在页面及weblogic控制台打印“this is test page!”(建domain、配连接池、数据源、发布程序的过程不再描述)
2.在另一台服务器上安装apache2.0,作为代理服务器,安装过程不再描述。
3.apache安装完成后,默认80端口,如果以后需要改端口,可以在Apache安装目录下的conf/httpd.conf中修改Listen项和ServerName项中的端口号。可以通过http://localhost 测试,是否成功安装。
4.编辑httpd.conf文件,在Listen 80行后,增加:Include conf/weblogic.conf
设置以下属性的值:
Timeout 300
KeepAlive On
MaxKeepAliveRequests 0
ThreadsPerChild 1920
MaxRequestsPerChild 10000
LogLevel error
其中:ThreadsPerChild、MaxRequestsPerChild的设置是为了解决:Action.c(10): Continuing after Error -26609: HTTP Status-Code=503 (Service Temporarily Unavailable)错误。
去掉server-status配置模块相关配置信息的注释,使其生效。比如
<Location /server-status>
SetHandler server-status
Order allow,deny
Deny from nothing
Allow from all
</Location>
去掉下面4行语句之前的#号:
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule rewrite_module modules/mod_rewrite.so
5.将C:\bea\weblogic81\server\bin目录下的mod_wl_20.so复制到apache安装目录 C:\Program Files\Apache Group\Apache2\conf下。
6.新建weblogic.conf文件,内容如下:
LoadModule weblogic_module modules/mod_wl_20.so
<Location /TestDL>
SetHandler weblogic-handler
WebLogicCluster 82.0.98.237:7001,82.0.176.3:7001
Debug ON
Debug ALL
DebugConfigInfo ON
WLLogFile c:\wl.log
DynamicServerList OFF
KeepAliveEnabled ON
KeepAliveSecs 30
</Location>
其中:/TestDL是应用的上下文根
82.0.98.237:7001,82.0.176.3:7001是2台web服务器的IP地址及端口号,中间用逗号分隔。
DynamicServerList设置为OFF,在对由插件所代理的请求进行负载平衡时,不使用动态集群列表,而是使用WebLogicCluster参数指定的静态列表。
DynamicServerList 、KeepAliveEnabled、KeepAliveSecs 的设置是为了解决: No backend server available for connection: timed out after 10 seconds or idempotent set to OFF错误。
7.重启apache服务,在代理服务器上使用http://localhost/TestDL,测试负载均衡效果。
说明:
1、最新版apache2.2不兼容weblogic8,必须是2.0.X版本。
2、apache代理服务器负责请求的分发,当访问量过大时,apache代理服务器的压力会随之增大,为了保证请求不被堵塞,使用一台配置高的服务器单独作为apache代理,代理服务器不要再作为web服务器。
2、在代理服务器上使用http://localhost/TestDL访问应用时,只看到一台服务器出日志,这时新打开一个IE窗口,重新访问,就可以看到另一台服务器上出日志了,在同一个窗口里点刷新是看不到负载均衡效果的。