apache搭建Tomcat集群(Cluster)
搭建集群:
apache:特点处理静态资源(html 图片 js等) apache的请求操作,Cluster工具
tomcat:特点处理动态资源
apache+tomcat(apache是web服务器,tomcat是应用(java)服务器它是 apache组织在j2EE的JSP和Servlet标准环境下开发的一个JSP服务器)
下载Apache服务器工具并启动
1.打开网页,地址为: http://httpd.apache.org/ 点击Download 界面如下:

2.选择Stable Release - Latest Version(稳定版本——最新版本),它会自动跳转到当前页面的下载资源版本的位置,选择File for Microsoft Windows版本


3.跳转新的页面,选择下载的镜像地址的,提示这个那个地方的镜像,我选择的是第一个是来自德国的地址

4.这个页面点击此处,再次跳转到别的页面之后会进行自动下载。


5.下载后,文件如下

如上的操作apache服务工具已经准备就绪。开始准备环境
环境准备
1.在电脑上的配的盘符,创建一个文件夹再次我取的名称是Cluster里面存放刚刚下载好并已经进行解压的Apache服务工具

2.在conf目录下的httpd.conf文件进行Apache的服务地址配置,定义为宝宝们自己存放的位置


3.将apache配置注册为services系统服务
使用管理员身份打开CMD命令行
输入: "D:\Cluster\Apache24\bin\httpd.exe" -k install -n apache24(宝宝们可随意编写,但是建议和软件的名称相关,毕竟你们都是专业的)

我第一输入,是因为我的电脑安装了VM,我将它的服务给暂停了
第二次输入,前面提示还是报错,但是具体本人也不清楚,但是后面提示服务显示安装成功。
打开电脑的服务,或者win+r键,出现运行窗体,输入services.msc后回车,可以看到我们的系统服务中已经包含了宝宝们刚刚创建的apache的服务名

,当让了,能够创建就能够删除,删除命令为:
sc delete apache24(宝宝们之前创建的名字)
注意:如有宝宝不知道自己的端口被那个软件所占用,简单方法
可以打开任务管理器,点击详细信息

专业必备方法命令:
查看某个具体的端口被占用的情况
netstat -ano | findstr "80"

4.以上的操作,厉害的宝宝们应该已经完成了,那么我们就该启动服务了,之后Apache配置完成了。Give Me Five

注意了注意了注意了,到启动的时候很多人会遇见错误,如下所图所示:遇到这种问题,网上有很多的决解方案,而我说一下我遇到这个问题的原因,端口没有被占用可以启动还是报错。
遇到的一些错误

首先打开此电脑——管理——可以查看电脑的应用日志。


看完之后,我的问题是这样的

我根据排错的原因发现,端口没有被占用,而真正的原因就是因为我的D盘下有两个Apache24的文件
一个位置在D:\Cluster\Apache24
另一个位置了在D:\Apache24
所以导致启动报错的原因所在了。所以哦专业的小宝宝们注意细节了!!!
5.最后我们可以进行Apache的配置测试了
打开浏览器,输入localhost即可,因为它默认的端口好就是80,出现如下如,恭喜宝宝们,你们已经完美的完成了Apache配置。干的漂亮!!!很棒!!!

Cluster通过Web服务器,配置java服务器,接下来进行Tomcat的配置。
Tomcat集群搭建
1.将创建的两个Tomcat复制到Clustere文件中去,进行部署,当然了因为是模拟两个不同的Tomcat那么它的名称是不能一样的,需要重命名进行区分。
注意: 当本地有两个Tomcat时,我们需要修改端口号,不修改同样的端口号会导致第二个Tomcat启动失败,因为端口被占用了

2.打开Tomcat目录中conf下文件的server.xml进行端口的修改。
注意运行一个Tomcat服务器需要3个端口分别是:servlet:8005、http:8080、ajp:8009三个默认的端口号
由于有两个Tomcat名称分别是如下,为它们设置端口号用于区分
Tomcat9-A:默认端口号不变
Tomcat9-B:9005、9090、9009



3.修改服务器的引擎:Engine(使用Cluster需要配置),还是位于Servlet.xml配置文件中。宝宝们,这次需要两个Tomcat服务器配置都进行修改。
引擎表示处理的入口点(在Catalina中)
每一个要求。Tomcat的引擎实现是独立的
分析请求中包含的HTTP标头,并传递它们
转到适当的主机(虚拟主机)。
文档在/docs/config/engine.html—>
你应该通过AJP ie设置jvmRoute来支持负载平衡
这段话是Tomcat中告诉我们的,如果需要Tomcat支持负载平衡就需要设置jvmRoute,宝宝们接下来我们进行jvmRoute的配置
<!-- defaultHost 代表一个虚拟机主机 jvmRoute jvm路由功能,请求给了apache,apache它是怎么进行查看是那个Tomcat服务器,它可以通过我们配置的路由名称进行设置 -->


4.打开集群开关(server.xml)默认为关闭的,将注解去掉即可开启
注解中又说如何配置可以参照下面的案例。
位置在Tomcat——webapp——docs——cluster-howto.html
Tomcat——webapp——docs——config——cluster.html

最后Tomcat集群配置结束和Apache启动完成之后进行整合。
整合需要一个插件:mod_jk.so
再次下载mod_jk.so
1.网址为: http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/windows/
mod_jk.so这个文件在这个网址下zip的一个文件中。

所以需要先下载这个zip文件,下载完后将它解压找到mod_jd.so放大到Apache24——modules文件下

2.对mod_jk.so进行配置,由于次文件是个二进制文件,那些进行配置就需要重新创建一个properties文件,我在Apache——conf文件下创建一个名为这个的worker.properties文件。进行配置

配置信息如下:
###定义了worket的对象列表,要配置多少个Tomcat就写多个对象列表 都需要在后文进行配置
###它只是一个标识符,不一定要和Tomcat\conf\下的server.xml中jvmRoute="tomA" 这个名称一样
###因为次文件不是根据jvmRoute来查看的
###controller
apache的分流(分配那个Cluster服务器),也叫控制器
worker.list=controller,TomA,TomB
###TomcatA
#type 协议类型 mod_jk有4个类型:ajp12、ajp13、jni、lb
worker.TomA.type=ajp13
#负载平衡的比重,比如有100请求,可是服务器是两个,那么可以设置一下多少请求给A,多少请求给B 3-7 5-5
#设置为1那么请求就是两个服务器1比1请求,设置A为1B为2,那么请求就是1给A,2、3请求给B这么轮着来
worker.TomA.lbfactor=1
#port服务器协议的端口号
,此配置和type结合使用,Tomcat的三大端口
#如type=ajp13,此时port的值就是Tomcat服务器中ajp13协议的端口号
worker.TomA.port=8009
#host 服务器IP地址,既然是Cluster那么那肯定有自己的服务器地址 ,本机电脑可以写localhost
worker.TomA.host=localhost
###TomcatB
worker.TomB.type=ajp13
worker.TomB.lbfactor=2
worker.TomB.port=9009
worker.TomB.host=localhost
###controller
#控制器没有负载均衡#lb表示这个控制器负载平衡worker,可以设置分流参与负载均衡的Tomcat服务器
#使用controller控制器告诉apache可以分流那些服务器
worker.controller.type=lb
worker.controller.balanced_workers=TomA,TomB
#分布式session策略
#举个例子:宝宝A现在想apache发送了登录的请求,那登录的请求apache是给了我们的TomA这个服务器,那么宝宝A的session
#信息就存储在了TomA服务器上,可以当我们宝宝A再一次请求apache时,这是apache却将请求给了我们TomB这个服务
#器,可是我们TomB服务器上却没有存储宝宝A的Session值,那宝宝A就又需要登录一次了,宝宝A表示好烦,我不要这样
#那就有了session的策略:
#1.sticky策略,绑定分配session,当我们的宝宝A第一次登录时apache分配的服务器是TomA,那么以后都用
#TomA来处理我们宝宝A的信息,可是这样有一个弊端,那就是无法失败迁移,但我们的TomA服务器坏了,
#那么宝宝A的session信息就没有了
#2. session广播(自动同步session)策略:还是我们的宝宝A进行登录,每次登录后不管apache分配给那个服务器,那个服务器都
#将会把apache分配的那个session信息,进行广播传输。就是将这个session的信息自动同步给每个Tomcat服务器都发放一份
#弊端更大,服务器太多,会造成广播风暴(没次保存一个session就要广播给每个服务器,这提高了性能的开销)。
#3.集中管理方式(推荐):在apache和tomcat中添加一个数据库来进行保存session,这样宝宝A每次不管请求
#的是那个服务器,他都可以通过Tomcat服务器的去访问数据库查看宝宝A的session信息是否存在
#True就是sticky策略,false就是session广播策略
worker.controller.sticky_session=false
3.宝宝们不要着急,不要烦躁,我还需要在Apache——conf文件创建一个mod_jk.conf配置,用于加载(1、2两步的配置),之前虽然有了mod_jk.so和它的配置worker.properties,但是需要给他进行加载
#加载mod_jk.so和worker.propertity
#加载路径,它的加载路径是从Apache24的根目录开始的
LoadModule jk_module modules/mod_jk.so
#加载workers.propertity
JkWorkersFile conf/worker.properties
#分流什么 /*分流所有请求(JSP、Servlet)
JkMount /* controller
4.宝宝们别急快了,在第3步是已将1、2步进行了读取配置,可以第3步没有人认识它,那么又需要在apache24目录下的conf的httpd.conf配置一下,就是apache程序来认识它自动加载第3步
在httpd.conf中最后一行添加
include conf/mod_jk.conf
读取这个文件
前期工作基本已经完成了,宝宝们幸苦了!!!
因为集群主要是为了部署项目的。
所以我们创建一个简单的web项目,之后将这个项目发布在tomcatA和tomcatB两个服务其的的部署目录里面\webapps下

一个简单的web项目,它的基本结构如下:


JSP代码如下:
<body>
</br>
服务器地址
<%
out.print(request.getRemoteAddr());
%>
</br>
服务器端口
<%
out.print(request.getLocalPort());
%>
</br>
sessionId
<%
out.print(session.getId());
%>
</body>
5.最后一步了,只要在web.xml中加上一句话,就可以让session进行数据的同步了
<distributable />
最终上面部署了这么久我们可以看到成果了!!!准备测试
启动apache和两个Tomcat服务
这里需要注意一下因为是本地电脑(单机环境)所以环境配置记得需要将之前配置的Tomcat环境CATALINA_Home给删除掉,因为如果加上这个环境变量,那么我们每次启动他使用的都是同一个Tomcat服务器这样是不行的

分别启动Tomcat的服务

正常启动完成两个Tomcat服务器后之这样的:

,如果点击启动闪退,一般是CATALINA_Home环境变量没有删除
开始测试:
第一次请求:

第二次请求:

为什么服务器地址为::1了。
C:\Windows\System32\drivers\etc

最终终于成功进程集群的搭建了,不容易呀!!!!!如用小伙伴不明白的地方可以在评论区@本人,并将问题可以发布到评论区,看到后我会进行答复!!!
所以需要先下载这个zip文件,下载完后将它解压找到mod_jd.so放大到Apache24——modules文件下
apache搭建Tomcat集群(Cluster)的更多相关文章
- 使用apache搭建tomcat集群
1.安装apache 1.1 下载ApacheX64.rar,并解压 1.2 修改Apache24\conf\httpd.conf文件 配置根目录: 配置ip和端口 1.2 安装apache服务器 以 ...
- Linux下搭建tomcat集群全记录(转)
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法.为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:ap ...
- nginx的简单使用和使用nginx在windows上搭建tomcat集群
nginx是一款轻量级的web服务器,常用的作用为服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 1.为什么我们要使用Nginx? 反向代理: 反向代理(Reverse Proxy ...
- linux下利用httpd搭建tomcat集群,实现负载均衡
公司使用运营管理平台是单点tomcat,使用量大,或者导出较大的运营数据时,会造成平台不可用,现在需要搭建tomcat集群,调研后,决定使用apache的httpd来搭建tomcat集群.以下是搭建步 ...
- Linux下搭建tomcat集群全记录
(转) Linux下搭建tomcat集群全记录 2011-10-12 10:23 6133人阅读 评论(1) 收藏 举报 tomcatlinuxapacheinterceptorsession集群 1 ...
- window xp Apache与Tomcat集群配置--转载
转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...
- Tomcat集群---Cluster节点配置(转)
<!-- Cluster(集群,族) 节点,如果你要配置tomcat集群,则需要使用此节点. className 表示tomcat集群时,之间相互传递信息使用那个类来实现信息之间的传递. cha ...
- 【转】Tomcat集群Cluster实现原理剖析
此文章来源:http://zyycaesar.iteye.com/blog/296606 此文章作者:zyycaesar 对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保 ...
- Apache配置tomcat集群
APACHE 2.2.9+TOMCAT6.0配置负载均衡 目标: 使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1. Apache 做为 HttpSe ...
随机推荐
- Linux下安装mysql(yun方式)
1.进入下载好的mysql版本 cd /usr/local/mysql 2.解压安装包 tar -xzvf mysql-5.7.11.tar.gz 3.改名 直接改或者 mv 文件名 要改的文件名m ...
- 在mysql中生成数据库和数据表
#创建数据库CREATE DATABASE s4day65 DEFAULT CHARSET utf8; #班级表 CREATE TABLE class (id INT NOT NULL AUTO_IN ...
- WWT在中国:一个改变了人类探索宇宙方式的少年梦想
想象一下,在宇宙中超光速飞行,访问行星.星云.恒星和小行星将是多么美妙的体验.现在,中国的孩子们已经可以坐在屋子里,仰望穹顶,去探索星球之间无穷的奥秘. 在微软研究院.微软亚洲研究院及中国科学院国家天 ...
- Skipping MapperFactoryBean with name 'sysUserMapper' and 'com.buding.system.mapper.SysUserMapper' mapperInterface. Bean already defined with the same name!
前几天整体看了一下SpringBoot的简介,觉得看不如自己动手做,于是动手做一个简单的用户管理.启动的时候遇到了Skipping MapperFactoryBean with name 'sysUs ...
- 微软推出精简版Windows10Lean系统意欲何为?
提起Windows系统,自然无须多言都知道它的重要性.在经历了Windows Vista的失败. Windows 7的成功.Windows 8的平庸和Windows 10的复兴之后,微软算是积累下了大 ...
- python3多进程爬虫(第二卷)
上卷中讲到,我有4个进程,可是我要同时爬取20+数据怎么办,很明显上卷的语法公式不可以,所以现在我引入线程池 现在看一下线程池的语法 看一下爬虫: 注意圈中重点
- 押宝在Apple Watch的智能手表游戏玩得转吗?
Watch的智能手表游戏玩得转吗?" title="押宝在Apple Watch的智能手表游戏玩得转吗?"> 如果你给法拉利跑车贴上金箔,会被认为是俗气.但若在Ap ...
- Parentheses Balance (括号平衡)---栈
题目链接:https://vjudge.net/contest/171027#problem/E Yes的输出条件: 1. 空字符串 2.形如()[]; 3.形如([])或者[()] 分析: 1.设置 ...
- lvs/dr+keepalived搭建成功后,开启防火墙,虚拟IP不能访问,但是真实IP却可以访问
lvs/dr+keepalived搭建成功后,开启防火墙,虚拟IP不能访问,但是真实IP却可以访问,如果关闭防火墙虚拟IP就可以访问网站了,这个问题肯定是防火墙在作怪. 经过这两的不懈奋斗和大家的帮助 ...
- 添砖加瓦:MySQL分布式部署
1.集群环境 管理节点(MGM):这类节点的作用是管理MySQLCluster内的其他节点,如提供配置数据,并停止节点,运行备份等.由于这类节点负责管理其他节点的配置,应该在启动其他节点之前启动这类 ...