设置Apache作为负载均衡
Posted EvolveHRMS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置Apache作为负载均衡相关的知识,希望对你有一定的参考价值。
1 反向代理和负载均衡
首先需要弄清楚三个概念,反向代理(Reverse Proxy),负载均衡(Load Balance),失效转移(Failover)。这些概念与PeopleSoft无关,也不一定用于HTTP协议。尽管在web应用中使用最广泛,然而应该更多的从架构理论的角度来理解,就像缓存,在使用速度差异较大的两者中间放入的存储都可以成为缓存。关于这三个概念网上的资料很多,下面是从某百科拷贝而来的文字,放在这里让这篇文章显得更完整。
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器[1]。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务[2]。
失效转移(failover)是一种备份操作模式,当主要组件由于失效或预定关机时间的原因而无法工作时,这种模式中的系统组件(比如服务器、网络或数据库)的功能被转嫁到二级系统组件[3]。
反向代理和负载均衡是如此紧密,以至于在很多语境里这两者是通用的。我们称反向代理服务器的时候,通常也是指负载均衡服务器。
常见的Web服务器都可以用来当作反向代理服务器比如Apache,nginx,还有专门干这事的硬件F5。互联网最常用的现在是 Nginx。
现在我们要解决的问题是在Peoplesoft中使用Apache作为反向代理,把请求分发到多个PIA上,如下图所示,这样就能起到负载均衡和失效转移的效果,增大了ps系统的处理容量,提高了性能。在下图中,Apache服务器所在的服务器IP=192.168.1.1,两个PIA分别在服务器192.168.1.2和192.168.1.3上。当用户访问Apache服务器的时候,它作为反向代理会分发请求到后面的两个PIA上。
2 Apache安装
Apache的安装可以参考官网http://httpd.apache.org/docs/2.4/install.html或者从网上搜索到的https://blog.csdn.net/superbirds/article/details/52373102
安装完成后在Apache的bin目录下运行apachectl –v会看到版本
[root@ehr bin]#./apachectl -v
Server version:Apache/2.4.25 (Unix)
Serverbuilt: Apr 25 2017 17:47:27
3 安装Weblogic 代理插件
要想让Apache请求分发到Weblogic上,需要使用Weblogic代理插件[4]。目前看到的插件支持Apache 2.2和Apache 2.4,因此我们装Apache的时候也应该安装这两个版本。插件的下载仍然需要到My Oracle Support (http://support.oracle.com
) and Software Delivery Cloud (http://edelivery.oracle.com
) 。想想weblogic也不是免费的软件,下载支持它的插件也需要到它的厂家那里去。这个插件落实到文件里实际就是一个so文件,针对Apache2.4名字是mod_wl_24.so,针对Apache2.2版本是mod_wl.so。把插件下载好以后,找到Apache的http.conf配置文件,增加如下一行
LoadModule weblogic_module modules/mod_wl_24.so
重启apache后改插件即可加载了。
4 Apache配置
仍然在配置文件http.conf中,增加<IfModule mod_weblogic.c>这样的一段,增加好以后的配置文件增加了如下部分
LoadModulealias_module modules/mod_alias.so
#LoadModulerewrite_module modules/mod_rewrite.so
LoadModule weblogic_modulemodules/mod_wl_24.so
<IfModule mod_weblogic.c>
WebLogicCluster 192.168.1.2:8000,192.168.1.3:8001,
DynamicServerList off
DebugConfigInfo On
MatchExpression /
WLCookieName PORTAL-PSJSESSIONID
</IfModule>
5 在两个PIA中指定相同Cookie名字
在配置文件PS_HOME\webserv\<DOMAIN_NAME>\applications\peoplesoft\PORTAL.war\WEB-INF\weblogic.xml中,指定相同的Cookie名字PORTAL-PSJSESSIONID,这个名字是在httpd.conf中配置的。配置后的文件如下所示
[psoft@ehrdev WEB-INF]$ more weblogic.xml
<?xml version="1.0"encoding="ISO-8859-1"standalone="no"?>
此处省略... ...
<cookie-name>PORTAL-PSJSESSIONID</cookie-name>
<monitoring-attribute-name>USERID</monitoring-attribute-name>
6 负载均衡的策略
在用WebLogicCluster参数的时候,官方文档[5]里写的
The plug-in does a simple round-robin between all available servers. The server list specified in this property is a starting point for the dynamic server list that the server and plug-in maintain. WebLogic Server and the plug-in work together to update the server list automatically with new, failed, and recovered cluster members.
7 总结
在使用Weblogic给Apache做的插件之后,经过配置,Apache就可以当作一个反向代理,把请求分发到后面的多个PIA上,既可以起到负载均衡,提高性能的作用,也可以起到失效转移的作用,在其中一台webserver失效的时候把请求转发到其他PIA上,达到了高可用的效果。
8 参考
[1] https://baike.baidu.,com/item。/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86
[2] https://baike.baidu.com/item/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1
[3] https://baike.baidu.com/item/%E5%A4%B1%E6%95%88%E8%BD%AC%E7%A7%BB/18502559
[4] Overview of Oracle WebLogic ServerProxy Plug-Ins 12.1.3
https://docs.oracle.com/middleware/1213/webtier/develop-plugin/overview.htm#PLGWL391
[5] Parameters for Web Server Plug-Ins
https://docs.oracle.com/middleware/1213/webtier/develop-plugin/plugin_params.htm#PLGWL475
以上是关于设置Apache作为负载均衡的主要内容,如果未能解决你的问题,请参考以下文章