windows Apache+Tomcat负载均衡服务器搭建

一、安装Apache

Apache

版本:Apache 2.4.25 x64

下载地址:https://www.apachehaus.com/cgi-bin/download.plx下载的是zip包,直接解压)

下载的是zip包,直接解压到E:\apache\Apache24目录。使用zip包的Apache需要注意两个地方:

1、修改默认的路径

按照Apache默认的配置我们应当将Apache24硬盘的根目录下,但是我们没有放置在根目录下所以需要配置,进入conf目录下打开httpd.conf文件,在38行有这样两行代码:

?
1
2
Define SRVROOT "/Apache24" 
ServerRoot "${SRVROOT}"
修改为安装Apache的所在目录:
?
1
2
Define SRVROOT "E:\apache\Apache24"
ServerRoot "${SRVROOT}"

如果不修改会提示错误:
httpd.exe: Syntax error on line 39 of D:/Android_Develop_Tools/httpd-2.4.23-x64-
vc14/Apache24/conf/httpd.conf: ServerRoot must be a valid directory

2、安装Apache服务

打Apache Service Monitor窗口,如果Service status中没有Apache服务,就需要将Apache服务安装到Windows的服务中。

以管理员身份打CMD命令窗口,输入安装Apache服务命令。

?
1
httpd.exe -k install
安装后的效果:

\

二、安装 mod_jk 连接模块

下载地址:https://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/

1、mod_jk负责Apache连接Tomcat.。将下载下来的mod_jk.so复制到E:\apache\Apache24\modules目录下。

2、修改httpd.conf文件,在该文件最后加上以下代码。

?
1
Include conf/mod_jk.conf
3、创建mod_jk.conf文件

在E:\apache\Apache24\conf目录下创建mod_jk.conf文件,文件内容如下:

?
1
2
3
4
5
6
7
8
9
10
#加载mod_jk Module    
LoadModule jk_module modules/mod_jk.so    
     
#指定 workers.properties文件路径    
JkWorkersFile conf/workers.properties    
     
#指定那些请求交给tomcat处理, "controller" 为在workers.propertise里指定的负载分配控制器    
JkMount /*.jsp controller
JkMount /*. do controller
JkMount /*.htm controller
4、创建workers.properties文件

在E:\apache\Apache24\conf目录下创建workers.properties文件,文件内容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
worker.list = controller,tomcat1,tomcat2,tomcat3  #server 列表     
#========tomcat1========     
worker.tomcat1.port= 8109       #ajp13 端口号,在tomcat下server.xml配置,默认 8009     
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址     
worker.tomcat1.type=ajp13     
worker.tomcat1.lbfactor = 1    #server的加权比重,值越高,分得的请求越多     
      
#========tomcat2========     
worker.tomcat2.port= 8209       #ajp13 端口号,在tomcat下server.xml配置,默认 8009     
worker.tomcat2.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址     
worker.tomcat2.type=ajp13     
worker.tomcat2.lbfactor = 2    #server的加权比重,值越高,分得的请求越多 
 
#========tomcat2========     
worker.tomcat3.port= 8309       #ajp13 端口号,在tomcat下server.xml配置,默认 8009     
worker.tomcat3.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址     
worker.tomcat3.type=ajp13     
worker.tomcat3.lbfactor = 2    #server的加权比重,值越高,分得的请求越多    
      
#========controller,负载均衡控制器========     
worker.controller.type=lb     
worker.controller.balanced_workers=tomcat1,tomcat2,tomcat3   #指定分担请求的tomcat     
worker.controller.sticky_session= 1
三、安装tomcat

安装3个tomcat,最重要的一点就是修改server.xml文件中的端口。注意标红的字体部分,这是需要修改的地方。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--?xml version= '1.0' encoding= 'utf-8' ?-->
<!--如果多个tomcat部署在同一台服务器中,此处的关闭tomcat的端口需要更改,不能冲突-->
<server port= "8105" shutdown= "SHUTDOWN" >
   <listener classname= "org.apache.catalina.startup.VersionLoggerListener" >
   
   <listener classname= "org.apache.catalina.core.AprLifecycleListener" sslengine= "on" >
   <listener classname= "org.apache.catalina.core.JreMemoryLeakPreventionListener" >
   <listener classname= "org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" >
   <listener classname= "org.apache.catalina.core.ThreadLocalLeakPreventionListener" >
 
   <globalnamingresources>
     <resource auth= "Container" description= "User database that can be updated and saved" factory= "org.apache.catalina.users.MemoryUserDatabaseFactory" name= "UserDatabase" pathname= "conf/tomcat-users.xml" type= "org.apache.catalina.UserDatabase" >
   </resource></globalnamingresources>
   <service name= "Catalina" ></service></listener></listener></listener></listener></listener></server>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!--如果使用apache整合,那么此配置可以注释,因为apache是通过ajp协议来通信的,tomcat并不会直接暴露出来-->
     <connector connectiontimeout= "20000" port= "8180" protocol= "HTTP/1.1" redirectport= "8443" >
<!--如果多个tomcat部署在同一个服务器中,此处的ajp协议端口必须不一样,并且需要增加jvmRoute属性,该属性的值即为workers.properties中的tomcat的名称-->
     <connector jvmroute= "tomcat1" port= "8109" protocol= "AJP/1.3" redirectport= "8443" >
 
     <engine defaulthost= "localhost" name= "Catalina" >
       
       <cluster classname= "org.apache.catalina.ha.tcp.SimpleTcpCluster" >
       
       <realm classname= "org.apache.catalina.realm.LockOutRealm" >
         <realm classname= "org.apache.catalina.realm.UserDatabaseRealm" resourcename= "UserDatabase" >
       </realm>
 
       <host appbase= "webapps" autodeploy= "true" name= "localhost" unpackwars= "true" >
         <valve classname= "org.apache.catalina.valves.AccessLogValve" directory= "logs" pattern= "%h %l %u %t " prefix= "localhost_access_log" s= "" suffix= ".txt" >
 
       </valve></host>
     </realm></cluster></engine>
   
 
</connector></connector>
完成以上步骤,基本就可以测试了,但是Session还没有达到共享。

四、Session共享
在web.xml中加入。

?
1
2
3
4
5
<!--?xml version= "1.0" encoding= "UTF-8" ?-->
   <display-name>tomcatCluster</display-name>
   <distributable>
</distributable></web-app>
五、测试

创建Web工程,写一个JSP。部署到tomcat1、tomcat2、tomcat3服务器,启动Apache、3个Tomcat服务器。在浏览器中输入https://localhost/TomcatCluster/test.jsp。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<%@ page contentType= "text/html; charset=UTF-8" %>  
<%@ page import = "java.util.*" %>  
 
<title></title>
<% System.out.println( "SessionID:" + session.getId()); %> Server Info: <% out.println(request.getServerName() + " : " + request.getServerPort()+"<br>
");%> <% out.println(" <br>
ID " + session.getId()+" <br>
"); // 如果有新的 Session 属性设置 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><br>
"); 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 name= "dataName" size= "20" type= "text" ><br>
     数值:<input name= "dataValue" size= "20" type= "text" ><br>
     <input type= "submit" > </form>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黑夜照亮前行的路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值