Apache 2.4 + Tomcat7集群配置

1. 准备工作

首先下载Tomcat7 和Apache2.4

然后安装Apache,安装完成后在IE中输入localhost访问,如果出现It Works则表示Apache安装好了,然后解压缩到Tomcat1和Tomcat2两个目录中。

分别启动Tomcat1和Tomcat2看是否可以正常启动。

 

2. 配置Apache2.4

   ①打开conf/httpd.conf文件,加载以下模块。

#---------------------start------------------------
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

LoadModule speling_module modules/mod_speling.so
LoadModule ssl_module modules/mod_ssl.so
#----------------------end---------------------

 ② 如果你想看到小猫页面,

<IfModule dir_module>
    DirectoryIndex index.html
< /IfModule>

在上面的index.html下面添加index.jsp就可以了

 

③去掉Include conf/extra/httpd-vhosts.conf的注释标记#。

 

④在文件末尾加反向代理

ProxyRequests Off
< proxy balancer://cluster>
     BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
     BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2

#BalancerMember ajp://octvoa2.octvision.com status=+H
< /proxy>

使用HTTP和stickysession 参考:

Header add Set-Cookie "ROUTEID=.%{BALANCER_SESSION_STICKY}e; path=/" env=BALANCER_SESSION_STICKY
ProxyRequests Off
 <proxy balancer://cluster>
      BalancerMember "http://app1.xxxx.com:80" route=jvm1
      BalancerMember "http://app2.xxxx.com:80" route=jvm2
 </proxy>
ProxyPass "/" "balancer://cluster/" stickysession=JSESSIONID|jsessionid scolonpathdelim=On

 

⑤修改conf/extra/httpd-vhosts.conf文件。

注释掉所有的dummy-host,添加以下内容,ServerName和ServerAlias修改为appache服务器的域名。

<VirtualHost *:80>
         ServerAdmin zengwei.shao@samsung.com
         ServerName localhost
         ServerAlias localhost
         ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
         ProxyPassReverse / balancer://cluster/
         ErrorLog "logs/lbtest-error.log"
         CustomLog "logs/lbtest-access.log" common
< /VirtualHost>

备注:如果需要对应多个端口,可以在httpd.conf中增加监听的端口,并在httpd-vhosts.conf中增加一个VirtualHost上面的内容,并修改端口就可以了。

 

6).增加apahce的并发数:

    window:在httpd.conf 中将 Include conf/extra/httpd-mpm.conf前#去掉,以使得http-mpm.conf生效。

   在httpd-mpm.conf中修改为如下:
   <IfModule mpm_winnt_module>

     ThreadLimit           12000
     ThreadsPerChild      10000
     MaxRequestsPerChild    20000

</IfModule>

在httpd.conf中去掉Include conf/extra/httpd-default.conf前的#以使httpd-default.php生效.

设置MaxKeepAliveRequests 10000

Timeout 20

7).增加网页查看apache服务器状态。

     去掉下面前面的#号;

     #LoadModule status_module modules/mod_status.so

      然后这个里面修改:Include conf/extra/httpd-info.conf    为如下信息:

<Location /server-status>
    SetHandler server-status
    Require host .xxxx.com
    Require ip 127
</Location>

<Location /server-info>
    SetHandler server-info
    Require host .xxxx.com
    Require ip 127
</Location>
可以通过url访问到server-status了,http://ip地址/server-status 或者server-info.

2.配置Tomcat

Tomcat2 的修改conf/server.xml

① <Server port="8005" shutdown="SHUTDOWN">修改为9005

 

②修改<Service name="Catalina">下的

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />中的8080为9080

③<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />修改为9009

 

④ <Engine name="Catalina" defaultHost="localhost">在末尾加 jvmRoute="jvm2"

同时修改Tomcat1的这个标签为jvmRoute="jvm1"

 

⑤<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>改为

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">

        <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

</Cluster>

6).不同的域名共享session<Context path="" docBase="C:\workspace\octv-anren" reloadable="true" sessionCookiePaht="/" sessionCookieDomain=".octanren.com"/>

配置完成之后,启动两个Tomcat测试一下Tomcat是否可以正常启动

如果可以正常启动,则进行下面步骤

 

在webApps下面添加Test目录,添加Test.jsp

<%@ page contentType="text/html; charset=GBK" %>
< %@ page import="Java.util.*" %>
< html><head><title>Cluster App Test</title></head>
< body>
Server Info:
< %
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
< %
  out.println("<br> ID " + session.getId()+"<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>

创建WEB-INF目录,创建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/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">
    <distributable />
  </web-app>

 

最后启动Apache2.4,在页面中输入localhost\test\test.jsp进行测试。

 

注意:Apache有可能启动不起来,那么解决方式是查看Apache安装目录下的logs目录下的error.log文件,

根据log文件解决可能存在的问题。直到Apache可以正常启动,至此Apache就可以正常启动了。

3.tomcat间共享session

      在web.xml中增加<distributable />就可以了。

4.tomcat间同步ehcache.

 

 

异常1.浏览器访问错误:

171853_spMk_2358083.png

后台对应的错误:
[Tue Jun 27 17:28:30.398777 2017] [proxy_ajp:error] [pid 1836:tid 3412] [client 202.104.106.65:60850] AH00992: ajp_read_header: ajp_ilink_receive failed
[Tue Jun 27 17:28:30.398777 2017] [proxy_ajp:error] [pid 1836:tid 3412] (120006)APR does not understand this error code: [client 202.104.106.65:60850] AH00878: read response failed from 172.16.3.21:6010 (applz1.octvisionland.com)
[Tue Jun 27 17:28:50.884760 2017] [proxy_ajp:error] [pid 1836:tid 3412] [client 202.104.106.65:60850] AH00992: ajp_read_header: ajp_ilink_receive failed
[Tue Jun 27 17:28:50.884760 2017] [proxy_ajp:error] [pid 1836:tid 3412] (120006)APR does not understand this error code: [client 202.104.106.65:60850] AH00878: read response failed from 172.16.3.22:6010 (applz2.octvisionland.com)

处理方式:下面的红色的端口是ajp的端口,不是http访问的端口。

185810_aj3p_2358083.png

异常1.浏览器访问错误:171853_spMk_2358083.png

 

异常2 :tomcat服务器运行时间长的Java程序,报错: (OS 10060)由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。  : AH01030: ajp_ilink_receive() can't receive header
[Wed Jul 19 17:40:47.756868 2017] [proxy_ajp:error] [pid 3260:tid 3156] (OS 10060)由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。  : AH01030: ajp_ilink_receive() can't receive header

解决办法:

<VirtualHost *:80>
 ServerName octvoa.octvision.com
 ServerAlias octvoa.octvision.com
 ProxyTimeout 3000
 ProxyPass / balancer://proxy/ stickysession=JSESSIONID timeout=2000  nofailover=On
 ProxyPassReverse / balancer://proxy/
 ErrorLog "logs/lb-error.log"
 CustomLog "logs/lb-access.log" common
</VirtualHost>

 

异常3:proxy: No protocol handler was valid for the URL错误解决办法

处理方法:
ProxyPass / balancer://mycluster/,后面一定要加“/”,而不是ProxyPass / balancer://mycluster
 

转载于:https://my.oschina.net/276172622/blog/793485

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值