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 ...
随机推荐
- CentOS-SendMail服务
title date tags layout music-id CentOS6.5 SendMail服务安装与配置 2018-09-04 Centos6.5服务器搭建 post 456272749 一 ...
- Linux下rabitMq的部署(源码安装)
简版yum安装:https://www.jianshu.com/p/46c22834aad5 一.环境安装 1,安装预环境 通过yum安装以下组件,运行命令: [root@rabbitmqserver ...
- Nuxt.js 踩坑笔记 - 缓存向
零.前言 最近参与了一个立足 seo 的移动端项目,公司前端工程主栈 vue,所以理所当然的用上了 nuxt,UI 主要选择了 Vant. 一.公共列表页的缓存 公共列表页由于数据量较大,故需要滚 ...
- get 传中文,可以通过下面这种方式
window.location.href=encodeURI("<%=path%>/XXX.XXX?name=中文"); 然后在后台通过new String(reque ...
- 教你如何将txt复制到excel的各个单元格;并解决科学计数法显示问题及导致的个位数变0问题
1.如果你的txt或log等文件中的数据每个数据刚好都回车了,那么直接粘贴到excel即可: 2.如果你的txt或log等文件中数据较多,回车之后的每一行数据仍需再次分列,那么要求:每一行中需要分列的 ...
- ChatterBot聊天机器人呢结构(五):ChatterBot对话流程
原文地址:http://www.bugingcode.com/blog/ChatterBot_Dialogue_process.html 创建机器人 部署机器人的各种属性,根据前面的章节里聊天机器人的 ...
- Scrapy初体验(一) 环境部署
系统选择centOs 7,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为了 页面抓取 (更确切来说, ...
- MySQL5.7主从复制slave报Last_Errno: 1146错误解决
前提:由于slave磁盘未及时扩容原因导致磁盘即将写满,为了不影响业务将slave实例里一个10G的库drop了(项目前期建的库,数据现在已不使用了),然后又drop了master上的该库(对于大库建 ...
- SIM卡的消失会让运营商们恐慌吗?
中国移动.联通.电信三大运营商原本高高在上,每天乐滋滋地数钱数到手抽筋,但近年来移动互联网的快速普及,让运营商的制霸状态不复存在.成为众多互联网公司的"流量通道",语音.短信等业 ...
- android 中webview的屏幕适配问题
两行代码解决WebView的屏幕适配问题 一个简单的方法,让网页快速适应手机屏幕,代码如下 1 2 WebSettings webSettings= webView.getSettings(); we ...