- 浏览: 385761 次
- 性别:
- 来自: 合肥
文章分类
- 全部博客 (314)
- java (132)
- 生活 (13)
- javase模式 (6)
- weblogic (4)
- jquery (5)
- sql (21)
- ecside (1)
- el (3)
- css (5)
- spring (7)
- ireport (2)
- linux (14)
- struts2 (2)
- jstl (1)
- rmi (1)
- rose (9)
- js (6)
- swing (4)
- webservice (1)
- jboss (1)
- ejb3 (2)
- xml (1)
- 线程 (9)
- socket (3)
- jms (2)
- tomcat (10)
- 领域驱动 (3)
- json (3)
- 权限 (2)
- jvm (1)
- 书籍 (1)
- eclipse RCP (0)
- 数据库设计 (10)
- 软件分析建模 (5)
- 分析建模 (3)
- hibernate jpa (5)
- Java 获取系统信息,包括CPU使用率、硬盘大小、网卡状态、系统信息等 (1)
- 项目管理 (2)
- 财务 (0)
- oracle (2)
- 需求 (2)
- rcp gef (0)
- c++ (1)
- hadoop (2)
- BIGDATA (3)
- c (6)
最新评论
-
lh_kevin:
...
jpa 注解 -
一别梦心:
你好,我也遇到此问题了。就你贴的那段代码,你说了两种解决方式, ...
Hibernate的Antlr在Weblogic中产生Jar冲突的历史缘故以及解决办法 -
fireinjava:
...
el表达式 -
宋建勇:
...
JSON: property "xxx" has no getter method in class "..." -
handawei:
有道理,jpa是orm框架的java标准,它关注的是对象到关系 ...
jpa 注解
linux下tomcat集群配置案例
配置前的准备工作
在配置集群应用前要对集群的配置信息有一个良好的设计,下面就是我们这次配置的集群信息:
在同一网段内的不同机器上配置集群,以下是以2台机器做群集,
机器类型 操作系统 硬件配置 角色 备注
普通PC Linux as 4 IP:10.3.15.85 PORT:9080 Managed Server Pc1
普通PC Linux as 4 IP: 10.3.15.84 PORT:9080 Managed Server Pc2
普通PC Linux as 4 IP: 10.3.15.85 PORT:80 Balancer Server Pc1
1 操作系统
RedHat Linux as4
2 所需软件
Apache 2.0.54 下载地址
http://apache.freelamp.com/httpd/httpd-2.0.54.tar.gz
Tomcat5.5.9 下载地址
http://apache.justdn.org/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.tar.gz
Mod_jk 1.2.14 下载地址
http://apache.justdn.org/jakarta/tomcat-connectors/jk/source/jk-1.2.14/jakarta-tomcat-connectors-1.2.14-src.tar.gz
Jdk 1_5_0_04 下载地址
http://java.sun.com/j2se/1.5.0/download.jsp
备注:下载时将所需软件包文件保存在/usr/local目录下,也可以采用jdk1.4
3 安装步骤
3.1 安装JDK
# cd /usr/local/
# chmod 777 jdk-1_5_0_04-linux-i586-rpm.bin
# ./jdk-1.5.0_04-linux-i586-rpm.bin
# cd /usr/java/
# ln -s /usr/java/jdk-1_5_0_04 /usr/local/java
# vi /etc/profile
#添加如下内容
JAVA_HOME=/usr/local/java/
CLASSPATH=/usr/local/java/lib/dt.jar:/usr/local/java/lib/tools.jar
PATH=/usr/local/java/bin:$PATH
export PATH JAVA_HOME CLASSPATH
3.2 安装Apache
# cd /usr/local/
# tar xvfz httpd-2.0.54.tar.gz
# cd httpd-2.0.54
#./configure—prefix=/usr/local/apache—enable-module=so
# make
# make install
# cd /usr/local/apache/conf
# vi ./httpd.conf
将Listen 80修改为Listen <Your IP>:80
将ServerName修改为ServerName <HOST-NAME>:80
在DirectoryIndex中添加index.jsp
# cd /usr/local/apache/bin/
# ./apachectl configtest
若显示Syntax ok则表明安装成功
#./apachectl start
启动apache服务,访问本机80端口,查看端口是否正常
# ./apachectl stop
关闭服务
备注:prefix定义apache的安装路径
3.3 安装Tomcat
# cd /usr/local/
# tar xvfz jakarta-tomcat-5.5.9.tar.gz
# ln –s /usr/local/jakarta-tomcat-5.5.9 /usr/local/tomcat
# vi /usr/local/tomcat/bin/catalina.sh
JAVA_HOME=/usr/local/java
启动服务后,访问本机8080端口,查看端口是否正常
# /usr/local/tomcat/bin/startup.sh /startup.bat
关闭服务
# /usr/local/tomcat/bin/shutdown.sh /shutdown.bat
3.4 安装JK
#cd /usr/local/
# tar xzvf jakarta-tomcat-connectors-1.2.14-src.tar.gz
#cd jakarta-tomcat-connectors-1.2.14-src/jk/native
#chmod 755 buildconf.sh
#./buildconf.sh
#./configure—with-apxs=/usr/local/apache/bin/apxs
#make
#make install
#cd /usr/local/ jakarta-tomcat-connectors- jk1.2.14-src/jk/native/apache-2.0/
#cp mod_jk.so /usr/local/apache/modules/
4 系统整合
4.1 在文件最末尾加上如下语句
#vi /usr/local/apache/conf/httpd.conf
# Load mod_jk
LoadModule jk_module modules/mod_jk.so
# Configure mod_jk
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMount /*.jsp loadbalancer
JkMount /servlet/* loadbalancer
JkMount /application/* loadbalancer
4.2 添加workers.properties
#vi /usr/local/apache/conf/workers.properties
内容如下:
worker.list=loadbalancer
#Define a ‘local_worker’ worker using ajp13
worker.worker1.port=8009
worker.worker1.host=10.3.15.84
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker1.local_worker=0
worker.worker1.cachesize=1000
worker.worker1.cache_timeout=600
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=0
worker.worker1.reclycle_timeout=300
worker.worker1.retries=3
#Define another ‘local_worker’ worker using ajp13
worker.worker2.port=8009
worker.worker2.host=10.3.15.85
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.worker2.local_worker=1
worker.worker2.cachesize=1000
worker.worker2.cache_timeout=600
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=0
worker.worker1.reclycle_timeout=300
worker.worker1.retries=3
#Define the LB worker
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1,worker2
worker.loadbalancer.local_worker_only=1
worker.loadbalancer.sticky_session=true
worker.loadbalancer.sticky_session_force=true
注:以上定义了两个worker,一个为worker1,另一个为worker2,定义了一个负载平衡服务器loadbalancer,其中标蓝色的为重点配置项,相关的详细说明可以看官方的网站文档:http://tomcat.apache.org/connectors-doc/
worker.list=loadbalancer
设定工作的负载平衡器,各Tomcat节点不能加入此列表。
worker.worker1.lbfactor
负载平衡的权重比,如果此权重比越大,则分配到此节点的请求越多,如以上两个节点的权重比为1:1,则为平均分配。
worker.loadbalancer.balance_workers=worker1,worker2
指定此负载平衡器负责的Tomcat应用节点。
worker.loadbalancer.sticky_session=true
此处指定集群是否需要会话复制,如果设为true,则表明为会话粘性,不进行会话复制,当某用户的请求第一次分发到哪台Tomcat后,后继的请求会一直分发到此Tomcat服务器上处理;如果设为false,则表明需求会话复制。
worker.loadbalancer.sticky_session_force=true
如果上面的sticky_session设为true时,建议此处也设为true,此参数表明如果集群中某台Tomcat服务器在多次请求没有响应后,是否将当前的请求,转发到其它Tomcat服务器上处理;此参数在sticky_session=true时,影响比较大,会导致转发到其它Tomcat服务器上的请求,找不到原来的session,所以如果此时请求中有读取session中某些信息的话,就会导致应用的null异常。
4.3 修改server.xml
#vi /usr/local/tomcat/conf/server.xml
在120行左右加入如下语句
<Engine name=”Standalone” defaultHost=”localhost” jvmRoute=”tomcat1”></Engine>
若第二台worker1,将jvmRoute的修改为worker2
并且把下面群集配置释放出来,也就是去掉注释。
<Cluster className=”org.apache.catalina.cluster.tcp.SimpleTcpCluster”
managerClassName=”org.apache.catalina.cluster.session.DeltaManager”
expireSessionsOnShutdown=”false”
useDirtyFlag=”true”>
<Membership
className=”org.apache.catalina.cluster.mcast.McastService”
mcastAddr=”228.0.0.4”
mcastPort=”45564”
mcastFrequency=”500”
mcastDropTime=”3000”/>
<Receiver
className=”org.apache.catalina.cluster.tcp.ReplicationListener”
tcpListenAddress=”10.3.15.85”
tcpListenPort=”4001”
tcpSelectorTimeout=”100”
tcpThreadCount=”6”/>
<Sender
className=”org.apache.catalina.cluster.tcp.ReplicationTransmitter”
replicationMode=”pooled”/>
<Valve className=”org.apache.catalina.cluster.tcp.ReplicationValve”
filter=”.*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;”/>
<Deployer className=”org.apache.catalina.cluster.deploy.FarmWarDeployer”
tempDir=”/tmp/war-temp/”
deployDir=”/tmp/war-deploy/”
watchDir=”/tmp/war-listen/”
watchEnabled=”false”/>
</Cluster>
至此,系统已经整个完毕
启动apache和tomcat服务
# /usr/local/apache/bin/apachectl start
#/usr/local/tomcat/bin/catalina.sh start
将如下内容添加至/etc/rc.d/rc.local文件末尾,以便系统启动后开启apache,tomcat服务
/usr/local/tomcat/bin/catalina.sh start
/usr/local/apache/bin/apachectl start
5 测试群集
经过以上所有步骤,一个具有2个节点的tomcat群集已经配置完毕,但有时可能不能进行节点间的会话复制,是因为要把所有节点的server.xml中的tcpListenAddress=”auto”改为tcpListenAddress=”10.3.15.85” ,也就是改为真实的ip地址。
如果在启动时,出现如下信息:skipping state transfer. No members active in cluster group. 也需要修改上面的信息。否则,session是不能在多个tomcat间复制session的。
5.1 编写一个简单web应用,包含如下内容:
写一个如下的2个jsp页面。
test.jsp内容如下:
<%@ page contentType=”text/html; charset=GBK” %>
<%@ page import =”com.WorkerBean”%>
<%@ page import=”java.net.*” %>
<html>
<head>
<title>
test
</title>
</head>
<body bgcolor=”#ffffff”>
<%= request.getSession().getId() %>
<%
int i=0;
WorkerBean test = new WorkerBean();
//HttpSession tsession=request.getSession();
test.setWorker_no(request.getSession().getId()+i);
session.setAttribute(“worker_no”,test.getWorker_no());
System.out.println(“OK”);
System.out.println(“session.getAttribute()==”+session.getAttribute(“worker_no”));
out.println(“session.getAttribute()==”+session.getAttribute(“worker_no”)); out.println(“OK”);
%>
<a href=”testResult.jsp”> testResult.jsp</a>
<h1>Tomcat </h1>
</body>
</html>
testResult.jsp内容如下
<%@ page contentType=”text/html; charset=GBK” %>
<%@ page import =”com.WorkerBean”%>
<%@ page import=”java.net.*” %>
<html>
<head>
<title>
test
</title>
</head>
<body bgcolor=”#ffffff”>
<%
System.out.println(“OK”);
System.out.println(“session.getAttribute()==”+session.getAttribute(“worker_no”));
out.println(“OK”); out.println(“session.getAttribute()==”+session.getAttribute(“worker_no”));
%>
<h1>Tomcat </h1>
</body>
</html>
5.2 编写这个jsp调用的javaBean类。
WorkerBean.java
public class WorkerBean implements java.io.Serializable {
String worker_no;
/**
@return返回worker_no。
*/
public String getWorker_no() {
return worker_no;
}
/**
@param worker_no要设置的worker_no。
*/
public void setWorker_no(String worker_no) {
this.worker_no = worker_no;
}
}
注意:这个类一定要实现序列化,是为了把session对象存在这个类中,session是要在群集中复制的,否则session对象不能在群集中复制。
5.3配置web.xml文件
注意:一定要加入<distributable/>,其他的就是和普通的应用一样的。
<?xml version=”1.0” encoding=”UTF-8”?>
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”>
<web-app>
<display-name>web</display-name>
<distributable/>
</web-app>
5.4确保server.xml如附录1和附录2所示:略
5.5 发布web应用,把上面的所有文件考到tomcat的webapps/ROOT目录下,覆盖掉原来的文件就可以了。
5.6 测试web应用
启动apache和tomcat1和tomcat2.
在浏览器地址栏中输入 http://10.3.15.85/ 会看到如下页面
在浏览器地址栏中输入http://10.3.15.85/test.jsp 会看到如下页面
点击上面页面中的2.jsp连接,进入如下页面
可以同看控制台的输出发现,2个tomcat轮流的响应请求的。
然后,任意的关掉其中的一台tomcat, 再点击2.jsp ,还是可以得到回应的。说明群集自动接管了出错机器的应用,发现其中的session的值也是相同的,说明session在群集中不同的tomcat之间进行了会话复制。
总结:通过以上测试和其他工具的测试,发现如果用2台机器作tomcat群集,比一台单独得tomcat支持更多的并发,同时可以做到一台出错时,另一台自动接管。但没有2台单独得tomcat支持的并发多。
本篇文章来源于锋芒网(www.ixdba.net) 原文链接:http://www.ixdba.net/a/lb/2010/0610/200.html
发表评论
-
arm体系结构
2014-04-07 02:18 884嵌入式系统 概况 1. 组成 软件平台:应 ... -
linux环境变量文件
2014-02-25 21:33 720/etc/profile、~/.b ... -
unix环境高级编程
2014-02-24 15:06 778unix环境高级编程笔记 准备 ... -
linux
2012-04-18 12:47 0转:http://blog.csdn.net/sikinzen ... -
sqlplus: Command not found. if: Expression Syntax. 错误解决方案 .
2012-02-22 22:33 2232oracle登录时 sqlplus: Command no ... -
redhat5安装oracle10
2011-01-07 09:47 12551.安装JDKhttp://java.sun.com(1) 下 ... -
网络命令
2010-11-18 17:03 1221转载:http://www.cublog.cn/u3/9938 ... -
集群概述
2010-11-10 10:29 1078Linux集群技术概论1 集群 ... -
常见文件解压和压缩
2010-09-01 12:01 942linux下常用压缩格式的压缩与解压方法 大致总结了一下l ... -
分布式设计与开发
2010-08-27 15:45 880在IDF05(Intel Developer Forum 20 ... -
linux命令
2010-08-27 10:43 782安装proftpd-1.3.1 tar xjvf ... -
安装JDK
2010-08-26 17:10 1370本文CentOS版本为5.4 final,使用图形界面与命令结 ... -
日期同步
2010-08-22 13:42 973在Linux中用于时钟查看和设置的命令主要有date、hwcl ... -
linux目录结构
2010-06-11 17:07 1032/(root) 根目录,一般建 ...
相关推荐
Linux 下 Tomcat 的安装和优化 Tomcat 是一个功能强大且流行的 Java 服务器,广泛应用于 Web 应用程序的开发和部署。在 Linux 服务器下安装和优化 Tomcat 是非常重要的,本文将详细介绍 Tomcat 的安装和优化过程。 ...
【Linux下Tomcat与Apache Web服务器整合】 在互联网和企业网络应用中,Web技术占据了核心地位,TCP/IP协议和Web服务器是实现这一目标的关键组成部分。Linux操作系统因其稳定性和开源特性,成为了众多企业和开发者的...
Linux 下 Tomcat 重新启动 在 Linux 系统下,Tomcat 的重新启动是一个常见的问题,很多开发者和运维人员都会遇到这种情况。那么,如何在 Linux 系统下重新启动 Tomcat 呢?下面,我们将详细讲解 Tomcat 的重新启动...
linux下tomcat部署
Linux下Tomcat的安装配置是Java开发者在服务器端部署应用程序时必须掌握的一项基本技能。Tomcat是一款开源的、轻量级的Java应用服务器,主要用于执行Servlet和JavaServer Pages(JSP)应用程序。以下是对Tomcat在...
linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+安装软件linux下tomcat+JDK+redhat配置文档+...
### Linux下Tomcat服务器的常规使用方法 #### 连接Linux系统 在开始操作Tomcat服务器之前,首先需要通过SSH连接到Linux系统。这一步骤是进行任何远程操作的基础。 **命令示例**: ``` ssh 202.119.11.238 ``` ...
Linux下 tomcat的守护进程、心跳程序 自行重启TOmcat服务
linux 下 tomcat 管理脚本 启动停止状态等
### Linux下Tomcat的启动、关闭、杀死进程 在Linux环境下部署和管理Java Web应用程序时,Apache Tomcat作为一款广泛使用的应用服务器,其操作过程对于系统管理员和开发人员来说至关重要。本文将详细介绍如何在Linux...
在Linux环境下部署Java Web应用程序,特别是使用Tomcat服务器时,通常需要进行一系列手动步骤,包括配置环境变量、解压Tomcat、复制WAR文件到webapps目录等。然而,通过编写自动化脚本,我们可以将这些繁琐的过程...
Linux下tomcat服务有关命令,一:Linux下tomcat服务的启动、关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 切换到tomcat主目录下的bin目录(cd usr/local/tomcat/bin)
Linux 下 Tomcat+nginx+redis 负载均衡配置是指在 Linux 操作系统下,使用 Tomcat、nginx 和 Redis 实现负载均衡和资源共享的配置方法。该配置主要通过 nginx 实现负载均衡,Tomcat 提供 Web 服务,Redis 提供 ...
通过这种方式,我们可以解决Tomcat在Linux环境下无法连接MySQL数据库的问题。然而,为了保持系统的安全性,务必谨慎处理权限设置,并定期审查和更新这些策略。同时,对于数据库连接,使用连接池和适当的认证机制也是...
在Linux系统下安装Tomcat是一项常见且重要的任务,尤其对于那些致力于Java应用开发与部署的IT专业人士来说。本文将深入探讨这一过程中的关键步骤和技术细节,帮助读者理解并掌握在Linux环境中成功部署Tomcat服务器的...
### Linux 下 Tomcat 优化设置最大连接数及内存 JConsole 监控 #### 一、Tomcat 内存优化 ##### 1.1 基本原理 在启动 Java 应用程序时,JVM(Java 虚拟机)会为应用程序分配一定的初始内存和最大内存。这些设置对...
### Linux下Tomcat的安装-详细操作步骤 #### 一、前言 本文将详细介绍如何在Linux环境下安装并配置Tomcat服务器。Tomcat是一款开源的Servlet容器,它实现了Servlet和JavaServer Pages等技术规范,提供了作为Web...
### Linux 下 Tomcat 的配置详解 #### 一、前言 Apache Tomcat 是一款开源的 Servlet 容器,主要用于运行 Java 应用程序。在 Linux 系统中部署和配置 Tomcat 可以提高服务器的稳定性和安全性。本文将详细介绍在 ...
【Linux下Tomcat集群配置详解】 在Linux环境中配置Tomcat集群是提高Web应用程序可用性和负载均衡的重要步骤。本文将详细讲解如何在Linux系统上搭建Tomcat集群,并利用Nginx作为反向代理服务器来实现集群的管理和...