您的位置:首页 > 运维架构 > 反向代理

window环境下apache+tomcat 反向代理集群配置教程

2017-07-25 18:26 459 查看

window环境下apache+tomcat 反向代理集群配置教程

首先声明一下下:

由于做这件事情花费了不少时间,搜索了N篇博文,所以在此贴出对我帮助最大的两篇文章的地址,感谢开放的互联网๑乛◡乛๑(侵删)

http://www.cnblogs.com/f1194361820/p/5110956.html


http://blog.csdn.net/houliukuan/article/details/46532015

PS:今日闲来无事,研究下apache+tomcat集群,在网上搜了好多片文章,这些文章有些是使用jk的方式实现的,有些是使用反向代理实现的,种类繁多,

且文章的时间比较久远(可能是本人太菜了)走了好多弯路,遇到不少问题,所以这里写个总结或者说是教程,方便有需要的同行作为参考。

环境及软件要求:

tomcat8.5 解压缩绿色版,apache server 2.2(安装版),jdk1.8(配置略),win7_64位电脑

零、本文章主要分为三步完成:

一、安装配置两个不同端口的tomcat

二、安装配置Apache server

三、apache+tomcat反向代理集群配置

一、安装配置两个不同端口的tomcat

    0.如果觉得我的排版和写法罗嗦 ,可以直接查看原作者文章 http://blog.csdn.net/houliukuan/article/details/46532015

    1.去官网下载window平台的解压版的tomcat包

因为本人为64位win7系统http://tomcat.apache.org/download-80.cgi#8.5.16,下载后的文件为apache-tomcat-8.5.16-windows-x64.zip

   


    2.将上边的apache-tomcat-8.5.16-window.zip解压后的文件夹复制两份,

          分别命名为tomcat8-1和tomcat8-2

    3.增加环境变量

        增加环境变量 CATALINA_HOME8_1,值为tomcat8-1(第一个tomcat)的地址;

        增加环境变量CATALINA_BASE8_1,值为tomcat8-1(第一个tomcat)的地址;

        增加环境变量CATALINA_HOME8_2,值为tomcat8-2(第二个tomcat)的地址;

        增加环境变量CATALINA_BASE8_2,值为tomcat8-2(第二个tomcat)的地址;

    4.1.修改tomcat8-1(第一个tomcat)中的startup.bat:

        把startup.bat中的所有的CATALINA_HOME字段替换成改为CATALINA_HOME8_1(可以直接用c+f全部替换)。

     4.2 修改tomcat8-1(第一个tomcat)中的catalina.bat:

        把catalina.bat中的CATALINA_HOME改为CATALINA_HOME8_1(可以直接用c+f全部替换),

        把catalina.bat中的CATALINA_BASE全部改为CATALINA_BASE8_1(可以直接用c+f全部替换)。

5.修改tomcat8-2(第二个tomcat)中的startup.bat和catalina.bat:,

步骤同上一步,记得替换对应变量

6 修改tomcat8-1(第一个tomcat)的conf/server.xml文件:

<Server port="8005" shutdown="SHUTDOWN">#把8005端口改为8006


<Connector port="8080" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" /> #把8080修改为8081
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> #把8009端口改为8019


<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">#添加jvmRoute="tomcat1",此处是为apache集群做准备


之后 ,在上边一行代码的下一行添加一下代码:

<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>

7.修改tomcat8-1(第一个tomcat)的的conf/context.xml:

将该文件的<C
c429
ontext> 修改为<Context distributable="true"> ,即新增属性distributable="true"

8.同6-7步骤,配置修改tomcat8-2(第二个tomcat)

配置修改tomcat8-2(第二个tomcat)的conf/server.xml和conf/context.xml,记得conf/server.xml的8080,8005,8009端口和jvmRoute属性不要和第一个tomcat重复

9.tomcat配置基本完成, 启动测试两个端口号的tomcat

可以分别点击各自的bin/startup.bat文件来启动,分别访问localhost:8081和localhost:8082(8081,8082端口号自己配置的自己知道)

二、安装配置Apache server

1.搜索安装apache server

下载window端apache http server安装文件 ,下载完成后一直点下一步完成安装(百度软件地址http://rj.baidu.com/soft/detail/14824.html?ald)

2.安装完成后,启动apache

在安装目录下点击启动/bin/ApacheMonitor.exe出现一下win窗口



点击start或者restart按钮,绿色图标表示启动成功 ,浏览器输入localhost:80 或者localhost,访问到默认内置的页面/htdocs/index.html即表示成功

3.如果无法正常启动 ,请检查电脑vc库是否完整.

三、apache+tomcat反向代理集群配置

1.经过以上步骤 ,两个不同的tomcat ,一个apache server已经可以分别独立运行了(如果不能 ,可以参考文章开头的链接或者自行搜索解决)

2.接下来就要对他们3个进行整合配置.(之后的所有步骤可以直接移步原文章http://www.cnblogs.com/f1194361820/p/5110956.html)

3.既然要使用代理方式访问肯定要有代理模块才行的。在${apacheserver}/config/httpd.conf中做如下配置:

3.1.放开注释 ,启用以下配置:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
如果要配置AJP协议,要mod_proxy_ajp.so前面的#去掉。

3.2 在httpd.cof文件最后加入以下代码:

<IfModule proxy_balancer_module>
# define a Load Balance Proxy based HTTP protocol
<IfModule proxy_http_module>
<Proxy balancer://myHttpLB>
#examples修改为tomcat-webapp目录下实际项目的名称,18080为两个tomcat的对应端口(8081或者8082,自己改的自己知道0.0),route为对应tomcat的jvmRoute的属性值,loadfactor为权重值,可以平均分配
BalancerMember http://localhost:18080/examples loadfactor=80 route=worker1
BalancerMember http://localhost:28080/examples loadfactor=20 route=worker2
</Proxy>

ProxyRequests off
ProxyPass /examples balancer://myHttpLB/ stickySession=JSESSIONID nofailover=Off
#examples修改为tomcat-webapp目录下实际项目的名称
ProxyPassReverse /examples balancer://myHttpLB/
</IfModule>

# define a Load Balance Proxy based AJP protocol
#<IfModule proxy_ajp_module>对应->如果要配置AJP协议,要mod_proxy_ajp.so前面的#去掉。这个配置话.. <IfModule proxy_http_module> 和<IfModule proxy_ajp_module>二选一就行
#<IfModule proxy_ajp_module>
# <Proxy balancer://myAjpLB>
#     BalancerMember ajp://localhost:18080/examples loadfactor=80 route=worker1
#  #    BalancerMember ajp://localhost:28080/examples loadfactor=20 route=worker2
# </Proxy>
#
ProxyRequests off
#  ProxyPass /examples balancer://myAjpLB/ stickySession=JSESSIONID nofailover=Off
#  ProxyPassReverse /examples balancer://myAjpLB/
# </IfModule>
</IfModule>


4.将web项目examples分别拷贝到俩个tomcat/webapps下 ,然后启动两个tomcat

5.ApacheMonitor.exe中启动apache

6.访问http://localhost/examples或者 http://localhost:80/examples
examples是两个tomcat/webapps下的应用,,所以肯定是可以访问到的。

7.session共享:

如果是javaweb项目 ,需要在项目的web.xml中的<web-app xxx=xxx> xxxx </web-app>节点之间加入标签 <distributable/> ,例如:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<distributable/>
</web-app>
这样 ,即使一个tomcat宕机了 ,session信息也不会重置 ,用户也不会再次登陆

9.ps:如果谁有或者知道关于window解压版的apache http server教程 ,可以留言给我 ,多谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: