方案:
1、基于request的负载均衡
该种方式下,负载均衡器 (load balancer)会根据各个node的状况,把每个 http request进行分发。使用这样的均衡策略,就必须在多个node之间复制用户的session,实时保持整个cluster的用户状态同步,这种操作被称为session复制(session replication)。Jboss的实现原理是使用拦截器(interceptor),根据用户的同步策略拦截request,做同步处理后再交给server产生响应。
优点是客户不会被绑定都具体的node,只要还有一个node存活,用户状态都不会丢失,cluster都能够继续工作。
缺点是node之间通信频繁,响应速度有影响,多并发、高频操作的情况下性能下降比较厉害。
2、 基于用户的负载均衡
该种方式下,当用户发出第一个request后,负载均衡器动态的把该用户分配到某个节点,并记录该节点的jvm路由,以后该用户的所有request都会被绑定这个jvm路由,用户只会与该server发生交互,这种策略被称为粘性session(session sticky)。
优点是响应速度快,多个节点之间无须通信。
缺点也很明显,某个node死掉以后,它负责的所有用户都会丢失session。
采取方案:
目前采用第二种,也就是session stiky (1小时)
文件服务器的配置 (1天)
Tomcat参数优化 (1天)
集群的配置
首先在apache 的conf目录下找到httpd.conf(apache 的配置文件)文件
在该文件里找到
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
并且把上面的#号去掉
然后找到
Include conf/extra/httpd-vhosts.conf
把上面的#号去掉
在最后一行加上
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=tomcat3(与该tomcat里德jvmRote名字一样)
BalancerMember ajp://127.0.0.1:8020 loadfactor=1 route=tomcat2
</proxy>
第二步找到\conf\extra包下面的httpd-vhosts.conf
在下面加上
<VirtualHost *:80>
ServerAdmin yancheng100088@163.com
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
ErrorLog "logs/dummy-host2.163.com-error.log"
CustomLog "logs/dummy-host2.163.com-access.log" common
</VirtualHost>
第三步找到解压后的tomcat在不同的tomcat里修改server.xml里的端口参数使之不重复
(大家都知道就不详细说了)
这里改几个比较重要的参数
一个是<Engine name="Catalina" defaultHost="localhost">
改成<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
另一个后面改成tomcat3
然后加上
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
channelSendOptions="8">
<Manager className="org.apache.catalina.ha.session.DeltaManager"
expireSessionsOnShutdown="false"
notifyListenersOnReplication="true"/>
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.McastService"
mcastBindAddress="127.0.0.1"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
tcpListenAddress="127.0.0.1"
address="auto"
port="4000"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
<Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
</Sender>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
<Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
</Channel>
<Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
filter=""/>
<Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
<Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>
这个是session复制用的不需要session复制的可以不用
最后一步
在需要session复制的程序里面的web.xml里加上
<distributable />
Session粘性,一般用到粘性就不用sesssion复制了
只需要在httpd.conf里最后一段加上
ProxyRequests Off
ProxyPass / balancer://cluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3
ProxyPassReverse / balancer://cluster/
<proxy balancer://cluster>
BalancerMember ajp://127.0.0.1:8010 loadfactor=1 route=tomcat3
BalancerMember ajp://127.0.0.1:8020 loadfactor=1 route=tomcat2
</proxy>
就行了。
相关推荐
window apache tomcat的集群 window+apache+tomcat的集群
window+apache+tomcat的集群整合 Apache是http服务器,我们可以利用它对tomcat进行负载均衡.
通过以上步骤,一个简单的基于Apache和Tomcat的集群/负载均衡环境就在Windows系统中搭建完成了。需要注意的是,实际部署中可能还需要考虑更多的因素,如故障转移、安全策略以及监控等,以确保整个系统的高可用性和...
本教程将探讨如何在Windows环境下,利用Nginx作为反向代理和负载均衡器,与Tomcat应用服务器配合,搭建一个负载均衡和集群环境。这种配置能够提升系统的稳定性和处理能力,确保即使在服务器压力大的情况下,也能为...
最近学习Nginx+tomcat实现 负载均衡。 首先大家注意: 本文章中没有session共享,关于session共享我会在下一篇中讲解,先实现Nginx+tomcat负载均衡再实现session共享。 从网上查了好多资料,多走了很多弯路,现在把...
Apache Tomcat集群和负载均衡是提高Web应用程序性能和可用性的关键策略。通过在Windows平台上配置Apache HTTP Server与多个Tomcat实例协同工作,可以有效地分散用户请求,避免单一服务器过载,确保服务的连续性和...
以下是关于Apache Tomcat集群的一些关键知识点: 1. **集群概念**:在Web服务器集群中,多个服务器共享应用程序状态和用户会话,以实现故障转移、负载分担和扩展性。在Tomcat中,集群可以通过网络通信来同步session...
### Nginx+Tomcat集群部署详解 #### 一、Nginx与Tomcat简介 在深入了解Nginx+Tomcat集群部署之前,我们先简要回顾一下这两款软件的基本功能。 - **Nginx**:是一款高性能的HTTP服务器及反向代理服务器,同时也是...
windowXP下搭建nginx-1.7.10和apache-tomcat-8.0.18的集群 已经配置好,下载后直接启动三个tomcat和nginx,然后访问http://localhost/即可。
- 集群配置可以在高并发或故障转移场景下提高服务的可用性和性能,通过负载均衡策略将请求分发到不同的Web服务器节点。 2. App Server(应用服务单点或集群): - App Server处理Web Server转发过来的业务逻辑,...
4. **Cluster**:如果配置了集群功能,Tomcat可以实现负载均衡和故障转移,以提高可用性和可扩展性。 5. **Manager**:这是一个Web应用程序管理工具,允许用户通过浏览器界面来部署、卸载或更新应用程序。 6. **...
6. **Cluster**:Tomcat支持集群,可以将负载分布到多个服务器,实现高可用性和故障转移。 7. **Security**:Tomcat提供了多种安全特性,包括SSL/TLS支持、 Realm(认证域)配置、角色为基础的安全权限管理等。 ...
10. **集群和负载均衡**:Tomcat支持集群配置,可以将请求分发到多个服务器,提高可用性和扩展性。 总之,Tomcat 8是Java Web开发的重要基础设施,无论是在学习还是实际工作中,理解和掌握其工作原理及配置技巧都是...
10. **集群与负载均衡**:虽然Tomcat 6.0不是设计用来做大型集群部署的,但可以通过修改`conf/server.xml`文件配置多个`<Engine>`、`<Host>`和`<Connector>`元素,实现简单的负载均衡和故障转移。 总之,Apache ...
3. **Tomcat集群+Redis的Session共享** —— 更稳定高效,推荐使用。 这里以第二种方式进行配置。在每个Tomcat的server.xml中启用SimpleTcpCluster,使Tomcat能够进行Session复制。 总之,通过以上步骤,我们可以...
Apache Tomcat是一款开源的Java应用服务器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术。这个"官方原版apache-tomcat-9.0.33-windows-x64.zip"是Apache Tomcat的第9.0.33版本,专为64位Windows操作系统...
在【描述】中提到的“apache-tomcat集群部署”,是指在多个Apache Tomcat服务器上配置和管理应用以实现负载均衡、高可用性和故障切换。Apache Tomcat是一款流行的Java Servlet和JavaServer Pages (JSP)容器,常与...
5. **Cluster**:对于高可用性和负载均衡需求,Tomcat提供集群功能,允许在多个服务器之间共享会话和其他数据。 6. **WebDAV**:Tomcat可以通过WebDAV协议支持远程管理Web应用程序,这使得开发者可以远程部署和更新...
10. **集群与负载均衡**:Tomcat支持集群配置,可以在多个实例间实现 session 复制和故障转移,提高可用性和性能。配合负载均衡器,可以将请求分发到多个Tomcat实例。 总之,"tomcat-8.5.50-windows-x64.zip"提供了...