- 浏览: 90312 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hairongtian:
我想问一下在GC中的gc roots是什么?教科书的看不懂,能 ...
JVM-GC实践总结(纠正并发线程数 转载)
其实无论是分布式,数据缓存,还是负载均衡,无非就是改善网站的性能瓶颈,在网站源码不做优化的情况下,负载均衡可以说
是最直接的手段了。其实抛开这个名词,放开了说,就是希望用户能够分流,也就是说把所有用户的访问压力分散到多台服务器上,也可以
分散到多个tomcat里,如果一台服务器装多个tomcat,那么即使是负载均衡,性能也提高不了太多,不过可以提高稳定性,即容错性。
当其中一个主tomcat当掉,其他的tomcat也可以补上,因为tomcat之间实现了Session共享。待tomcat服务器修复后再次启动,就会
自动拷贝所有session数据,然后加入集群。这样就可以不间断的提供服务。如果要真正从本质上提升性能,必须要分布到多台服务器。
同样tomcat也可以做到。网上相关资料比较多,可以很方便的查到,但是质量不算高。我希望可以通过这篇随笔,系统的总结。本文的
例子是同一台服务器上运行两个tomcat,做两个tomcat之间的负载均衡。其实多台服务器各配置一个tomcat也可以,而且那样的话,可以使用
安装版的tomcat,而不用是下文中的免安装的tomcat,而且tomcat端口配置也就不用修改了。下文也会提到。
tomcat的负载均衡需要apache服务器的加入来实现。在进行配置之前请先卸载调已安装的tomcat,然后检查apache的版本。
我这次配置使用的是apache-tomcat-6.0.18免安装版本,我亲自测试后推断安装版的tomcat在同一台机子上会不能启动两个以上,可能是
因为安装版的tomcat侵入了系统,导致即使在server.xml里修改了配置,还是会引起冲突。所以我使用tomcat免安装版。
apache使用的是apache_2.2.11-win32-x86-no_ssl.msi。如果版本低于2.2负载均衡的配置要有所不同,因为这个2.2.11和2.2.8版本
集成了jk2等负载均衡工具,所以配置要简单许多。别的版本我没有具体测试,有待考究。这两个软件可以到官方网站下载。
把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。服务启动后在浏览器中
输入http://localhost进行测试,如果能看到一个"It works!"的页面就代表Apache已经正常工作了。把tomcat解压到任意目录,赋值一个另命名。
起名和路径对配置没有影响。但要保证端口不要冲突,如果装有Oracle或IIS的用户需要修改或关闭相关接口的服务。当然jdk的配置也是
必须的,这个不再过多叙述。
首先,在Apache安装目录下找到conf/httpd.conf文件,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)
模块。
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
向下拉动文档找到<IfModule dir_module>节点,在DirectoryIndex index.html后加上index.jsp,这一步只是为了待会配置完tomcat后能看到小
猫首页,可以不做。继续下拉文档找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符。
然后打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上
在test目录下继续新建WEB-INF目录和web.xml,在<web-app>节点下加入<distributable />,这一步非常重要,是为了通知tomcat服务器,
当前应用需要在集群中的所有节点间实现Session共享。如果tomcat中的所有应用都需要Session共享,也可以把conf/context.xml中的
<Context>改为<Context distributable="true">,这样就不需对所有应用的web.xml再进行单独配置。测试代码完成!
先启动Apache服务,在先后启动两台tomcat,分别点startup.bat批处理。如果一切顺利的话,就会启动成功。再次访问http://localhost,
可以看到小猫页面。访问http://localhost/test/test.jsp。可以看到包括服务器地址,端口,session等信息在内的页面。
然后你可以测试一下容错功能,关闭一个tomcat,看看服务是否正常,然后重启tomcat,关掉另一台tomcat,看看
是否也可以继续提供服务。当然你也可以配置多台tomcat,但是原理都一样。
OK,讲到这里。
是最直接的手段了。其实抛开这个名词,放开了说,就是希望用户能够分流,也就是说把所有用户的访问压力分散到多台服务器上,也可以
分散到多个tomcat里,如果一台服务器装多个tomcat,那么即使是负载均衡,性能也提高不了太多,不过可以提高稳定性,即容错性。
当其中一个主tomcat当掉,其他的tomcat也可以补上,因为tomcat之间实现了Session共享。待tomcat服务器修复后再次启动,就会
自动拷贝所有session数据,然后加入集群。这样就可以不间断的提供服务。如果要真正从本质上提升性能,必须要分布到多台服务器。
同样tomcat也可以做到。网上相关资料比较多,可以很方便的查到,但是质量不算高。我希望可以通过这篇随笔,系统的总结。本文的
例子是同一台服务器上运行两个tomcat,做两个tomcat之间的负载均衡。其实多台服务器各配置一个tomcat也可以,而且那样的话,可以使用
安装版的tomcat,而不用是下文中的免安装的tomcat,而且tomcat端口配置也就不用修改了。下文也会提到。
tomcat的负载均衡需要apache服务器的加入来实现。在进行配置之前请先卸载调已安装的tomcat,然后检查apache的版本。
我这次配置使用的是apache-tomcat-6.0.18免安装版本,我亲自测试后推断安装版的tomcat在同一台机子上会不能启动两个以上,可能是
因为安装版的tomcat侵入了系统,导致即使在server.xml里修改了配置,还是会引起冲突。所以我使用tomcat免安装版。
apache使用的是apache_2.2.11-win32-x86-no_ssl.msi。如果版本低于2.2负载均衡的配置要有所不同,因为这个2.2.11和2.2.8版本
集成了jk2等负载均衡工具,所以配置要简单许多。别的版本我没有具体测试,有待考究。这两个软件可以到官方网站下载。
把Apache安装为运行在80端口的Windows服务,安装成功后在系统服务列表中可以看到Apache2.2服务。服务启动后在浏览器中
输入http://localhost进行测试,如果能看到一个"It works!"的页面就代表Apache已经正常工作了。把tomcat解压到任意目录,赋值一个另命名。
起名和路径对配置没有影响。但要保证端口不要冲突,如果装有Oracle或IIS的用户需要修改或关闭相关接口的服务。当然jdk的配置也是
必须的,这个不再过多叙述。
首先,在Apache安装目录下找到conf/httpd.conf文件,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)
模块。
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
向下拉动文档找到<IfModule dir_module>节点,在DirectoryIndex index.html后加上index.jsp,这一步只是为了待会配置完tomcat后能看到小
猫首页,可以不做。继续下拉文档找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符。
然后打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上
<VirtualHost *:80> ServerAdmin 管理员邮箱 ServerName localhost ServerAlias localhost ProxyPass / balancer://sy/ stickysession=jsessionid nofailover=On ProxyPassReverse / balancer://sy/ ErrorLog "logs/sy-error.log" CustomLog "logs/sy-access.log" common </VirtualHost> 然后回到httpd.conf,在文档最下面加上 [code type="java"] ProxyRequests Off <proxy balancer://sy> BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1 BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2 </proxy> ProxyRequests Off 是告诉Apache需要使用反向代理,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。loadfactor是负载因子, Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都 是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。这样就可以使配置更灵活,例如可以给性能好的服务器增加处理 工作的比例,如果采取多台服务器,只需要修改ip地址和端口就可以了。route参数对应后续tomcat配置中的引擎路径(jvmRoute)。 如果仅仅为了配置一个可用的集群,Tomcat的配置将会非常简单。分别打开两个tomcat的server.xml配置文件,其中一台可以采用默认 的设置,只需要修改两个地方,而另一个要有较大改动以避免与前一台冲突。如果两台不在同一台服务器上运行,对于端口就不需做改动。首先是 配置关闭端口,找到<Server port="8005" shutdown="SHUTDOWN">,第一台不变,把第二台改为9005。 下面配置Connector的端口,找到non-SSL HTTP/1.1 Connector,即tomcat单独工作时的默认Connector,保留第一台默认配置,在8080端 口侦听,而把第二台设置为在9080端口侦听。往下找到AJP 1.3 Connector,<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />,这是 tomcat接收从Apache过来的ajp连接请求时使用的端口,保留第一台默认设置,把第二台端口改为9009。第一台tomcat的server.xml中找到 <Engine name="Catalina" defaultHost="localhost">,去掉这段或改为注释,把上方紧挨的<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1"> 注释符去掉,对于第二台,去掉注释符并把jvm1改为jvm2。 向下找到<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>,去掉注释,这里的配置是为了可以在集群中的所有tomcat节点 间共享会话(Session)。如果仅仅为了获得一个可用的tomcat集群,Cluster只需要这么配置就可以了。 只需要简单的几步就配置完成,然后可以测试一下是否配置成功。引用网上的一个测试方法,就是在webapps目录下新建test目录,在test目 录下新建test.jsp文件,代码我稍作改动如下: [code type="java"] <%@ page contentType="text/html; charset=GBK" %> <%@ page import="java.util.*" %> <html><head><title>shiyang</title></head> <body> 服务信息: <% out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br/>");%> <% out.println("<br> ID " + session.getId()+"<br/>"); String dataName = request.getParameter("dataName"); if (dataName != null && dataName.length() > 0) { String dataValue = request.getParameter("dataValue"); session.setAttribute(dataName, dataValue); } out.print("<b>Session 列表</b><br/>"); Enumeration e = session.getAttributeNames(); while (e.hasMoreElements()) { String name = (String)e.nextElement(); String value = session.getAttribute(name).toString(); out.println( name + " = " + value+"<br/>"); System.out.println( name + " = " + value); } %> <form action="test.jsp" method="POST"> 名称:<input type=text size=20 name="dataName"> <br/> 值:<input type=text size=20 name="dataValue"> <br/> <input type=submit value="提交"> </form> </body> </html>
在test目录下继续新建WEB-INF目录和web.xml,在<web-app>节点下加入<distributable />,这一步非常重要,是为了通知tomcat服务器,
当前应用需要在集群中的所有节点间实现Session共享。如果tomcat中的所有应用都需要Session共享,也可以把conf/context.xml中的
<Context>改为<Context distributable="true">,这样就不需对所有应用的web.xml再进行单独配置。测试代码完成!
先启动Apache服务,在先后启动两台tomcat,分别点startup.bat批处理。如果一切顺利的话,就会启动成功。再次访问http://localhost,
可以看到小猫页面。访问http://localhost/test/test.jsp。可以看到包括服务器地址,端口,session等信息在内的页面。
然后你可以测试一下容错功能,关闭一个tomcat,看看服务是否正常,然后重启tomcat,关掉另一台tomcat,看看
是否也可以继续提供服务。当然你也可以配置多台tomcat,但是原理都一样。
OK,讲到这里。
发表评论
-
JVM 运行时数据区(转)
2012-07-11 23:02 1052运行时数据区 java虚拟机定义了若干种程序运行时使用 ... -
图解JVM 内存分配
2012-07-10 23:57 12131.简介 现摘录一段Java5 ... -
JVM-GC实践总结(纠正并发线程数 转载)
2012-07-10 16:27 3536首先感谢阿宝同学的帮 ... -
深入Java虚拟机:JVM中的Stack和Heap
2012-07-10 14:26 1092在JVM中,内存分为两个部分,Stack(栈)和He ... -
JVM分代垃圾回收策略的基础概念
2012-07-10 13:50 1358由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中 ... -
Java虚拟机(JVM)中的内存设置详解(转载)
2012-07-09 17:13 1129在一些规模稍大的应用 ... -
JVM原理_内存篇(转载)
2012-07-09 16:56 2159一、JVM简介 ... -
JVM参数调优的八条经验(转载)
2012-07-09 14:35 954要想配置好JVM参数,需要对年轻代、年老代、救助空间和永久代有 ... -
Tomcat负载均衡原理详解及配置(Apache2.2.19+Tomcat7.0.12)
2012-06-30 11:45 1230使用Tomcat的童鞋们注意了。为了增加tomcat的性能和稳 ... -
Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session复 制
2012-06-30 11:31 1350本文介绍如何配置Tomcat和Terracotta服务器将普通 ... -
tomcat session 持久化会话
2012-06-30 11:29 1601tomcat6 中关闭服务 会自动把session持久化 ... -
Tomcat集群Session丢失解决方案
2012-06-29 01:38 4405这几天单服务器整合项目很正常,集群的时候问题就来了,配 ... -
nginx+tomcat集群+session复制
2012-06-29 01:34 1237ulimit -SHn 65535 echo " ... -
linux下的并发数量
2012-06-26 21:32 964在部署系统后,为了增加系统并发量,系统响应速度,做了一些 ... -
网站的静态化处理
2012-06-26 21:10 863urlrewritefilter 下载: htt ... -
linux+nginx+tomcat负载均衡,实现session同步
2012-06-21 15:18 3896花了一个上午的时间研究nginx+tomcat的负载均衡测试, ... -
tomcat6_apache2.2_ajp负载均衡加集群实战 [转]
2012-04-26 16:07 933秀脱linux笔记之tomcat6_apa ... -
JVM内存最大能调多大分析-转帖
2012-02-18 12:48 1387JVM内存最大能调多大分析【经典】 上次用webl ... -
nginx for windows之负载均衡
2011-05-06 17:53 9621.编辑c:\nginx\conf\nginx.conf ... -
Tomcat6性能调优 出现java.lang.OutOfMemoryError: PermGen space
2010-08-03 13:51 1375Tomcat6在部署应用中,Server报错:java.lan ...
相关推荐
Apache2.2与Tomcat6.0的组合可以构建一个高效、可靠的负载均衡服务器系统,以分散客户端请求到多个后端应用服务器,提高整体服务的可用性和响应速度。以下是搭建和配置的关键步骤及知识点: 1. **Apache2.2安装配置...
6. **负载均衡策略**: - BalancerMember的`loadfactor`参数决定了服务器的负载权重,用于决定请求分配的优先级。 - `route`参数用于区分不同的服务器实例,便于管理和故障排查。 7. **高可用性和容错性**: - ...
虽然文档中没有给出具体的网络拓扑图,但根据文档描述,可以想象出一个简单的网络结构:一台或多台Tomcat服务器与一台Apache服务器连接,形成负载均衡架构。其中,Apache作为前端代理服务器,负责接收客户端请求并将...
apache 服务 apache_2.2.13-x64-no-ssl.msi
由于只能上传15M的限制,所以分成了3个压缩分包.3个包全部下载完后解压就是.
由于只能上传15M的限制,所以分成了3个压缩分包.3个包全部下载完后解压就是.
由于只能上传15M的限制,所以分成了3个压缩分包.3个包全部下载完后解压就是.
apache_2.2.13-win32-x86-openssl-0.9.8k.msi
- **下载地址**:首先需要从官方网站下载适用于Windows系统的Apache 2.2版本,例如`apache_2.2.13-win32-x86-no_ssl.msi`。 - **注意事项**:选择不包含SSL的版本,因为初学者可能暂时不需要SSL支持,同时也可以减少...
- Apache HTTP Server可以从Apache官方网站下载,选择适合的no ssl版本,例如`apache_2.2.13-win32-x86-no_ssl.msi`。 - Subversion的Windows二进制版本可以从Tigris.org获取,选择`svn-win32-1.6.5.zip`。 - ...
这是php的必安软件!一个直接可以在windows上面安装的可执行文件,不需要解压,不需要注册码。直接安装就可以了。
本教程以PHP 5.3和Apache 2.2.13版本为例,这是当时较新的组合,适用于许多常见的Web应用。 首先,让我们深入了解一下PHP。PHP(Hypertext Preprocessor)是一种开源的服务器端脚本语言,特别适合Web开发,可以嵌入...
Apache Tomcat 集群整合教程旨在教你如何配置和部署多台Tomcat服务器,以实现高可用性和负载均衡。在大型应用系统中,单一的Tomcat服务器可能无法满足高并发和高可靠性的需求,这时就需要通过集群来分散服务压力。本...
- **下载并安装Apache 2.2**: 使用提供的链接下载`apache_2.2.13-win32-x86-no_ssl.msi`安装包,并按照向导提示安装到自定义的位置,例如`D:\server\apache2`。 - **验证安装**: 安装完成后,在浏览器中访问`...
例如,worker.controller.type=lb表示创建一个负载均衡器,worker.s1.lbfactor和worker.s2.lbfactor定义了各Tomcat实例的权重,权重越高,处理的请求越多。 在Tomcat侧,我们需要在server.xml文件中开启AJP连接器,...
- 下载并安装`apache_2.2.13-win32-x86-no_ssl.msi`。 - 选择安装路径,例如`D:\server\apache2`。 - 完成安装后,通过浏览器访问`http://localhost`来确认Apache服务器是否正确安装,页面应显示"It works!"。 #...
本文将详细介绍如何在Windows环境下,将Apache 2.2.13与Tomcat 6.0.18进行整合,实现一台Apache服务器带两个Tomcat实例的配置。 首先,确保下载并安装了正确的软件版本。Apache可以从...
总结来说,Tomcat集群部署通过Apache HTTP Server作为前端负载均衡器,利用mod_jk模块与多个Tomcat实例通信。这样不仅可以提高系统的并发处理能力,还可以实现故障隔离,提升服务的稳定性。在实际部署中,可能还需要...