Apache Http Server与Tomcat7.0实现负载均衡与集群

来源:互联网 发布:nginx 502错误 编辑:程序博客网 时间:2024/06/07 11:30

1、使用的软件环境为:

下载地址:

http://download.csdn.net/detail/cxb24008/6832515

http://download.csdn.net/detail/cxb24008/6832495

http://download.csdn.net/detail/cxb24008/6832463

2、实现原理:



如上图所示,主要通过 Apache-Server 作为中转服务器,实现多个 tomcat 服务器之间的分布式处理,用户直接请求 Apache-Server ,然后 Apache-Server 会将请求分发到具体的 tomcat-server ,之后 tomcat-server 响应客户请求并返回结果到 Apache-Server ,最后 Apache-Server 返回结果给用户。

3、安装apache http server (这里我安装在了D盘,可以根据自己情况选择安装目录) 安装后把tomcat7.0.42解压到与apache的同一文件夹中如图所示:

文件夹apache-tomcat-7.0.42重命名为tomcat1,然后复制两份分别为tomcat2,tomcat3,删除压缩文件(可以不删),如下图:



解压文件tomcat-connectors-1.2.37-windows-i386-httpd-2.0.x.zip,将解压后的所有文件复制到上图的目录中,显示结果如下图:



4、打开Apache2目录下的conf文件夹,修改httpd.conf文件,在最后一行加入下行,添加一个额外的mod_jk.conf文件:

include "D:\Apache Group\Apache2\conf\mod_jk.conf"

5、在Apache2/conf文件夹下建立一个mod_jk.conf的文件,加入如下内容:

#加载mod_jk Module
LoadModule jk_module modules/mod_jk.so
 
#指定 workers.properties文件路径
JkWorkersFile conf/workers.properties
 
#指定请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /*.jsp controller


6、复制mod_jk.so文件到Apache2/modules文件夹中,此问件是tomcat用来连接apache服务器的配置
7、在Apache2/conf文件夹中添加一个文件workers.properties,加入如下内容:

worker.list = controller,tomcat1,tomcat2,tomcat3  #server 列表
 
#========tomcat1========
 
worker.tomcat1.port=8009         #ajp13端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
 
#========tomcat2========
 
worker.tomcat2.port=9009       #ajp13端口号,在tomcat下server.xml配置,默认9009
worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
 
#========tomcat3========
 
worker.tomcat3.port=9010      #ajp13端口号,在tomcat下server.xml配置,默认9010
worker.tomcat3.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat3.type=ajp13
worker.tomcat3.lbfactor = 1   #server的加权比重,值越高,分得的请求越多
 
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3   #指定分担请求的tomcat
worker.controller.sticky_session=1

8、此时开始配置tomcat集群,目前我们有三个tomcat应用服务器为tomcat1,tomcat2,tomcat3

tomcat1中我们使用其初始配置,然后配置tomcat2,打开tomcat2中的conf/server.xml ,修改以下配置。

此处的<Server>节点与<Connector>节点三个tomcat集群中需要不一致,这样在同一个PC中就可以启动多个tomcat

AJP的设置端口是将tomcat配置到apache服务器中的配置,其port端口必须和workers.properties中配置的一致


配置tomcat3的时候和tomcat2配置类似,Server与Connector节点与之前两个不一致就可以

9、测试 建立一个web项目名为test,然后在index.jsp中添加这样一句话


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
     
    <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
  </head>
   
  <body>
    This is my JSP page. <br>
    <%
        System.out.println("I Love You China !");
       
    %>


  </body>
</html>
然后将这个web项目放到三个tomcat中的webapps中,启动apache,Tomcat1,Tomcat2,Tomcat3,在浏览器中输去localhost:80/test/index.jsp,此处构架中用户访问apache服务器,然后apache服务器自动将用户请求转发给不同的tomcat应用服务器。可以看见测试效果。


10、Apache服务器与Tomcat应用服务器 负载均衡搭建完成。


0 0
原创粉丝点击