- 浏览: 796266 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (981)
- javascript (102)
- java (212)
- JQuery (81)
- 幽默笑话 (2)
- 只言片语 (6)
- 开发小记 (283)
- Hibernate (17)
- DWR (4)
- SQL (10)
- spring-ibatis (8)
- linux (24)
- Struts1 (8)
- Struts2 (16)
- spring (42)
- Mybatis (16)
- css (18)
- servlet (8)
- jdbc (4)
- jsp (1)
- spring-jdbc (2)
- FreeMarker (2)
- MySQL (24)
- JQuery-Grid (7)
- jstl (5)
- 正则表达式 (1)
- 面试集锦 (86)
- unix (18)
- 开发工具 (23)
- ajax (5)
- webservice (4)
- log4j (3)
- oracle (15)
- extjs (14)
- 其他 (9)
- 优秀技术参考地址 (1)
- 性能 (3)
- 数据库 (25)
- 算法 (15)
- 设计模式 (10)
- Python (3)
- AIX (5)
- weblogic (1)
- shell (14)
- quartz (5)
- 图形文件FusionCharts (1)
- Websphere (4)
- 转载 (5)
- hadoop (1)
- highchart (24)
- perl (22)
- DB2 (7)
- JBoss (1)
- JQuery Easy UI (9)
- SpringMVC (5)
- ant (5)
- echart (9)
- log4J配置 (3)
- 多线程 (10)
- 系统架构 (7)
- nginx (3)
- loadrunner1 (1)
- 分布式 (1)
- Dubbo (1)
- Redis (2)
- JMS (4)
- 自动化测试 (3)
- Spring循环依赖的三种方式 (1)
- spring-boot (2)
- 高级测试 (9)
- github (2)
- sonar (1)
- docker (6)
- web前端性能优化 (1)
- spring-aop (6)
- rabbit (1)
- ELK (1)
- maven (1)
- minio (1)
最新评论
-
zengshaotao:
jstl1point0 写道很好啊,如果有带Session会话 ...
Nginx+Tomcat搭建高性能负载均衡集群 -
jstl1point0:
很好啊,如果有带Session会话的怎么搞呢
Nginx+Tomcat搭建高性能负载均衡集群
前提条件:
linux服务器,有网络;
服务器已经安装了jdk1.6或者更高版本,并且在已经配置好了环境变量JAVA_HOME、JRE_HOME、PATH等。
一、下载apache-httpd
下载地址:http://httpd.apache.org/ 或者http://httpd.apache.org/download.cgi
本教程选择httpd-2.2.29,因此下载了httpd-2.2.29.tar.gz
二、安装apache-httpd
1.上传。将httpd-2.2.29.tar.gz上传到linux服务器。
2.解压。tar -xvf httpd-2.2.29.tar.gz 解压压缩包。
3.安装。切换到httpd-2.2.29解压目录,依次执行以下命令。(将apache-httpd安装在/app/httpd/下)
./configure --prefix=/app/httpd/
make
make install
4.测试启动。切换到httpd-2.2.29安装目录,启动服务。
cd /app/httpd/bin/
./apachectl start
如果没有提示错误或使用下面命令显示一系列进程,表示安装成功。
ps -ef|grep httpd
三、安装tomcat
1.下载tomcat。下载地址:http://tomcat.apache.org/ 。本教程下载的是apache-tomcat-6.0.39.tar.gz。将下载的tomcat压缩包上传到linux服务器。
2.安装tomcat。将apache-tomcat-6.0.39.tar.gz解压到/app/tomcat/下,apache-tomcat-6.0.39重命名为tomcat1,然后拷贝一份,命名为tomcat2。
tar -xvf apache-tomcat-6.0.39.tar.gz -C /app/tomcat/
mv /app/tomcat/apache-tomcat-6.0.39 /app/tomcat/tomcat1
cp /app/tomcat/tomcat1 /app/tomcat/tomcat2
3.修改配置。
修改端口号和tomcat名,修改conf下的server.xml
tomcat1:
<Server port="8005" shutdown="SHUTDOWN" debug="0">
改为
<Server port="10001" shutdown="SHUTDOWN" debug="0">
<Connector port="80"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK"/>
改为 <Connector port="10002"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK"/>
<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
改为
<Connector port="10003" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
<Engine name="Catalina" defaultHost="localhost" >
改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
去掉注释
tomcat2:
<Server port="8005" shutdown="SHUTDOWN" debug="0">
改为
<Server port="11001" shutdown="SHUTDOWN" debug="0">
<Connector port="80"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK"/>
改为 <Connector port="11002"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="GBK"/>
<Connector port="8009" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
改为
<Connector port="11003" enableLookups="false" redirectPort="8443" debug="0" protocol="AJP/1.3" />
<Engine name="Catalina" defaultHost="localhost" >
改为
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
去掉注释
修改完成后可以启动tomcat测试端口是否可用。
四、apache-httpd配置
1.下载mod_jk.so。下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/ 。选择linux/目录下的对应的mod_jk.so。
例如本教程使用的是httpd-2.2.29,64位的linux,选择的是linux/jk-1.2.31/x86_64/mod_jk-1.2.31-httpd-2.2.x.so
2.将下载的mod_jk-1.2.31-httpd-2.2.x.so拷贝至/app/httpd/modules/下。
3.修改/app/httpd/conf/httpd.conf 。
#监听端口,改为80,如果80已经被占用,可以该为其他端口。
Listen 80
#如果Directory中是Deny from all ,改为Allow from all
<Directory "/app/httpd/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
#加入文件mod_jk.conf,虽然这些配置可以直接配置在httpd.conf中,但还是单独拿出来比较明朗。
include conf/mod_jk.conf
4.创建文件mod_jk.conf
touch /app/httpd/conf/mod_jk.conf
vi /app/httpd/conf/mod_jk.conf
在文件中添加一下内容,注意mod_jk.so文件名使用自己下载的文件。本教程使用的是mod_jk-1.2.31-httpd-2.2.x.so
##################### mod_jk.conf ########################
# Load mod_jk module
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkAutoAlias /export/home/tomcat/tomcat_vcmplat/webapps
# Send JSPs for context / to worker named loadBalancer
#JkMount /*.jsp loadBalancer
#JkMount /*.do* loadBalancer
JkMountFile conf/urimap.properties
###################### end mod_jk.conf ####################
5.创建workers.properties
touch /app/httpd/conf/workers.properties
vi /app/httpd/conf/workers.properties
在文件中添加一下内容。
##################### workers.properties ########################
#server
worker.list = loadBalancer
#========tomcat1========
worker.tomcat1.port=10003
worker.tomcat1.host=localhost
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#========tomcat2========
worker.tomcat2.port=11003
worker.tomcat2.host=localhost
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#========loadBalancer,负载均衡控制器========
worker.loadBalancer.type=lb
worker.loadBalancer.balanced_workers=tomcat1,tomcat2
#会话粘性,如果为true或1,一个用户在一个Tomcat中建立了会话后则此后这个用户的所有操做都由这个Tomcat服务器承担
worker.loadBalancer.sticky_session=false
#worker.loadBalancer.sticky_session为true时才有效
#如果sticky_session_force为true也就是强制会话与当前Tomcat关联,那么会报500错误,如果设为false则会转到另外的Tomcat服务器
#worker.loadBalancer.sticky_session_force=1
#worker.loadBalancer.sticky_session=1
################## end workers.properties ##################
6.创建urimap.properties
touch /app/httpd/conf/urimap.properties
vi /app/httpd/conf/urimap.properties
在文件中添加一下内容。/*是对所有请求处理
##################### urimap.properties ########################
/*=loadBalancer
!/*.gif=loadBalancer
!/*.jpg=loadBalancer
!/*.png=loadBalancer
!/*.css=loadBalancer
!/*.js=loadBalancer
!/*.htm=loadBalancer
!/*.html=loadBalancer
!/*.mid=loadBalancer
!/*.xml=loadBalancer
!/*.txt=loadBalancer
!/*.mp3=loadBalancer
################## end urimap.properties ##################
五.重启apache-httpd
/app/httpd/bin/apachectl stop
/app/httpd/bin/apachectl start
1.输入http://121.40.120.56:80/ 查看是否能够正常访问(其中121.40.120.56为服务器ip)。
2.用MyEclipse新建一个web项目Test,在WebRoot下添加test.jsp,内容如下。web.xml中添加 <distributable/> 。然后将此项目部署到tomcat1和tomcat2下,重启tomcat1和tomcat2,
输入http://121.40.120.56:80/Test/test.jsp
http://121.40.120.56:10002/Test/test.jsp
http://121.40.120.56:11002/Test/test.jsp
查看不同tomcat下的sessionId是否相同,如果相同,说明session复制成功。
<%@ page contentType="text/html; charset=GBK" %>
<%@ page import="java.util.*" %>
<html><head><title>Test</title></head>
<body>
Server Info:
<%
out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%>
<%
out.println("<br> ID " + session.getId()+"<br>");
// 如果有新的 Session 属性设置
String dataName = request.getParameter("dataName");
if (dataName != null && dataName.length() > 0) {
String dataValue = request.getParameter("dataValue");
session.setAttribute(dataName, dataValue);
}
out.println("<b>Session 列表</b><br>");
System.out.println("============================");
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>
</form>
</body>
</html
发表评论
-
视频播放
2021-02-23 13:26 311方法的请求地址,连同视频参数会被存储在数据库中,前端通过ht ... -
rest之我见
2020-08-03 17:20 299Rest是一种路径风格,但是有些书上写需要加入版本号,传入业 ... -
XSS攻击预防
2018-04-09 11:43 490public class XssHttpServlet ... -
上传本地代码到github
2018-04-02 16:28 621上传代码到github,可通过命令行和客户端的形式,原理都 ... -
从表的结果集里生成insert语句
2018-03-13 17:33 745select ' insert into SYS_ROLE ( ... -
sql的使用注意事项
2018-01-26 14:03 5671.对于mybatis,经常要写sql,而且会碰到in的关键 ... -
sql查询条件位置和执行顺序
2018-01-23 10:24 741经常有这样的场景:在页面的表格处显示指标的数据,如果指标的数 ... -
基本注意点总结
2018-01-21 11:54 426拷贝一些插件的时候,要注意一些问题,比如拷贝fancybo ... -
JQuery 之empty and remove
2017-12-25 18:59 449$("table tr[id^=trAddColum ... -
监控远程Tomcat
2017-11-21 17:55 621使用java visual VM监控远程tomcat时,需要 ... -
LoadRunner监控Linux服务器资源
2017-11-15 13:58 965要监控并得到Linux服务器的相关参数,必须是系统开启了特定 ... -
MyBatis防止SQL注入
2017-11-14 13:35 994SQL注入是一种代码注入技术,用于攻击数据驱动的应 ... -
maven解决第三方的jar依赖
2017-10-09 16:37 714在maven项目中,对于那些在maven仓库中不存在的第三方 ... -
类加载机制及反射
2017-09-24 08:45 596一、Java类加载机制 ... -
两次encodeURI和URLDecode的原理分析
2017-08-24 12:15 4071当使用地址栏提交查询参数时,如果不编码,非英文字符会按照操 ... -
TD库的分页
2017-08-16 13:24 722--partition by接的是多个字段,功能是先分组,再 ... -
数组内对象去重
2017-08-16 11:08 821一个数组,内部装了对象,形如: {"key&qu ... -
多个or查询作为一个整体
2017-08-16 10:49 541都使用过mybatis,都见过这样的标签sql配置: &l ... -
encodeURI
2017-08-14 21:29 532对于ajax请求,经常会在地址栏传入一些参数,涉及的中文的, ... -
linux设置java环境
2017-08-07 16:47 461linux配置java环境变量(详细) 一. 解压安装jdk ...
相关推荐
Apache+Tomcat+Linux集群和均衡负载(Session同步复制
- 通过浏览器访问`http://172.16.116.1/index.jsp`,检查是否能够成功访问,并观察日志文件确认请求是否被正确地分发至Tomcat集群中的不同节点。 #### 四、注意事项 1. **权限问题**: 确保所有操作均以具有足够...
- 本文档针对Apache Tomcat集群配置进行了详尽的说明,特别适合新手入门学习,通过本文档能够快速掌握Apache Tomcat集群的基本概念、搭建步骤及注意事项。 #### 知识点详解: ##### 一、集群基础知识 1. **学习...
### Linux下Apache+Tomcat集群指南 #### 一、系统集群环境安装指南 **1.1 文档说明** 本文档旨在详细介绍如何在Linux环境下搭建Apache+Tomcat集群,并实现负载均衡及Session复制等功能。该文档适合希望提高Web...
### Apache+Tomcat集群配置详解 #### 一、技术基础 Apache和Tomcat均属于Apache基金会旗下的开源项目,二者在Web服务领域各自扮演着重要的角色。Apache是一款强大的HTTP Web服务器,支持多种操作系统(如Windows、...
Apache与Tomcat集群配置是构建高可用性和负载均衡Web服务的一种常见方法,主要适用于大型、高流量的Web应用程序。这个过程涉及到Apache HTTP Server(通常简称为Apache)作为前端负载均衡器,以及多个Tomcat实例作为...
在Apache+Tomcat集群的配置中,`mod_jk`模块扮演着关键角色。它是Apache的Jakarta连接器,负责在Apache和Tomcat之间建立通信,实现负载均衡和故障转移。这个模块通过一个名为`worker.properties`的配置文件定义了与...
在Linux环境中,构建Apache+Tomcat集群是一种常见的高可用性和负载均衡解决方案,它能够提高Web应用的性能和稳定性。Apache作为前端服务器,负责接收HTTP请求,并通过特定的连接器(如mod_jk)将这些请求转发到后端...
### Apache+Tomcat集群、优化配置 #### 一、文档目的 本文档旨在提供详细的步骤指导,帮助读者在本地环境中成功搭建Apache与Tomcat的服务集群,并进行必要的性能优化。通过这种方式,可以有效地测试项目的性能,...
【标题】:“如何搭建apache+tomcat集群” 在IT行业中,服务器集群是一种常见的技术实践,用于提高应用的可用性和性能。Apache HTTP Server和Tomcat是两种广泛应用的软件,前者是强大的HTTP服务器,后者是Java ...
在Linux环境下,构建一个基于Apache2和Tomcat7.0的SSL集群是一项关键任务,它涉及到网站的安全性和负载均衡。Apache作为前端服务器处理HTTPS请求,而Tomcat则作为后端应用服务器处理Java应用。以下是对这个配置过程...
4. **配置mod_jk**:在Apache的配置文件httpd.conf中,添加mod_jk的LoadModule语句,然后创建一个名为workers.properties的文件,定义Tomcat集群的服务器实例。每个实例包括IP地址、端口、工作目录等信息。 5. **...
为了搭建Tomcat集群,首先需要安装JDK。 1. **下载JDK**:选择JDK 1.6或更高版本。 2. **安装JDK**:安装过程省略。 3. **配置环境变量**:设置JDK_HOME、CLASSPATH和PATH环境变量。 ```bash export JAVA_HOME=/...
在Linux环境中,通过Apache HTTP服务器(简称Apache)搭建Tomcat集群是一种常见的高可用性和负载均衡配置方式。Apache作为反向代理服务器,可以将用户的请求分发到多个Tomcat实例上,从而实现应用服务的扩展和容错。...
以上就是基于Red Hat 5的Linux环境中,Apache与Tomcat集群的基本配置步骤和注意事项。通过这种方式,您可以实现高效、可靠的Web服务环境,以应对高并发访问和确保业务连续性。对于更复杂的需求,如SSL加密、缓存策略...
总结,实现Apache+Tomcat集群负载均衡的关键在于正确配置Apache的mod_proxy模块,以及确保Tomcat集群的会话一致性。通过这种方式,我们可以有效分摊高并发访问压力,提高系统的稳定性和响应速度。同时,持续监控和...
总的来说,Apache+Tomcat集群的配置是一项复杂但至关重要的任务,能够提供强大且可靠的Web服务。正确配置和管理这个集群,可以帮助企业应对高流量和复杂应用的需求,提升用户体验,同时确保系统的稳定性和安全性。
在构建高性能的Web服务环境中,...总结来说,Nginx+Memcache+Linux+Tomcat集群通过合理利用资源,实现了Web服务的高性能、高可用性和可扩展性。这种架构在处理大量并发请求时表现出色,是现代互联网服务的常见选择。