文档章节

Apache+Tomcat集群配置

剧与
 剧与
发布于 2017/03/24 16:54
字数 1261
阅读 67
收藏 0

环境信息:

系统版本:Win7(64位)

Tomcat版本:apache-tomcat-8.0.9

Apache版本:httpd-2.4.25-x64-vc14-r1.zip

mod_jk版本:tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip

一、Apache下载安装

  1. Apache下载

官网地址:http://http://www.apachehaus.com/cgi-bin/download.plx

2.解压Apache

输入图片说明

3.修改配置文件httpd.conf

把SRVROOT改成文件夹路径 (38行)

Define SRVROOT "D:/apache2.4/Apache24"  
ServerRoot "${SRVROOT}"

4.安装Apache

进入DOS命令,到D:\apache2.4\Apache24\bin目录下 输入安装命令:

httpd -k install

5.启动Apache

有两种方式:

1.安装路径下双击ApacheMonitor.exe,就会出现图形化界面(主界面右下角会出现一个apache的图标),在这里可以启动/停止/重新启动apache服务器。 2.在命令行里输入 httpd -k start

其他命令: apache -k uninstall //卸载 httpd -k restart //重启 httpd -k stop //停止

二、部署tomcat集群

1 创建Tomcat-Cluster目录

在D盘下新建Tomcat-Cluster文件夹,在Tomcat-Cluster下新建两个文件夹Tomcat1,Tomcat2

2.将Tomcat(apache-tomcat-8.0.9文件夹)下的文件拷贝到Tomcat1

输入图片说明

  1. 创建测试项目TestCluster

在D:\ Tomcat-Cluster\Tomcat1\webapps下,创建TestCluster文件夹,然后将ROOT文件夹下的WEB-INF文件夹拷贝到TestCluster下

打开TestCluster\WEB-INF\web.xml

在</web-app>上面添加<distributable/>

(设置<distributable/>,即表明集群下某一节点生成或改变的Session,将广播到该集群的其它节点)

在TestCluster文件夹下新建index.jsp

输入图片说明

4.修改Tomcat1的Server.xml(Tomcat1\conf\Server.xml)

  • a. 将Server标签下的8005端口改为7005,Connector标签下8080,8009端口改为7080,7009(为了避免端口冲突)
  • b.在Engine标签内添加jvmRoute属性,将其设置为” Tomcat1”
  • c.将Cluster标签的注释打开
<?xml version='1.0' encoding='utf-8'?>

<!--将端口号由8005改为7005 -->
<Server port="7005" shutdown="SHUTDOWN">
  <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 name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>
  <Service name="Catalina">
    
	<!--将端口号由8080改为7080 -->
	<Connector port="7080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    
	<!--将端口号由8009改为7009 -->
	<Connector port="7009" protocol="AJP/1.3" redirectPort="8443" />
	
	<!--在Engine标签添加jvmRoute属性-->
	<Engine name="Catalina" defaultHost="localhost" jvmRoute="Tomcat1">
      
	  <!--将Cluster标签的注释去掉-->
	  <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 name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
		<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
      </Host>
    </Engine>
  </Service>
</Server>

5.配置Tomcat2

将Tomcat1下的文件拷贝到Tomcat2

修改Tomcat2的Server.xml

  • a.将端口7005,7080,7009改为9005,9080,9009

  • b.Engine标签内的jvmRoute改为” Tomcat2”

  • c.将Cluster标签的注释打开

6.启动Tomcat集群

(如果之前配置过Tomcat的环境变量,要先将Tomcat的环境变量删除)

双击Tomcat1\bin\startup.bat、Tomcat2\bin\startup.bat

在浏览器下输入:http://localhost:7080/TestCluster/index.jsp,即可访问集群下Tomcat1节点的TestCluster

输入图片说明

在浏览器下输入:http://localhost:9080/TestCluster/index.jsp,即可访问集群下Tomcat2节点的TestCluster

输入图片说明

可以看到Tomcat1、Tomcat2两个节点的Session一样

###** 三、整合Apache与Tomcat集群**

整合Apache与Tomcat集群可以使用mod_proxy_balancer也可以使用mod_jk

这里我们使用mod_jk。

1.解压tomcat-connectors-1.2.40-windows-x86_64-httpd-2.4.x.zip,可得到”mod_jk.so”。将”mod_jk.so”拷到Apache 2.2\modules目录下

2.在Apache 2.2\conf下新建workers.properties

worker.list=controller,Tomcat1,Tomcat2
#========Tomcat1========
worker.Tomcat1.port=7009
worker.Tomcat1.host=localhost
worker.Tomcat1.type=ajp13
worker.Tomcat1.lbfactor=1
#========Tomcat2========
worker.Tomcat2.port=9009
worker.Tomcat2.host=localhost
worker.Tomcat2.type=ajp13
worker.Tomcat2.lbfactor=1
#========controller========
worker.controller.type=lb
worker.controller.balanced_workers=Tomcat1,Tomcat2
worker.controller.sticky_session=false

(如果worker.controller.sticky_session设为true,则同一用户的同一session始终和一个Tomcat节点交互)

3.在Apache 2.2\conf下新建mod_jk.conf

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkMount /* controller

LoadModule - 加载modules/mod_jk.so模块 JkWorkersFile-workers.properties的位置 JkMount-Apache将localhost下的所有请求转发给controller处理

4.修改httpd.conf

打开httpd.conf(Apache 2.2\conf\httpd.conf),将尾部的include conf/mod_proxy_balancer.conf注释掉,并添加一行代码

include conf/mod_jk.conf

5.测试

重启Apache,然后在浏览器下输入http://localhost/TestCluster/index.jsp,可看到如下页面

输入图片说明 输入图片说明

两次请求,分别转发到了Tomcat1节点、Tomcat2节点,并且两个节点的Session一样

Apache和Tomcat集群整合后,Apache是接收请求的入口,它根据设置的转发请求条件,决定将哪些请求转发个Tomcat处理

通常的应用场景为:Apache作为Web Server,它只负责处理静态页面,而动态页面会交给Tomcat(App Server)处理

###四、批处理Tomcat

由于一个个去启动tomcat太麻烦,所以这里写了一个脚本进行批处理

@echo off
title tomcat集群管理

:allStart
cls
echo.
echo 1.开启tomcat
echo 2.关闭tomcat
echo e.退出
echo.

set in=
set /p in=请输入:

if "%in%"=="1" goto startAllWork
if "%in%"=="2" goto endAllWork
if "%in%"=="e" goto allClose

:startAllWork
echo 正在启动tomcat集群服务
echo 启动tomcat1
set JAVA_HOME=D:\Java\jdk1.8.0_45
set CATALINA_HOME=D:\Tomcat-Cluster\tomcat1
call="%CATALINA_HOME%\bin\startup.bat"

echo 启动tomcat2
set JAVA_HOME=D:\Java\jdk1.8.0_45
set CATALINA_HOME=D:\Tomcat-Cluster\tomcat2
call="%CATALINA_HOME%\bin\startup.bat"

echo 启动完毕!
echo.
pause
goto allStart

:endAllWork
echo 正在关闭tomcat集群服务
echo 关闭tomcat1
set CATALINA_HOME=D:\Tomcat-Cluster\tomcat1
call="%CATALINA_HOME%\bin\shutdown.bat"

echo 关闭tomcat2
set CATALINA_HOME=D:\Tomcat-Cluster\tomcat2
call="%CATALINA_HOME%\bin\shutdown.bat"

echo 关闭完毕!
echo.
pause
goto allStart

:allClose
echo 按任意键退出
pause

exit

输入图片说明

参考文章:

http://http://blog.csdn.net/flyliuweisky547/article/details/21293071?utm_source=tuicool&utm_medium=referral

© 著作权归作者所有

剧与

剧与

粉丝 15
博文 47
码字总数 41334
作品 0
成都
后端工程师
私信 提问

暂无文章

iptables删除命令中的相关问题

最近在做一个中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误。iptables: Bad rule (does a matching rule exist in t...

xiangyunyan
53分钟前
4
0
IT兄弟连 HTML5教程 HTML5表单 新增的表单属性1

HTML5 Input表单为<form>和<input>标签添加了几个新属性,属性如表1。 1 autocomplete属性 autocomplete属性规定form或input域应该拥有自动完成功能,当用户在自动完成域中开始输入时,浏览器...

老码农的一亩三分地
今天
7
0
OSChina 周五乱弹 —— 葛优理论+1

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享米津玄師的单曲《LOSER》: mv中的舞蹈诡异却又美丽,如此随性怕是难再跳出第二次…… 《LOSER》-...

小小编辑
今天
1K
23
nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
7
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部