设置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服务器都可以用来当作反向代理服务器比如Apachenginx,还有专门干这事的硬件F5。互联网最常用的现在是 Nginx

现在我们要解决的问题是在Peoplesoft中使用Apache作为反向代理,把请求分发到多个PIA上,如下图所示,这样就能起到负载均衡和失效转移的效果,增大了ps系统的处理容量,提高了性能。在下图中,Apache服务器所在的服务器IP=192.168.1.1,两个PIA分别在服务器192.168.1.2192.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

安装完成后在Apachebin目录下运行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.2Apache 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。把插件下载好以后,找到Apachehttp.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      总结

在使用WeblogicApache做的插件之后,经过配置,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作为负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

Apache实现负载均衡

Apache实现负载均衡

nginx负载均衡怎么访问数据库

nginx 作为反向代理实现负载均衡的例子

Apache + Tomcat 负载均衡 session复制

apachenginx配置负载均衡