tomcat 集群
集群分类
模向集群 tomcat分别运行在不同机器上
纵向集群 tomcat运行在同一机器上
load balance 负载幸均衡 由集群点分配后处理
high available 高可用性 交由一台节点处理,如果机器宕机,另一台顶上
集群架构中需要解决问题
1 上传文件同步有问题
同用一台文件服务器
2 quartz(定时服务组件)在集群环境中的同步问题
两台tomcat服务器同时布署quartz,使用ha原则,一台运行,另一台监听
布署tomcat集群
准备两个版本相同的tomcat服务器
修改apache服务器的workers.properties文件
#单个
#workers.tomcat_home=C:\Java\apache-tomcat-7.0.2
#workers.java_home=C:\Java\jdk1.7.0_07
#workers中可以定义多个worker
#worker.list=localworker1
#worker.localworker1.port=8009 #默认端口号
#worker.localworker1.host=localhost #tomcat服务器地址
#worker.localworker1.type=ajp13 #使用ajp/1.3协议连接
#集群
worker.list=controller
#tomcat1
worker.tomcat1.port=8009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1 #任务的权重为1,权重越高,分配的任务数越多
#tomcat2
worker.tomcat1.port=9009
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor=1
#==========================
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2
worker.lbcontroller.sticky_session=0 #不采用sticky_session的机制,如果为1则
不能同步复制到活着的tomcat节点上
worker.controller.sticky_session_force=true
worker.connection_pool_size=3000
worker.connection_pool_minsize=50
worker.connection_pool_timeout=50000
修改httpd.conf文件
为了节省开销先不起用https
#Include conf/extra/httpd-ssl.conf
修改mod_jk.conf文件
原来为:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost Nemo-20100613CG:80>
ServerAdmin zhenhuayue@sina.com
DocumentRoot F:/code
ServerName localhost
DirectoryIndex index.html index.htm index.jsp index.action
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /*WEB-INF localworker1
JkMount /*.action localworker1
JkMount /servlet/* localworker1
JkMount /*.jsp localworker1
JkMount /*.do localworker1
JkMount /*.action localworker1
JkMountFile "conf/uriworkermap.properties"
</VirtualHost>
修改为:
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
<VirtualHost Nemo-20100613CG:80>
ServerAdmin zhenhuayue@sina.com
DocumentRoot F:/code
ServerName localhost
DirectoryIndex index.html index.htm index.jsp index.action
ErrorLog logs/shsc-error_log.txt
CustomLog logs/shsc-access_log.txt common
JkMount /*WEB-INF controller
JkMount /*.action controller
JkMount /servlet/* controller
JkMount /*.jsp controller
JkMount /*.do controller
JkMount /*.action controller
JkMountFile "conf/uriworkermap.properties"
</VirtualHost>
修改uriworkermap.properties文件
原来为:
/*=localworker1
# 静态文件不由任何worker处理,交给apache httpd
/*.css=localworker1
/*.js=localworker1
!/*.gif=*
!/*.jpg=*
!/*.png=*
!/*.htm=*
!/*.html=*
修改为:
/*=controller
# 静态文件不由任何worker处理,交给apache httpd
/*.css=controller
/*.js=controller
!/*.gif=*
!/*.jpg=*
!/*.png=*
!/*.htm=*
!/*.html=*
tomcat 中的配置
1
tomcat1
<Server port="8005" shutdown="SHUTDOWN">
tomcat2
<Server port="9005" shutdown="SHUTDOWN">
2
tomcat2
#端口号不能一样
<Connector port="8099" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
3
两个tomcat服务器取消https
<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="C:/Java/apache-tomcat-7.0.2/conf/Nemo-
20100613CG.jks"
keystorePass="aaaaaa"
/>
-->
4
tomcat2
<Connector port="8099" protocol="HTTP/1.1"
URIEncoding="UTF-8"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="300"
maxThreads="300"
maxProcessors="1000"
minProcessors="5"
useURIValidationHack="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/pla
in"
redirectPort="9443"
/>
5
tomcat1
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"
URIEncoding="UTF-8"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="300"
maxThreads="300"
maxProcessors="1000"
minProcessors="5"
useURIValidationHack="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/pla
in"/>
tomcat2
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443"
URIEncoding="UTF-8"
minSpareThreads="25"
maxSpareThreads="75"
enableLookups="false"
disableUploadTimeout="true"
connectionTimeout="20000"
acceptCount="300"
maxThreads="300"
maxProcessors="1000"
minProcessors="5"
useURIValidationHack="false"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/pla
in"
/>
6
tomcat1
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
tomcat2
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
7
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="6">
<Manager
className="org.apache.catalina.ha.session.BackupManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"
mapSendOptions="6"/>
<Channel
className="org.apache.catalina.tribes.group.GroupChannel">
<Membership
className="org.apache.catalina.tribes.membership.McastService"
bind="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
#此处两个tomcat服务器的端口号必须不一样port="4001"
<Receiver
className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto"
port="4001"
selectorTimeout="100"
maxThreads="6"/>
<Sender
className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport
className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"
timeout="60000"/>
</Sender>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetecto
r"/>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15
Interceptor"/>
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.ThroughputInterce
ptor"/>
</Channel>
<Valve
className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/
>
<ClusterListener
className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
8
把系统环境变更中的CATALINA_HOME与TOMCAT_HOME这两个变量去除掉
CATALINA_HOME C:\Java\apache-tomcat-7.0.2
9
两个tomcat服务器中布署同一工程,修改web.xml文件添加
<distributable/>
启动tomcat集群
启动apache服务器
用两台不同机器登录应用查看效果
分享到:
相关推荐
【标题】:Tomcat学习笔记 【正文】: Tomcat是一款广泛应用的开源Web服务器和Java Servlet容器,由Apache软件基金会的Jakarta项目开发。它实现了Java Servlet和JavaServer Pages(JSP)规范,并且作为轻量级应用...
### Tomcat 6 学习笔记 #### 一、Tomcat 6 平台搭建与配置 ##### 1. 下载与安装 Tomcat 6 是一个免费且开源的Servlet容器,由Apache软件基金会下的Jakarta项目开发。可以通过官方网站进行下载:...
《Tomcat学习笔记》 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目中的核心项目,主要用于运行Java Web应用程序。本笔记将详细阐述Tomcat的安装、配置、虚拟主机设置、JDBC数据库连接池...
【SpringBoot核心特性】 SpringBoot是Spring框架的一个扩展,它旨在简化Spring应用程序的开发过程,...这份学习笔记涵盖了SpringBoot的基础特性和SpringCloud的负载均衡实践,对于深入理解这两个技术有极大的帮助。
4. **Cluster**:如果配置了集群,Tomcat可以处理负载均衡和故障转移,确保高可用性和可扩展性。 5. **Naming and Directory**:Tomcat支持JNDI(Java Naming and Directory Interface),允许应用查找和绑定资源,...
《锋迷商城》项目学习笔记1-前后端分离是关于分布式项目实战的课程笔记,涵盖了项目的背景、功能、技术选型、项目架构、前后端分离、集群与负载均衡等知识点。 一、分布式项目实战简介 分布式项目实战是指在项目...
"nginx 学习笔记实用知识库分享知识分享" 以下是从给定的文件中生成的相关知识点: Nginx 介绍 Nginx 是一个自由的、开源的、高性能的 HTTP 服务器和反向代理服务器,使用 C 语言编写,提供了高性能、可靠性和可...
solr 学习笔记主要涵盖了 Solr 的基本安装与配置,以及 Solr 服务器复制的配置,这些都是初学者需要掌握的基础知识。 Solr 是一款基于 Lucene 的全文搜索引擎,广泛应用于大数据检索和文本分析。在安装 Solr 时,...
本学习笔记主要涵盖了Java后端开发的基础知识、核心技术以及常见框架,旨在帮助初学者和进阶者深入理解Java后端开发。 一、Java基础 Java后端开发首先需要掌握Java语言的基本语法,包括数据类型、控制结构(如if...
Linux基础知识学习笔记(markdown格式) 包括:基础指令、yum、日期、时区、固定IP、ping、wget、vurl、nmap、nestat、进程管理、主机状态监控、磁盘信息监控、网络状态监控、上传、下载、用户、权限、解压、压缩、...
更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。 主观的印象:Docker 使用 Go 语言编写,用 cgroup 实现资源隔离,容器技术采用 LXC. 提供了能够独立...
通过【压缩包子文件的文件名称列表】"tomcat-learning-master",我们可以推测这是一个关于Tomcat学习的项目仓库,可能包含源代码示例、教程文档、实验指导或者个人学习笔记。通过这些资源,可以系统地学习和实践...
本章可能涉及Tomcat的安装、部署Web应用、性能优化,以及通过Nginx或其他工具实现Tomcat集群的负载均衡,以提高服务的并发处理能力和稳定性。 第六章 LVS负载均衡群集:Linux Virtual Server (LVS) 是一种高性能的...
【Solr学习心得与总结笔记】 一、站内搜索的技术选型 站内搜索的实现方式多样,但针对不同需求,技术选型有所不同: 1. 使用Lucene:Lucene是Java开发的全文检索库,提供了底层的搜索算法,但直接使用Lucene需要...
├─补充1:拔高课程(Redis3.0持久化、集群、MySQL5.6优化、Tomcat7优化) │ │ 打开必读.txt │ │ │ ├─课前资料 │ │ ├─MySQL5.6优化 │ │ │ MySql5.6性能优化.docx │ │ │ │ │ ├─Redis集群 │ ...
Redis 是一款高性能的键值存储系统,常用于缓存、分布式锁、消息队列等场景。...同时,其他技术如 JVM、Netty、Tomcat、Mysql、Spring、Mybatis、Nginx、Zookeeper 和 RabbitMQ 等也是面试中常见的考察点。
另一个常见应用是管理分布式环境下的session,如在Tomcat集群中,可以利用Redis来共享和同步session数据。 Redis的安装相对简单。通常步骤包括:将Redis的源码包上传至Linux服务器,安装必要的编译工具(如GCC),...
通过这份"乐优商城笔记",开发者可以学习到一个完整的电商系统从设计到实现的全过程,涵盖从后端开发到前端展示,再到部署运维的诸多环节,对提升个人在全栈开发领域的专业能力具有极大的价值。
在“springboot412笔记记录分享网站--论文pf.zip”这个压缩包中,我们可以推测其包含了关于SpringBoot 4.1.2版本的学习笔记和可能与论文撰写相关的资料。这可能是某位开发者或讲师在学习和实践SpringBoot过程中积累...