注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

曾国藩的博客

 
 
 

日志

 
 

Failure of server APACHE bridge错误解决过程! apache2.0+weblogic8.1负载均衡!  

2013-06-03 09:52:04|  分类: 网络/系统架构/版 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://blog.chinaunix.net/uid-76426-id-2601651.html

名词解释:
双向机房,表示该机房可以提供电信和网通的高速双向接入,用于解决网通和电信互联网速太慢的问题。
####################################################################################################


为了保证用户都能快速的访问公司运营网站,针对实际情况,分别在电信机房和网通机房托管了镜像服务器,根据用户接入方式的不同让DNS Server负责把请求分别导向到不同的托管机房,实现访问速度的最理想化;不过,Application Server和Database Server全部都在电信机房,且都是私有地址,不过网通机房(双向机房)承诺可以提供到电信机房的局域网带宽;因此,在网通机房的Server需要能够 直接与电信机房的n个Application Server进行通信;由此,就用到了Linux下的iptables port mapping技术。

环境描述:
                                         Port A(-->AS1(WLS Instance):7001)
(网通:公网IP)                            Port B(-->AS2(WLS Instance):7001)
Web Server--> 公网 -->Mapping Server --> Port C(-->AS3(WLS Instance):7001)
(电信:公网IP)          (电信:公网IP)     Port D(-->AS4(WLS Instance):7001)
                                         Port E(-->AS5(WLS Instance):7001)
注:
托管在网通的Web Server有2个IP,一个用于网通接入(假设是a.b.c.cnc),一个用于电信接入(假设是a.b.c.ctc)。
托管在电信的Mapping Server有1个IP,通过端口映射,把来自网通Web Server对不同端口的请求映射到不同的WebLogic Instance,用于负载均衡,同时该Mapping Server启用iptables DNAT实现端口映射。
托管在电信的WebLogic Cluster实现了Session Replication。
####################################################################################################


在网通机房,配置好Web Server,启动并进行测试;20%的情况下系统可以正常访问AS服务器,但速度特别慢;80%的情况出现如下错误(访问URL时的浏览器提示信息):
Failure of server APACHE bridge:
--------------------------------------------------------------------------------
No backend server available for connection: timed out after 10 seconds or idempotent set to OFF.
--------------------------------------------------------------------------------
Build date/time: Aug 5 2005 11:44:06
--------------------------------------------------------------------------------
Change Number: 616829

查看Web Server Error Log,记录有如下错误信息:
[error] CONNECTION_REFUSED [os error=115, line 1687 of ../nsapi/URL.cpp]: Error connecting to host a.b.c.ctc:PortD
[error] CONNECTION_REFUSED [os error=115, line 1687 of ../nsapi/URL.cpp]: Error connecting to host a.b.c.ctc:PortB

1.首先检查网通Web Server上的WebLogic Plugin配置,经过检查,没有发现错误。
2.怀疑是不是Mapping Server的iptables防火墙规则出错从而导致网络连接超时,于是在网通Web Server上依次执行如下指令,同时查看Mapping Server的/proc/net/ip_conntrack,以确认是否端口映射存在问题。
telnet MappingServerIP PortA
telnet MappingServerIP PortB
telnet MappingServerIP PortC
telnet MappingServerIP PortD
telnet MappingServerIP PortE
经过检查,没有发现错误,所有端口映射均能正常映射到不同地址。
3.基本上很难定位问题范围了,于是google搜索'Failure of server APACHE bridge'关键字,搜索到2个重要的URL,分别是:
http://bbs.chinaunix.net/archiver/?tid-377122.html
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=121&threadID=14743&messageID=87908
通过查看这两个帖子,按照其中的建议,分别进行如下尝试:
a.增加WebLogic Server Accept Block到200.
b.设置Apache的Httpd.conf中,KeepAlive为On.
然后再次进行测试,问题依然存在,似乎以上参数的修改没有起到任何作用;当然,以上2个URL中提到的都是直接连接WebLogic Instance,不存在Port Mapping,不过理论上应该一样才对。
4.访问BEA WebLogic官方网站,通过如下URL进一步详细了解了WebLogic Plugin的各类参数。
http://e-docs.bea.com/wls/docs81/plugins/plugin_params.html#1149781
于是,在WebLogic Plugin中增加了如下参数,并重新进行测试。
Debug ON
Debug ALL
DebugConfigInfo ON
WLLogFile /tmp/wl.log
通 过查看WebLogic Plugin Log文件(/tmp/wl.log),可以看到Plugin一直在不断尝试维护一个WebLogic Cluster内各个节点的生存列表,而由于是跨越路由器,WebLogic Server默认的组播地址不可能通过,所以怀疑是不是这个地方出了问题呢?
于是进一步查看WebLogic Plugin各类参数,发现有个参数DynamicServerList可以控制是否允许WebLogic Plugin自动探测WebLogic Cluster节点列表,针对公司这种Port Mapping的特殊情况,于是采用了如下参数再次进行测试。
DynamicServerList OFF
KeepAliveEnabled ON
KeepAliveSecs 30
最终,测试成功,访问速度很快,而且WebLogic Plugin Log也不再出现错误提示,取而代之的是快速的WebLogic Cluster Node访问指向记录。
####################################################################################################

另:
1.采用DynamicServerList OFF后,如果出现WebLogic Instance故障,能否做到Session自动转移,从而防止系统提示用户Session失效呢?有待进一步验证。
2. 可能是由于网络环境的特殊情况,DynamicServerList OFF/KeepAliveEnabled ON/KeepAliveSecs 30,这3个参数才是最终解决这个问题的根本;不知道其它情况下(参考google出的2个URL)问题是否完全解决了呢?
3.参考如下URL,有更详细的介绍,这也是问题解决后才搜索到的。
http://www.bea.com.cn/support_pattern/index.htm
http://dev2dev.bea.com.cn/bbsdoc/05092810.html


http://blog.csdn.net/myid/article/details/7279357    

apache2.0+weblogic8.1负载均衡!

不是真正意义上的负载均衡,只是一种简单实现。

使用环境:

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窗口,重新访问,就可以看到另一台服务器上出日志了,在同一个窗口里点刷新是看不到负载均衡效果的。

  评论这张
 
阅读(2487)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018