Tomcat集群

TOMCAT集群


目录
TOMCAT集群 1
1 集群 1
1.1 什么是集群 1
1.2 集群的特性 1
1.3 集群的分类 1
1.4 TOMCAT集群配置的优缺点 2
1.5 APACHE+TOMCAT 2
1.6 环境说明 2
2 软件安装 3
2.1 安装说明 3
2.2 JDK安装 3
2.3 APACHE安装 4
2.4 TOMCAT安装 4
3 集群配置 6
3.1 APACHE+MOD_JK+TOMCAT配置 6
3.2 测试 7
4 SESSION复制 8
4.1 SESSION复制配置 8
4.2 测试 10



1 集群
1.1 什么是集群
集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。在客户端看来,一个集群就象是一个服务实体,但 事实上集群由一组服务实体组成。

1.2 集群的特性
与单一服务实体相比较,集群提供了以下两个关键特性:
1,可扩展性--集群的性能不限于单一的服务实体,新的服 务实体可以动态地加入到集群,从而增强集群的性能。
2, 高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service的警告。在集群中,同样的服务可以由多个服务实体提供。如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。集群提供的从一个出 错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。
为了具有可扩展性和高可用性特点,集群的必须具备以下两大能力:
(1) 负 载均衡--负载均衡能把任务比较均衡地分布到集群环境下的计算和网络资源。
(2) 错误恢复--由于某种原因,执行某个任务的资源出现故障,另一服 务实体中执行同一任务的资源接着完成任务。这种由于一个实体中的资源不能工作,另一个实体中的资源透明的继续完成任务的过程叫错误恢复。
负载均衡 和错误恢复都要求各服务实体中有执行同一任务的资源存在,而且对于同一任务的各个资源来说,执行任务所需的信息视图(信息上下文)必须是一样的。

1.3 集群的分类
集群主要分成三大类:高可用集群(High Availability Cluster/HA), 负载均衡集群(Load Balance Cluster),高性能计算集群(High Performance Computing Cluster/HPC)
(1) 高可用集群(High Availability Cluster/HA):一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。常见的就是2个节点做 成的HA集群,有很多通俗的不科学的名称,比如"双机热备", "双机互备", "双机",高可用集群解决的是保障用户的应用程序持续对外提供服 务的能力。
(2) 负载均衡集群(Load Balance Cluster):负载均衡集群运行时一般通过一个或者多个前端负载均衡器将工作负载分发到后端的一组服务器上,从而达到将工作负载分发。这样的计算机集群有时也被称为服务器群(Server Farm)。一般web服务器集群、数据库集群 和应用服务器集群都属于这种类型。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器 上。从检查其他服务器状态这一点上 看,负载均衡和容错集群很接近,不同之处是数量上更多。
(3) 高性能计算集群(High Performance Computing Cluster/HPC):高性能计算集群采用将计算任务分配到集群的不同计算节点而提高计算能力,因而主要应用在科学计算领域。这类集群致力于提供单个计算机所不能提供的强大的计算能力

1.4 Tomcat集群配置的优缺点
通常配置tomcat集群有三种方式:使用DNS轮询,使用apache r-proxy代理方式,使用apache mod_jk方式。
(1)DNS轮询的缺点:当集群中某台服务器停止之后,用户由于dns缓存的缘故,便无法访问服务,必 须等到dns解析更新,或者这台服务器重新启动。还有就是必须把集群中的所有服务端口暴露给外界,没有用apache做前置代理的方式安全,并 且占用大量公网IP地址,而且tomcat还要负责处理静态网页资源,影响效率。优点是集群配置最简单,dns设置也非常简单。
(2)R- proxy的缺点:当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误。但是只要服务器再启动就不存 在这个问题。
(3)mod_jk方式的优点是,Apache 会自动检测到停止掉的tomcat,然后不再发请求过去。缺点就是,当停 止掉的tomcat服务器再次启动的时候,Apache检测不到,仍然不会转发请求过去。
R-proxy和mod_jk的共同优点是.可 以只将Apache置于公网,节省公网IP地址资源。可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理jsp和 servlet等动态请求。共同缺点是:如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供。R-proxy和 mod_jk对静态页面请求的处理,都可以通设置来选取一个尽可能优化的效果。这三种方式对实现最佳负载均衡都有一定不足,mod_jk相对好些,可以通过设置lbfactor参数来分配请求任务。

1.5 Apache+Tomcat
Apache+ Tomcat整合的目标:
(1) 可以提高整体web服务器性能,将动态页面交给tomcat处理,将静态文件交给apache处理,可以大大提高服务器的静态文件处理性能。
(2) 可以实现web服务器的负载均衡,服务器可采用集群的方式来响应客户端请求。Apache的作用是做代理,将请求分发给各个tomcat处理,tomcat作为集群服务器处理请求。这样可以提高整体web服务器性能和访问量。
(3) 可以实现无缝升级应用程序和容错处理,在tomcat集群中如果有一个tomcat挂掉了,用户还可以通过其他tomcat来进行访问,同时如果我们想升级应用程序,我们可以通过升级每个tomcat的应用程序来实现升级,在升级的过程中不会影响web服务器的访问。

下面就是以1个apache+2个tomcat通过mod_jk配置集群。

1.6 环境说明
所需软件包:
JDK:jdk-6u7-linux-i586.bin
Apache:httpd-2.2.19.tar.gz
Tomcat:apache-tomcat-7.0.16.tar.gz
Mod_jk:mod_jk-1.2.31-httpd-2.2.x.so

服务器:
服务器系统版本信息:CentOS release 5.3
服务器IP:172.30.4.6

2 软件安装
2.1 安装说明
将下载好的软件保存到服务器上:目录为/usr/tomcattest,也可以建立其他文件夹保存。
JDK:jdk-6u7-linux-i586.bin
Apache:httpd-2.2.19.tar.gz
Tomcat:apache-tomcat-7.0.16.tar.gz
Mod_jk:mod_jk-1.2.31-httpd-2.2.x.so

2.2 JDK安装
[code="java"]1) 拷贝软件包
# mkdir /usr/java #创建jdk安装目录
# cd /usr/tomcattest #进入jdk软件包目录
# cp jdk-6u7-linux-i586.bin /usr/java #将jdk安装文件拷贝到安装目录

2) 安装JDK
# cd /usr/java #进入jdk安装目录
# ./ jdk-6u7-linux-i586.bin #执行安装jdk文件

3) 配置环境变量
vim /etc/profile #修改系统环境变量文件
#添加内容如下:
export JAVA_HOME=/usr/java/jdk1.6.0_02
export JAVA_BIN=/usr/java/jdk1.6.0_02/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
# cd /usr/bin
# ln -s -f /usr/java/jdk1.6.0_02/jre/bin/java
# ln -s -f /usr/java/jdk1.6.0_02/bin/javac

4) 测试
# java -version #查看java安装版本
显示结果:java version "jdk1.6.0_02"[/code]

2.3 Apache安装
[code="java"]1) 解压
# cd /usr/tomcattest #进入apache软件包目录
# tar -zxvf httpd-2.2.19.tar.gz #解压apache安装文件

2) 安装
# cd httpd-2.2.19 #进入apache安装目录
# ./configure --prefix=/usr/apache # configure参数可以自己根据需要修改,可以使用—help获得相关命令参数信息。
# make #编译
# make install #安装

3) 启动
# cd /usr/apache/ #进入apache安装目录
# ./bin/apachectl start #启动apache服务器

4) 测试
访问apache服务器:http://172.30.4.6
响应结果:It works! #apache服务器安装成功[/code]

2.4 Tomcat安装
[code="java"]1. 解压
# cd /usr/tomcattest #进入tomcat软件包目录
# tar –zxvf apache-tomcat-7.0.16.tar.gz #解压tomcat安装包

2. 安装
# cp -P apache-tomcat-7.0.16 /usr/tomcat1 #拷贝tomcat1
# cp -P apache-tomcat-7.0.16 /usr/tomcat2 #拷贝tomcat2

3. 配置
因为该例子是在同一台服务器上安装两个tomcat服务器,避免服务器端口使用冲突,tomcat1端口采用默认配置,tomcat2端口需要重新配置。
# cd /usr/tomcat2/conf #进入tomcat2配置目录,可修改server.xml配置文件
# cd /usr/tomcat1/conf #进入tomcat1配置目录,可修改server.xml配置文件
# vim server.xml #修改tomcat2配置文件
(1) 修改server端口号
#tomcat1 默认配置
<Server port="8005" shutdown="SHUTDOWN">
#tomcat2 修改端口号为9005
<Server port="9005" shutdown="SHUTDOWN">

(2) 修改HTTP connector端口号
#tomcat1默认配置
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
#tomcat2 修改端口号为9080
<Connector port="9080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

(3) 修改 AJP connector 端口号
#tomcat1 默认配置
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
#tomcat2 修改端口号9009
<Connector port="9009" protocol="AJP/1.3" redirectPort="8443" />

(4) 修改 engine 名称
#tocmat1 修改jvmRoute=”tomcat1”
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
#tocmat2 修改jvmRoute=”tomcat2”
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">

4. 启动
# /usr/tomcat1/bin/startup.sh #启动tomcat1
# /usr/tomcat1/bin/startup.sh #启动tomcat2

5. 测试
#tomcat1测试
http://172.30.4.6:8080
#tomcat2 测试
http://172.30.4.6:9080

结果:显示tomcat首页[/code]

3 集群配置
3.1 apache+mod_jk+tomcat配置
[code="java"]1, httpd.conf的配置
# cd /usr/apache/conf #进入apache配置目录
# vim httpd.conf #修改httpd.conf配置文件
Include conf/mod_jk.conf #增加include配置

2, mod_jk.conf的配置
# touch mod_jk.conf #创建mod_jk.conf文件
# vim mod_jk.conf #修改mod_jk配置
#mod_jk 配置mod_jk包
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so
#workers 配置工作负责文件
JkWorkersFile conf/workers.properties
#jk log 配置jk日志文件
JkLogFile logs/mod_jk.log
#jk log leve 配置日志级别
JkLogLevel info
# 配置jk日志内存共享
JkShmFile logs/mod_jk.shm
#balancer 配置负载均衡模式
JkMount /*.jsp balancer

# cp /usr/tomcattest/mod_jk-1.2.31-httpd-2.2.x.so /usr/apache/modules #将mod_jkb包拷贝到apache的modules目录下

3, workers.properties的配置
# touch workers.properties #创建worker.properties文件
# vim workers.properties
#tomcat1的配置
worker.tomcat1.port=8009
worker.tomcat1.host=172.30.4.6
worker.tomcat1.reference=worker.template
worker.tomcat1.activation=A
#worker.tomcat1.lbfactor=1
#tomcat2 的配置
worker.tomcat2.port=9009
worker.tomcat2.host=172.30.4.6
worker.tomcat2.reference=worker.template
worker.tomcat2.activation=A
#worker.tomcat2.lbfactor=1
worker.list=balancer
#balancer 负载配置
worker.balancer.type=lb
worker.balancer.balance_workers=tomcat1,tomcat2
worker.balancer.sticky_session=1
#tempalte 负载模板配置
worker.template.type=ajp13[/code]

3.2 测试
1, 创建测试项目
新建一个项目:项目名称都为TestTomcat
新建一个jsp页面:名称为testjsp.jsp

<%@ page language="java" import="java.util.Date"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎访问</title>
</head>
<body>
<%
System.out.println(new Date()+"=============tomcat1=================");
%>
tomcat1=======<%=new Date()%>
</body>
</html>


2, 发布项目
(1)将测试项目打包,包名为TestTomcat.war,将测试项目发布到tomcat1服务器上 。
(2)修改项目testjsp.jsp文件

<%@ page language="java" import="java.util.Date"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎访问</title>
</head>
<body>
<%
System.out.println(new Date()+"=============tomcat2=================");
%>
tomcat2=======<%=new Date()%>
</body>
</html>


(3)将修改后的项目TestTomcat.war发布到tomcat2服务器上

3, 测试集群
分别在不同的客户端上访问apache代理服务器。
http://172.30.4.6/TestTomcat/testjsp.jsp

访问结果:
tomcat2=======Wed Jun 29 13:25:03 CST 2011
或者
tomcat1======Wed Jun 29 13:26:03 CST 2011

4 Session复制
在Tomcat集群中实现session同步,可以通过session共享和复制来实现,下面以session复制来实现session同步。
4.1 Session复制配置
1, Tomcat中server.xml的配置
# cd /usr/tomcat1/conf #进入tomcat配置目录
# vim server.xml #修改server.xml配置
# 在<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">后面加上以下配置:

<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"
address="228.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
<Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="auto" #默认为auto,改为自己的IP
port="4000" #同一台服务器上的tomcat必须修改为不同的端口,tomcat1修改为4001,tomcat2修改为4002。
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>


#分别给集群中每个tomcat在Engine后添加cluster配置,需要修改红色部分的配置:
address=”172.30.4.6” #本机IP地址
port=”4001” #同一机器需要修改端口号,tomcat1为4001,tomcat2为4002

2, Tomcat应用项目中web.xml的配置
# cd /usr/tomcat1/webapps #进入到web应用项目中
# vim /TestTomcat/WEB-INF/web.xml #修改web.xml
#在web.xml文件中加入

<!--此应用将与群集服务器复制Session-->
<distributable/>



4.2 测试
1, 修改项目文件
# cd /usr/tomcat1/webapps #进入到web应用项目中
# vim /TestTomcat/ testjsp.jsp #修改testjsp.jsp

<%@ page language="java" import="java.util.Date"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎访问</title>
</head>
<body>
<%
System.out.println(new Date()+"=============tomcat1=================");
session.setAttribute("name", "tomcat1");
%>
tomcat1=======<%=new Date()%>===<%=session.getId() %>===<%=session.getAttribute("name") %>
</body>
</html>


# cd /usr/tomcat2/webapps #进入到web应用项目中
# vim /TestTomcat/ testjsp.jsp #修改testjsp.jsp

<%@ page language="java" import="java.util.Date"contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>欢迎访问</title>
</head>
<body>
<%
System.out.println(new Date()+"=============tomcat2=================");
%>
tomcat2=======<%=new Date()%>===<%=session.getId() %>===<%=session.getAttribute("name") %>
</body>
</html>


2, 测试
(1) 访问http://172.30.4.6/TestTomcat/testjsp.jsp
页面显示结果为:
tomcat1===Thu Jun 30 11:24:10 CST 2011==27E35C1389F5595A17F8B5FD00561EDA.tomcat1===tomcat1
(2) 关闭tomcat1
# /usr/tomcat1/bin/shutdown.sh

(3) 访问http://172.30.4.6/TestTomcat/testjsp.jsp
页面显示结果为:
tomcat2==Thu Jun 30 11:37:42 CST 2011===605087B0015E978752640DB389B874A2.tomcat2===tomcat1
#证明session复制成功
Librepilot _64位window10环境下的搭建及一些坑的解决办法   刚入IT行业的小菜鸟,在window上折腾了四天的librepilot地面控制站的搭建,想着这么辛苦不能白费了,看网上相关资料少得可怜,唯一一个详细教程还是在32位环境下,一大堆坑,所以把自己的经验写下来,供大家一起参考。 参考的原文是:https://www.cnblogs.com/jasonchan1202/p/7809937.html的博客,但是执行下来才发现这个博客对64位系统极其不... 阅读详情

相关推荐

Python量化投资入门教程:从零构建你的第一个交易策略

量化投资教程以数学模型和计算机程序实现超额收益,选用Python工具链完成数据获取、策略构建及回测。通过移动平均线交叉策略示例,展示数据预处理、信号生成、收益计算及可视化全流程,结合收益率、最大回撤和夏普比率评估策略,并建议参数优化与策略融合提升稳健性。

ylmx5201314的博客 2456

零基础搭建Tomcat集群(超详细)

零基础搭建Tomcat集群,配图超30+张,做到完完全全一步一步零基础带你搭建Tomcat集群!

緑水長流*z 1万+

【STM32】STM32 CANFD外设的几种消息接收过滤模式

在控制器区域网络(CAN)系统中,正确配置消息过滤器对于有效管理网络通信至关重要。特别是在使用Flexible Data-rate Controller Area Network(FDCAN)时,选择合适的过滤器类型可以大大提高网络效率和消息处理速度。

林愿留的博客 6226

Tomcat 集群介绍

通过多组实验,使用不同技术实现了 session 持久机制。

wang11876的博客 2174

MobilenetV1、V2、V3系列详解

Mobilenet系列模型作为当前主流的端侧轻量级模型被广泛应用,很多算法都会使用其作为backbone提取特征,这一章对Mobilenet系列模型V1,V2,V3做一个总结。

turned的博客 1万+

Gemini Enterprise免费试用攻略:解锁企业级AI平台的隐藏技巧与避坑指南

本文详细介绍了Gemini Enterprise免费试用的全流程攻略,包括注册优化、团队协作、资源管理和典型应用场景。通过解锁企业级AI平台的核心功能如Gemini 3.0 Pro模型和Nano Banana图像生成系统,帮助企业高效评估AI与业务的契合度。文章还提供了安全合规与数据管理的实用建议,确保试用过程顺畅无忧。

weixin_29233857的博客 657

Tomcat集群搭建超详细

Tomcat集群搭建超详细

weixin_50556778的博客 6347

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。优点:- 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。- 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。-缺点:- 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。

Hyman Qiu 2688

Tomcat 集群部署

环境准备​ 虚拟机是通过软件模拟出具有完整硬件系统的功能​ 为什么Java需要JVM虚拟机​ 早期C语言不支持跨平台,如果C语言想要在Windows Linux Mac上运行,需要进行分别编译,那么在Linux上有很多优秀的软件,如果需要在Windows上使用需要重新编译,移植性差而Java则不同,Java是可以跨平台,只需要将源码进行一次编译,能够在不同的操作系统运行JAVA是如何做到的?​ 它只需要在Windwos Linux系统上运行一个jvm,这样我们能将J

AHui_优快云的博客 2500

使用下一代的嵌入式IDE-PlatformIO 教程

1.生成工程 1.1 打开STM32CubeMX: 选择你的MCU,这里我用的是STM32F103RC RCC中开启外部HSE时钟,外部时钟比HSI更稳定些 开启DEBUG 4线 打开串口1用于打印调试信息,波特率115200,校验位0,停止位1 打开串口2用于MODBUS协议,波特率9600,校验位0,停止位1 接入RT-thread:参考官方文档 基于 CubeMX 移植 RT-Thread Nano 根据官方文档,需要1.取消生成HardFault_Handler、PendSV_Handler、Sy

jiladahe1997的博客 3万+

来!简单了解一下计算机发展史!

​ 1936年,英国数学家阿兰・麦席森・图灵提出了一种抽象的计算模型——图灵机( Turing machine)。图灵机,又称图灵计算机,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人类进行数学运算。​ 图灵机是一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。

m0_57290404的博客 2907

Tomcat的集群

在一个物理机器上进行集群 在同一个物理服务器上进行部署两个服务器。 首先需要两个Tomcat的服务器(就是tomcat的解压安装了,这里就不进行赘述了) 找到其中的一个Tomcat中conf中的server.xml 找到以下标签()的位置,然后将下边的复制到此 <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">

weixin_45648789的博客 541

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

tomcat 集群

集成 集成……老听人说具体它是个啥东东咧,下面这个关于tomcat集成就解释的蛮清楚的 借鉴一下下 目录 TOMCAT集群 1 1 集群 1 1.1 什么是集群 1 1.2 集群的特性 1 1.3 集群的分类 1 1.4 TOMCAT集群配置的优缺点 2 1.5 APACHE+TOMCAT 2 1.6 环境说明 2 2 软件安装 3 2.1 安装说明

牵手*-*白首 966

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

tomcat集群_集群Tomcat

在本文中,我将向您展示如何使用Apache / Tomcat来设置负载平衡器。 我知道之前已经做了不计其数的时间,但是我将在下一篇文章(预告片,预告片)中使用此设置,因此至少我会将其记录在某个地方。 自Apache Tomcat诞生以来,它就是参考JSP /容器。 尽管缺乏JEE的全面支持,但它确实具有吸引力。 使用功能齐全的商用JEE应用服务器的原因并不总是出于技术原因。 在像Sprin...

dlz00001的博客 290

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

tomcat 集群搭建

写在前面: Disc:最近研究了一下tomcat集群搭建,这里只是作为个人整理,其中参见了很多优秀的网络资源会在后面列出,如果你想快速的完成配置可以参见本文,如果想了解更多内容可以参见下面的资源列表,那里会给你更多有用的内容。 Context:Apache2.2、Tomcat6.0(非安装版)、mod_jk.so(1.2.37)、windows res-list:  http://bl

走在路上 1420

tomcat集群

对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块。要实现这一点,大体上有两种方式,一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器来获取数据;另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Sessio

小菜鸟的天地 6万+

TOMCAT集群

TOMCAT集群 目录 TOMCAT集群 1 1 集群 1 1.1 什么是集群 1 1.2 集群的特性 1 1.3 集群的分类 1 1.4 TOMCAT集群配置的优缺点 2 1.5 APACHE+TOMCAT 2 1.6 环境说明 2 2 软件安装 3 2.1 安装说明 3 2.2 JDK安装 3 2.3 APACHE安装 4 2.4 TOMCAT安装 4 3

neutrojan的专栏 4705

linux tomcat集群

TOMCAT集群  目录  TOMCAT集群 1  1 集群 1  1.1 什么是集群 1  1.2 集群的特性 1  1.3 集群的分类 1  1.4 TOMCAT集群配置的优缺点 2  1.5 APACHE+TOMCAT 2  1.6 环境说明 2  2 软件安装 3  2.1 安装说明 3  2.2 JDK安装 3  2.3 APACHE安装 4  2.4

sinat_33388558的博客 390

基于Redis集群的tomcat集群Session共享

        Tomcat使用Redis缓存Session,集中把Session缓存到Redis服务器中,而不是缓存到服务器的内存中,可以实现集群服务器共享Session。         应用场景:             1.当网站接收大量请求时,单一服务器终究无法满足需要处理的负荷量             2.服务器不稳定(莫名其妙的宕机等),搭建tomcat集群救急。     ...

橙子博客 2614

tomcat集群部署

本机上配置2个tomcat

ldq18的博客 2058

Tomcat 集群实验

看到很多人在做这类实验,前段时间公司在新上线的站点上本来也准备使用集群的,但由于程序中有sso认证缓存没有实现分布式,所以计划搁浅了。本来调整自己程序的实现方式后也是可以做集群的,但单独一台小机的压力测试结果还算比较满意,暂时放一放,况且传闻集群下session复制问题多多,我今天也在验证这个问题。以下是从没掌握配置到了解的过程概要:apache 2.2           192.168

Toybox 3893

Tomcat和集群

Tomcat和集群

2303_76837797的博客 1066

Apache+tomcat集群

用apache和tomcat搭建集群,实现负载均衡 集群的概念  集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通

WarcraftJimmy的专栏 1843

linux下部署tomcat集群

最进在学习linux下部署系统,对linux有个大概的了解,才发现linux真的非常强大,一般的系统都是部署在linux下的,学习linux非常重要,包括shell的编程,linux学习道路还很长。 一般都是安装虚拟机,然后在虚拟机中安装linux系统,redhat或者ubutun系统,通过xshell连接系统,xfp进行win7和linux系统下文件的共享,传输。

Ang_DD的专栏 1370
上一篇: java对象初始化
下一篇: SSO单点登录
xmong
博客等级 码龄19年 33粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值