Apache和Tomcat 配置负载均衡(mod-proxy方式)
来源:互联网 发布:人工智能pdf百度云 编辑:程序博客网 时间:2024/05/25 01:34
mod-proxy方式实现负载均衡是利用了Apache 2.x版本自带的mod_proxy模块使用代理技术来连接Tomcat;
http_proxy模式基于HTTP协议,要求Tomcat提供HTTP服务,也就是必须启用Tomcat的HTTP Connector;
ajp_proxy模式基于AJP协议,要求Tomcat提供AJP服务,也就是必须启用Tomcat的AJP Connector;
Apache2.2版本之后对mod-proxy模块进行了重写,增强了其功能和稳定性.配置简单,使用广泛.
网上也有大量的相关文章.其具体包括http-proxy,ajp-proxy,ftp-proxy等方式.
采用mod-proxy的连接方式,Apache需要加载以下模块:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule manager_module modules/mod_manager.so
下面介绍http-proxy,ajp-proxy两种最常用的方式.
一、准备工作
1) 软件准备
Apache 2.2.25: http://httpd.apache.org/download.cgi
Tomcat 6.0.39: http://tomcat.apache.org/download-60.cgi
2) 软件安装
Windows下安装Apache,并测试服务器正常工作;
Linux下安装 Apache 可参考: http://blog.csdn.net/wangjunjun2008/article/details/38314387;
Tomcat解压缩,分别命名为tomcat1和tomcat2;并启动tomcat测试其正常工作。
二、全局配置
1) 编辑${HTTPD_HOME}/conf/httpd.conf文件,开启以下模块,以便让Apache启动时自动加载:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule manager_module modules/mod_manager.so
2) 编辑${HTTPD_HOME}/conf/httpd.conf文件,找到<IfModule dir_module>,在DirectoryIndex index.html 后加上 index.jsp;
这一步只是为了配置完tomcat后能看到小猫首页,可以不做。
3) 分别修改tomcat1和tomcat2的server.xml文件,修改如下标签的端口及,并添加jvmRoute属性:
tomcat1修改后的内容:
<Server port="8010" shutdown="SHUTDOWN">
<Connector port="8080" protocol="HTTP/1.1" ... redirectPort="8443" />
<Connector port="8090" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
tomcat2修改后的内容:
<Server port="8011" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1" ... redirectPort="8443" />
<Connector port="8091" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
三、负载均衡配置
对于http_proxy方式,配置如下:
ProxyPass / balancer://httpproxy/
<Proxy balancer://httpproxy/>
BalancerMember http://127.0.0.1:8080/
BalancerMember http://127.0.0.1:8081/
</Proxy>
#配置负载均衡管理界面;访问地址为 http://localhost/balancer-manager/
<Location /balancer-manager>
SetHandler balancer-manager
order Allow,Deny
#Deny from All
Allow from 127.0.0.1
</Location>
【说明】
"httpproxy"是集群名称(可为任意名称)
8080,8081分别对应tomcat的http协议端口;
如此,即可实现apache和tomcat基于http_proxy方式的负载均衡.
访问 http://localhost/balancer-manager 打开如下页面,
对于ajp_proxy方式,配置如下:
ProxyPass / balancer://ajpproxy/
<Proxy balancer://ajpproxy/>
BalancerMember ajp://127.0.0.1:8090/
BalancerMember ajp://127.0.0.1:8091/
</Proxy>
【说明】 8090,8091分别对应tomcat的ajp协议端口;
如此,即可实现apache和tomcat基于ajp_proxy方式的负载均衡.
访问 http://localhost/balancer-manager 打开如下页面,
如需具体控制负载均衡中各个节点的负载比例,则将以上配置作如下修改:
ProxyPass / balancer://ajpproxy/
<Proxy balancer://ajpproxy/>
BalancerMember ajp://127.0.0.1:8090/ loadfactor=1 route=tomcat1
BalancerMember ajp://127.0.0.1:8091/ loadfactor=2 route=tomcat2
</Proxy>
[说明]
loadfactor 是负载因子(取值范围是1~100),Apache会按照指定数字的比例分发请求(数值越大,处理的请求越多);
比如,两个tomcat的数字都是1,则按1:1的比例分发请求;若是2和1,则按2:1的比例分发请求;
"route=tomcat1" 是负载均衡的节点名称(可为任意名称,但不可重复);
四、添加测试代码
分别在tomcat1和tomcat2添加如下代码:
在${Tomcat_Home}/webapps/下新建test目录,在test目录下新建test.jsp文件,文件内容为:
<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %><html><head></head><body><%out.println("Server IP = " + request.getLocalAddr() + "<br>");out.println("Server Port = " + request.getLocalPort() + "<br>");out.println("<br>");out.println("SessionId = " + session.getId() + "<br>");out.println("<br>");String dataName = request.getParameter("dataName");if (dataName != null && dataName.length() > 0) {String dataValue = request.getParameter("dataValue");session.setAttribute(dataName, dataValue);}out.print("<b>Session 列表</b>");Enumeration e = session.getAttributeNames();while (e.hasMoreElements()) {String name = (String)e.nextElement();String value = session.getAttribute(name).toString();out.println( name + " = " + value+"<br>");System.out.println( name + " = " + value);}%><form action="test.jsp" method="POST">名称:<input type=text size=20 name="dataName"><br> 值:<input type=text size=20 name="dataValue"><br><input type=submit></form></body></html>
在test目录下新建WEB-INF目录,在WEB-INF目录下新建web.xml,web.xml文件内容为:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <description>test</description></web-app>
五、进行负载均衡测试
启动Apache和tomcat1,tomcat2,访问http://localhost/test/test.jsp,
可以看到包括服务器地址、端口、SessionId等信息在内的页面,如下图:
[说明]
此处的SessionId多了”.tomcat0”,说明处理当前请求的服务器是节点为tomcat0的Tomcat;
如果需要向集群中增加节点,首先需要对新增的Tomcat作类似配置,然后修改${Apache_Home}/conf/httpd.conf 文件,增加BalancerMember,指向新增的tomcat即可。
- Apache和Tomcat 配置负载均衡(mod-proxy方式)
- tomcat ,apache 负载均衡配置
- Apache tomcat 负载均衡配置
- APACHE + tomcat配置负载均衡
- Apache + Tomcat 负载均衡配置
- Apache +Tomcat负载均衡配置
- Apache+tomcat均衡负载配置
- apache+tomcat集群的负载均衡配置方式
- apache+tomcat集群的负载均衡配置方式
- Apache负载均衡之Apache proxy和Apache+mod_jk方式
- Apache + Tomcat + mod jk 来实现负载均衡
- apache和tomcat负载均衡
- Apache+Tomcat集群和负载均衡安装配置笔记
- Apache + MOD_JK + TOMCAT实现集群和负载均衡配置指南
- Apache+Tomcat集群和负载均衡安装配置笔记
- Apache + MOD_JK + TOMCAT实现集群和负载均衡配置指南
- 基于apache的tomcat负载均衡和集群配置
- Apache与Tomcat集群和负载均衡配置
- Linux 2.6内核配置说明
- js判断输入值为整数,输入值的和小于固定值
- PB数据管道
- windows服务器下IIS6/7下PHP 无法加载 php_curl.dll 等动态链接库
- hdu1010
- Apache和Tomcat 配置负载均衡(mod-proxy方式)
- C#获取相对路径的方法
- ORA-1114 Error Reported on an Unknown File Id
- python 常用库收集 pyparse,matplotlib,dateutil
- 小结Fragment与FragmentPagerAdapter的生命周期及其关系
- MyBatis实现CRUD操作
- Android中Bitmap,byte[],Drawable相互转化
- clojure从零开始(五)
- erlang ets