如何在linux下构建和发布lemon oa 官网OA到tomcat

Linux下的Failed to get local InetAddress for VMID问题在Linux下跑项目的时候,Tomcat控制台报了以下错误:
Linux下的Failed to get local InetAddress for VMID问题在Linux下跑项目的时候,Tomcat控制台报了以下错误:
[摘要:com.mchange.v2.c3p0.impl.C3P0ImplUtils generateVmId 疑息: Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomness java.net.UnknownHostException: Along.Fedora: Along.Fedora at java.net.]
com.mchange.v2.c3p0.impl.C3P0ImplUtils generateVmId信息: Failed to get local InetAddress for VMID. This is unlikely to matter. At all. We'll add some extra randomnessjava.net.UnknownHostException: Along.Fedora: Along.Fedora&&& at java.net.InetAddress.getLocalHost(InetAddress.java:1353)&&& at com.mchange.v2.c3p0.impl.C3P0ImplUtils.generateVmId(C3P0ImplUtils.java:120)&&& at com.mchange.v2.c3p0.impl.C3P0ImplUtils.&clinit&(C3P0ImplUtils.java:98)&&& at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.&init&(PoolBackedDataSourceBase.java:227)&&& at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.&init&(AbstractPoolBackedDataSource.java:62)&&& at com.mchange.boPooledDataSource.&init&(ComboPooledDataSource.java:109)&&& at com.mchange.boPooledDataSource.&init&(ComboPooledDataSource.java:105)&&& at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)&&& at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)&&& at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)&&& at java.lang.reflect.Constructor.newInstance(Constructor.java:513)&&& at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
主要是因为系统没有找到主机名对应的IP,修改Linux的host文件即可。具体操作步骤如下:vi /etc/hosts在行127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4后加上 Along.Fedora保存即可。Linux查找域名时通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求。
Linux于host相关的几个文件如下:/etc/host.conf功能:指定主机名查找方法,通常指先查找文件/etc/hosts,找不到时再向DNS服务器请求。对于大多数用户不用改动此文件内容。Linux: /etc/host.conf文件内容order hosts, bindmulti on
/etc/resolv.conf文件功能:DNS客户机配置文件,设置DNS服务器的IP地址及DNS域名相关文件:/etc/host.conf文件格式:domainname 域名search 域名nameserver Primary_DNS_Server_IP_addressnameserver Second_DNS_Server_IP_address其中domainname和search可同时存在,也可只有一个;nameserver可指定多个
/etc/hosts#/etc/hosts#文件格式: IPaddress hostname aliases#文件功能: 提供主机名到IP地址的对应关系,建议将自己经常使用的主机# 加入此文件中,也可将没有DNS记录的机器加入到此文件中,# 这样会方便网络应用127.0.0.1 localhost localhost.localdomain
感谢关注 Ithao123Linux频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊您所在的位置: &
Linux下搭建tomcat集群全记录
Linux下搭建tomcat集群全记录
bluishglc的博客
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法。为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上……
1.预期目标
本文将讲述如何在Linux下搭建tomcat集群,以及搭建过程中可能的遇到的问题和解决方法。为简单起见,本文演示搭建的集群只有两个tomact节点外加一个apache组成,三者将安装在同一机器上:
安装路径:/usr/local/apache2
安装路径:/usr/local/apache-tomcat-6.0.33-1
端口:6080
安装路径:/usr/local/apache-tomcat-6.0.33-2
端口:7080
2.所需要软件列表
当前最新版本:2.2.21
本文采用源码方式安装,源码包下载地址:/apache-mirror//httpd/httpd-2.2.21.tar.gz
其他版本下载地址参见:http://httpd.apache.org/download.cgi
当前最新版本:6.0.33
本文使用自解压的tar.gz包进行安装,下载地址:/apache-mirror/tomcat/tomcat-6/v6.0.33/bin/apache-tomcat-6.0.33.tar.gz
其他版本下载地址参见:http://tomcat.apache.org/download-60.cgi
Apache Tomcat Connector (也就是mod_jk)
当前最新版本:JK-1.2.32
本文采用源码方式安装,源码包下载地址:http://www.apache.org/dist/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.32-src.tar.gz
其他版本下载地址参见:http://tomcat.apache.org/download-connectors.cgi
3.软件安装
3.1 安装apache
1.进入下载好的httpd-2.2.21.tar.gz文件所在目录,执行解压操作:
tar&-zxvf&httpd-2.2.21.tar.gz&
2.进入解压出的文件夹根目录:
cd&httpd-2.2.21&
3.进行编译参数配置:
./configure&--prefix=/usr/local/apache2&--enable-mods-shared=all&
关于configure参数的更多内容可参考:
http://httpd.apache.org/docs/2.2/en/programs/configure.html#installationdirectories
4.编译安装:
make &make&install&
5.启动和关闭apache
完成上述步骤后,apache的安装就结束了,通过下面的命令启动和关闭apache:
/usr/local/apache2/bin/apachectl&start&
/usr/local/apache2/bin/apachectl&stop&
3.2 关于在安装apache过程中报Cannot use an external APR with the bundled APR-util错误的解决办法
有时候,在安装apache,执行./configure操作时会报这个错误,解决方法是安装apache2.2.x自身携带的apr,方法为:
1.自源码安装目录httpd-2.2.21进入apache2.2.x自带apr的安装目录
cd&srclib/apr&
2.安装apr(此处将之安装在/usr/local/apr下,如果系统中已经安装apr,可找到安装目录进行覆盖)
./configure&--prefix=/usr/local/apr &make &make&install&
3.安装apr-util
./configure&--prefix=/usr/local/apr-util&--with-apr=/usr/local/apr &make &make&install&
4.使用新安装的apr重新进行apache编译配置
放回安装根目录httpd-2.2.21,执行:
./configure&--prefix=/usr/local/apache2&\ &--enable-mods-shared=all&\ &--with-apr=/usr/local/apr&\ &--with-apr-util=/usr/local/apr-util/bin&
如果你安装是apache-2.4以上版本,有以下几点不同:
1、需要单独下载apr和apr-util
apr下载地址: http://mirror./apache//apr/apr-1.4.6.tar.bz2
apr-util下载地址:http://mirror./apache//apr/apr-util-1.4.1.tar.bz2
2. 此外还需要安装pcre
去下载pcre,解压进入源码目录执行
./configure&--prefix=/usr/local/pcre&
3. 最后安装apache时configure需要这样配置
./configure&--prefix=/usr/local/apache2&\ &--enable-mods-shared=all&\ &--with-apr=/usr/local/apr&\ &--with-apr-util=/usr/local/apr-util/bin &--with-pcre=/usr/local/pcre&
3.3 安装Apache Tomcat Connector(mod_jk)
1.进入下载好的tomcat-connectors-1.2.32-src.tar.gz文件所在目录,执行解压操作:
tar&-zxvf&tomcat-connectors-1.2.32-src.tar.gz&
2.进入解压出的文件夹下的native子目录:
cd&tomcat-connectors-1.2.32-src/native&
3.进行编译参数配置:
./buildconf.sh &./configure&--with-apxs=/usr/local/apache2/bin/apxs&\ &--with-java-home=$JAVA_HOME&--with-java-platform=2&\ &--enable-jni&
4.编译安装:
make &make&install&
如果成功结束,你可以在/usr/local/apache2/modules/下找到mod_jk.so文件。
3.4 安装tomcat
两次解压下载到的apache-tomcat-6.0.33.tar.gz文件至/usr/local/,并分别重命名为apache-tomcat-6.0.33-1和apache-tomcat-6.0.33-2
4.集群配置
4.1 配置tomcat
1.修改端口
对于tomcat配置主要集中在conf/server.xml文件上。首先,鉴于是在同一机器上运行两个tomcat实例,因此,要对server.xml中配置的所有端口进行修改,避免端口被占用,一种简单而稳妥的修改方法是将该文件中出现的所有端口号按一种简单的规则统一进行改动,比如在原端口号基础上统一加1000或减1000。基于这个原则,apache-tomcat-6.0.33-1的连接端口修改为
6080,apache-tomcat-6.0.33-2的连接端口修改为:7080,其他端口配置同样依照该原则。
2.开启tomcat集群支持
同样是在conf/server.xml文件里,进行两处改动:
改动1:为&Engine&设置jvmRoute
实际上,在server.xml里就有一段现成的带jvmRoute的&Engine&配置,我们可以参考这段配置为&Engine/&加个jvmRoute就可以了,对于jvmRoute的取值要特别注意:其值必须于后面要提到的mod_jk的workers.properties文件中结点名相一致!由于那个文件中结点名为tomcat1和tomcat2,因此,此处我们必须设定jvmRoute的值为这两个值之一。关于这一点在tomcat官方关于Apache Tomcat Connector的文档 http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html 也有明确提及。jvmRoute值会出现在由该结点创建的session id中,例如:在非集群环境下,一个sessionid可能是 &xxxxxxxxx& 的格式,而在集群环境下,如果当前结点的jvmRtomat1oute被配置为tomcat1,那由该结点生成的sessionid将变成&xxxxxxxxx.tomat1&格式,而mod_jk正是依赖于这个节点后缀实现sticky session的,也就是把所有后缀是tomat1的请求都发送给tomat1结点进行处理。
改动2:在&Engine/&中添加关于集群的配置
在tomcat官方关于tomcat集群配置的文档:http://tomcat.apache.org/tomcat-6.0-doc/cluster-howto.html 中,有一份默认配置:
className=&org.apache.catalina.ha.tcp.SimpleTcpCluster&
channelSendOptions=&8&
className=&org.apache.catalina.ha.session.DeltaManager&
expireSessionsOnShutdown=&false&
notifyListenersOnReplication=&true&
className=&org.apache.catalina.tribes.group.GroupChannel&
className=&org.apache.catalina.tribes.membership.McastService&
address=&228.0.0.4&
port=&45564&
frequency=&500&
dropTime=&3000&
className=&org.apache.catalina.tribes.transport.nio.NioReceiver&
address=&auto&
port=&4000&
autoBind=&100&
selectorTimeout=&5000&
maxThreads=&6&
className=&org.apache.catalina.tribes.transport.ReplicationTransmitter&
className=&org.apache.catalina.tribes.transport.nio.PooledParallelSender&
className=&org.apache.catalina.tribes.group.interceptors.TcpFailureDetector&
className=&org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor&
className=&org.apache.catalina.ha.tcp.ReplicationValve&
className=&org.apache.catalina.ha.session.JvmRouteBinderValve&
className=&org.apache.catalina.ha.deploy.FarmWarDeployer&
tempDir=&/tmp/war-temp/&
deployDir=&/tmp/war-deploy/&
watchDir=&/tmp/war-listen/&
watchEnabled=&false&
className=&org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener&
className=&org.apache.catalina.ha.session.ClusterSessionListener&
这份默认配置可以满足大多数应用场景,因此,我们只需要将这份配置复制到&Engine/&中,tomcat的配置就全部完成了。
4.2 配置apache
打开apache安装目录下的conf/httpd.conf文件,在文件最后追加以下内容:
# Load mod_jk module
LoadModule jk_module modules/mod_jk.so
# Specify jk log file.
JkLogFile /var/log/mod_jk.log
# Specify jk log level [debug/error/info]
JkLogLevel info
# Specify workers.properties, this file tell jk:
# how many nodes and where they are.
JkWorkersFile conf/workers.properties
# Specify which requests should handled by which node.
JkMount /* controller
关于mod_jk配置项的详细内容,可参考:
上述配置中:JkWorkersFile conf/workers.properties 指明由一个workers.properties文件来描述集群结点的情况,因此,我们需要创建这个workers.properties文件,并放置于conf文件夹下,这个文件的内容如下:
#所有节点列表,其中controller是一个逻辑结点,负责负载均衡控制,
#如果JkMount中的URL指定给了controller就表示这个请求会被自动散列到某个物理节点上。
#注意:真正负责处理请求的tomcat的名称(这里就是tomcat1,tomcat2)必须于它们在conf/server.xml
#文件中配置的jvmRout的属性值是一致的!
worker.list = controller,tomcat1,tomcat2
#========tomcat1========
worker.tomcat1.port=6009
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1
#server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=7009
#ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost
#tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1
#server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balance_workers=tomcat1,tomcat2
#指定分担请求的tomcat,旧版本中的balanced_workers,已不再推荐使用!
worker.controller.sticky_session=1 #sticky_session为1表示,
#当某一 client的session创建之后,后续由该客户端发起的请求,也就是这个session的所有请求都始终由第一次处理该请求的结点
#负责处理(除非该结点挂掉)
到此,所有配置均已完成,启动两个tomcat和apache后,将某一应用同时部署到两个tomcat中,通过apache访问这个应用,观察tomcat后台打出的日志会发现,请求被随机分配给了两个tomcat交替执行。
备注:应用程序要为集群所做的准备
1. 在应用程序的web.xml中需要加入:&distributable/&元素
2. session中存放的数据(如attribute)必须实现序列化。
参考资源:
tomcat官方关于tomcat集群配置的文档:
tomcat官方关于Apache Tomcat Connector的文档
apache官方关于apache的安装文档
apache官方关于configure参数的文档
原文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
关于&&&&的更多文章
性能监测是系统优化过程中重要的一环,如果没有监测、不清楚性能
从运维工程师日常面对的工作难点入手,讲解运维自动化实践、工具等。
讲师: 44人学习过讲师: 4人学习过讲师: 110人学习过
Windows Server 2012 R2 自发布后,就有很多朋友已经
本专题整理了日常运维的故障处理方法和技巧。从故障分
DevOps是一组过程、方法与系统的统称,当企业希望将原
本书分为8章,首先介绍ASP.NET的开发技巧和重点技术,尤其针对初学者如何快速入门并掌握ASP.NET编程做了深入浅出的介绍;然后重
51CTO旗下网站你可能喜欢
12345678910
关于本站 本站以分享运维技术为主,欢迎大家参与技术分享,同时也欢迎大家吐槽,本站提供以下交流圈:QQ群①:*****(满)QQ群②:6690706 QQ群③: QQ群④:(新) 微信公众号:ttlsacom
您还未添加分享代码,请到主题选项中,添加百度分享代码!构建一机多实例tomcat集群配置
1、了解tomcat Tomcat 不是一个完整意义上的Jave EE(j2ee)服务器,因为它没有提供完整的Java EE企业应用平台的API。但是由于Tomcat遵循apache开源协议,并且对当前Java开发框架开源组件Struc
1、了解tom
不是一个完整意义上的Jave EE(j2ee)服务器,因为它没有提供完整的Java EE企业应用平台的API。但是由于Tomcat遵循apache开源协议,并且对当前Java开发框架开源组件Structs、Spring和Hibernate等实现完美支持,因此tomcat被众多企业用来部署配置众多的Java应用程序,实现替代一些商业的Java应用服务器。
2、Tomcat的目录结构
要部署使用tomcat,则必须了解tomcat的目录结构以及各目录的作用。这里以tomcat7为例
安装Tomcat,再次不在阐述,[详情请移步]
进入tomcat安装目录下:
|-- bootstrap.jar
tomcat启动时所依赖的一个类,在启动tomcat时会发现Using CLASSPATH: 是加载的这个类
|-- catalina-tasks.xml
定义tomcat载入的库文件,类文件
|-- catalina.bat
|-- catalina.sh
tomcat单个实例在平台上的启动脚本
|-- commons-daemon-native.tar.gz
jsvc工具,可以使tomcat已守护进程方式运行,需单独编译安装
|-- commons-daemon.jar
jsvc工具所依赖的java类
|-- configtest.bat
|-- configtest.sh
tomcat检查配置文件语法是否正确的Linux平台脚本
|-- cpappend.bat
|-- daemon.sh
tomcat已守护进程方式运行时的,启动,停止脚本
|-- digest.bat
|-- digest.sh
|-- setclasspath.bat
|-- setclasspath.sh
|-- shutdown.bat
|-- shutdown.sh
tomcat服务在Linux平台下关闭脚本
|-- startup.bat
|-- startup.sh
tomcat服务在Linux平台下启动脚本
|-- tomcat-juli.jar
|-- tomcat-native.tar.gz
使tomcat可以使用apache的apr运行库,以增强tomcat的性能需单独编译安装
|-- tool-wrapper.bat
|-- tool-wrapper.sh
|-- version.bat
`-- version.sh
查看tomcat以及JVM的版本信息
顾名思义,配置文件目录
|-- catalina.policy
配置tomcat对文件系统中目录或文件的读、写执行等权限,及对一些内存,session等的管理权限
|-- catalina.properties
配置tomcat的classpath等
|-- context.xml
tomcat的默认context容器
|-- logging.properties
配置tomcat的日志输出方式
|-- server.xml
tomcat的主配置文件
|-- tomcat-users.xml
tomcat的角色(授权用户)配置文件
`-- web.xml
tomcat的应用程序的部署描述符文件
日志文件默认存放目录
`-- safeToDelete.tmp
|-- webapps
tomcat默认存放应用程序的目录,好比apache的默认网页存放路径是/var/www/html一样
tomcat文档
|-- examples
tomcat自带的一个独立的web应用程序例子
|-- host-manager
tomcat的主机管理应用程序
|-- META-INF
整个应用程序的入口,用来描述jar文件的信息
`-- context.xml
当前应用程序的context容器配置,它会覆盖tomcat/conf/context.xml中的配置
|-- WEB-INF
用于存放当前应用程序的私有资源
|-- classes
用于存放当前应用程序所需要的class文件
用于存放当前应用程序锁需要的jar文件
`-- web.xml
当前应用程序的部署描述符文件,定义应用程序所要加载的serverlet类,以及该程序是如何部署的
|-- manager
tomcat的管理应用程序
指tomcat的应用程序的根,如果应用程序部署在ROOT中,则可直接通过http://ip:port 访问到
用于存放JSP应用程序在部署时编译后产生的class文件
3、了解tomcat的主配置文件(server.xml)结构及含义
如下图所示,前端请求被tomcat直接接收或者由前端的代理,通过HTTP,或者AJP代理给Tomcat,此时请求被tomcat中的connector接收,不同的connector和Engine被service组件关联起来,在一个Engine中定义了许多的虚拟主机,由Host容器定义,每一个Host容器代表一个主机,在各自的Host中,又可以定义多个Context,用此来定义一个虚拟主机中的多个独立的应用程序。
4、单实例应用程序配置一例
网站网页目录:/web/www
论坛网页目录:/web/bbs
网站管理程序:$CATALINA_HOME/wabapps
允许访问地址:172.23.136.*
conf/server.xml
&Server port=&8005& shutdown=&SHUTDOWN&&
&Listener className=&org.apache.catalina.core.AprLifecycleListener& SSLEngine=&on& /&
&Listener className=&org.apache.catalina.core.JasperListener& /&
&Listener className=&org.apache.catalina.core.JreMemoryLeakPreventionListener& /&
&Listener className=&org.apache.catalina.mbeans.GlobalResourcesLifecycleListener& /&
&Listener className=&org.apache.catalina.core.ThreadLocalLeakPreventionListener& /&
&GlobalNamingResources&
&!-- 全局命名资源,来定义一些外部访问资源,其作用是为所有引擎应用程序所引用的外部资源的定义 --!&
&Resource name=&UserDatabase& auth=&Container&
type=&org.apache.catalina.UserDatabase&
description=&User database that can be updated and saved&
factory=&org.apache.catalina.users.MemoryUserDatabaseFactory&
pathname=&conf/tomcat-users.xml& /&
&/GlobalNamingResources&
&!-- 定义的一个名叫&UserDatabase&的认证资源,将conf/tomcat-users.xml加载至内存中,在需要认证的时候到内存中进行认证 --&
&Service name=&Catalina&&
&!-- # 定义Service组件,同来关联Connector和Engine,一个Engine可以对应多个Connector,每个Service中只能一个Engine --!&
&Connector port=&80& protocol=&HTTP/1.1& connectionTimeout=&20000& redirectPort=&8443& /&
&!-- 修改HTTP/1.1的Connector监听端口为80.客户端通过浏览器访问的请求,只能通过HTTP传递给tomcat。
&Connector port=&8009& protocol=&AJP/1.3& redirectPort=&8443& /&
&Engine name=&Catalina& defaultHost=&&&
&!-- 修改当前Engine,默认主机是,
&Realm className=&org.apache.catalina.realm.LockOutRealm&&
&Realm className=&org.apache.catalina.realm.UserDatabaseRealm&
resourceName=&UserDatabase&/&
# Realm组件,定义对当前容器内的应用程序访问的认证,通过外部资源UserDatabase进行认证
&Host name=&&
appBase=&/web& unpackWARs=&true& autoDeploy=&true&&
定义一个主机,域名为:,应用程序的目录是/web,设置自动部署,自动解压
&Alias&&/Alias&
定义一个别名,类似apache的ServerAlias --&
&Context path=&& docBase=&www/& reloadable=&true& /&
定义该应用程序,访问路径&&,即访问即可访问,网页目录为:相对于appBase下的www/,即/web/www,并且当该应用程序下web.xml或者类等有相关变化时,自动重载当前配置,即不用重启tomcat使部署的新应用程序生效
&Context path=&/bbs& docBase=&/web/bbs& reloadable=&true& /&
定义另外一个独立的应用程序,访问路径为:/bbs,该应用程序网页目录为/web/bbs
&Valve className=&org.apache.catalina.valves.AccessLogValve& directory=&/web/www/logs&
prefix=&www_access.& suffix=&.log&
pattern=&%h %l %u %t &%r& %s %b& /&
定义一个Valve组件,用来记录tomcat的访问日志,日志存放目录为:/web/www/logs如果定义为相对路径则是相当于$CATALINA_HOME,并非相对于appBase,这个要注意。定义日志文件前缀为www_access.并以.log结尾,pattern定义日志内容格式,具体字段表示可以查看tomcat官方文档
&Host name=&& appBase=&webapps& unpackWARs=&true& autoDeploy=&true&&
定义一个主机名为,应用程序目录是$CATALINA_HOME/webapps,自动解压,自动部署
&Valve className=&org.apache.catalina.valves.RemoteAddrValve& allow=&172.23.136.*& /&
定义远程地址访问策略,仅允许172.23.136.*网段访问该主机,其他的将被拒绝访问
&Valve className=&org.apache.catalina.valves.AccessLogValve& directory=&/web/bbs/logs&
prefix=&bbs_access.& suffix=&.log&
pattern=&%h %l %u %t &%r& %s %b& /&
定义该主机的访问日志
&/Service&
conf/tomcat-users.xml
&?xml version='1.0' encoding='utf-8'?&
&tomcat-users&
&role rolename=&manager-gui& /&
定义一种角色名为:manager-gui
&user username=&cz& password=&manager$!!110& roles=&manager-gui& /&
定义一个用户的用户名以及密码,并赋予manager-gui的角色
&/tomcat-users&
由以上配置不难看出存在的一个问题。如果我们想要对其中一个应用程序的配置做 一些修改,那么就必须重新启动tomcat,那样势必就会影响到另外两个应用程序的正常服务。因此以上配置是不适合线上使用的,因此需要将其配置为多实 例,每个实例只跑一个独立的应用程序,那样我们应用程序之间就不会在互相受到影响。但是我们将面临这样一个问题,80端口只能被一个HTTP/1.1 Connector监听,而三个tomcat实例则至少需要3个HTTP/1.1 Connector,这样我们就需要一个前端代理做分发处理,接收HTTP 80端口的请求,按域名通过每个tomcat实例的AJP/1.3 Connector传递请求。而前端的代理选择apache,基于这样的思路,我们还可以做到tomcat的负载均衡,而且apache会将接收的 HTTP超文本传输报文重新封装成二进制格式通过AJP/1.3 协议传递给后端的tomcat处理,在效率上也是有明显的提升。
5、结合apache构造多实例tomcat集群
apache结合tomcat的方式主要有三 种:mod_jk,ajp_proxy,http_proxy(以http协议代理给tomcat),而当前使用最多的还是要数mod_jk。因为 mod_jk出现的较早,技术已经相当成熟,而且具备集群节点健康检测功能,支持大型的AJP数据包。
安装apache,tomcat这里不在详述
安装tomcat-connectors
tar zxvf tomcat-connectors-1.2.30-src.tar.gz
cd tomcat-connectors/src
./configure --with-apxs=/usr/local/apache/bin/apxs
make && make install
①单独建立httpd-jk.conf
单独建立httpd-jk.conf文件用来配置mod_jk的相关设置
vim /usr/local/apache2/conf/extra/httpd-jk.conf
LoadModule jk_module modules/mod_jk.so
# 配置apache装载mod_jk.so模块
JkWorkersFile /usr/local/apache/conf/extra/workers.properties
# 指定保存了worker相关工作属性定义的配置文件
JkLogFile /usr/local/apache/logs/mod_jk.log
# 定义mod_jk模块的日志文件
JkLogLevel info
# 定义mod_jk模块日志的记录级别
②建立worker相关工作属性定义的配置文件
vim /usr/local/apache/conf/extra/workers.properties
worker.list=Cluster1,stat
worker.web2.port=8003
worker.web2.host=172.23.138.19
worker.web2.type=ajp13
worker.web2.lbfactor=1
worker.web3.port=8003
worker.web3.host=172.23.136.144
worker.web3.type=ajp13
worker.web3.lbfactor=1
worker.Cluster1.type=lb
worker.Cluster1.balance_workers=web2,web3
worker.Cluster1.sticky_session = 1
worker.stat.type=status
worker.list=Cluster2
worker.manager2.port=7003
worker.manager2.host=172.23.138.19
worker.manager2.type=ajp13
worker.manager2.lbfactor=1
worker.manager3.port=7003
worker.manager3.host=172.23.136.144
worker.manager3.type=ajp13
worker.manager3.lbfactor=1
worker.Cluster2.type=lb
worker.Cluster2.balance_workers=manager2,manager3
worker.Cluster2.sticky_session = 1
③配置后端tomcat多实例
使用脚本快速部署tomcat实例,修改新实例的AJP/1.3 Connector的监听端口,HTTP/1.1 Connector的监听端口以及Server容器的监听端口。脚本内容如下:
#!/bin/bash
Java_Home=/usr/java/jdk1.7.0_10
Tomcat_Home=/usr/local/tomcat_7
Tomcat_User=tomcat
New_instance=/usr/local/new
if [ ! -d $New_instance ];then
mkdir -p $New_instance
echo &The parh alreadly exists...&
id $Tomcat_User 2&& /dev/null & useradd -r $Tomcat_User
cp -r $Tomcat_Home/conf $New_instance
mkdir -p $New_instance/{logs,temp,webapps/ROOT,work}
cat & $New_instance/tomcat.sh && EOF
JAVA_HOME=`echo $Java_Home`
JAVA_OPTS=&-Xms64m -Xmx128m&
CATALINA_HOME=`echo $Tomcat_Home`
CATALINA_BASE=`echo $New_instance`
export JAVA_HOME JAVA_OPTS CATALINA_HOME CATALINA_BASE
su `echo $Tomcat_User` \$CATALINA_HOME/bin/catalina.sh \$1
cat & $New_instance/webapps/ROOT/index.jsp && EOF
&html&&body&&center&
&h1&This is a new tomcat instance!&/h1&
Now time is: &%=new java.util.Date()%&
&/body&&/html&
$Tomcat_User:$Tomcat_User -R $New_instance
现在后端每台tomcat节点的配置状况如下:
&Server port=&8000&&
&Connector port=&8001& protocol=&HTTP/1.1&&
&Connector port=&8003& protocol=&AJP/1.3&&
&Server port=&7000&&
&Connector port=&7001& protocol=&HTTP/1.1&&
&Connector port=&7003& protocol=&AJP/1.3&&
使用新实例中的tomcat.sh进行启动每个实例
④配置多域名的负载均衡
vim /usr/local/apache/conf/extra/httpd-vhosts.conf
NameVirtualHost *:80
&VirtualHost *:80&
& & ServerName
& & JkMount /* Cluster1
&/VirtualHost&
&VirtualHost *:80&
& & ServerName
& & JkMount /* Cluster2
& & JkMount /status stat
&/VirtualHost&
到此基于多域名多实例的tomcat负载均衡集群构建完成,启动apache即可,基于当前结构还可结合持久会话管理器(PersistentManager)来实现会话持久的效果。
转载请保留固定链接:
------分隔线----------------------------
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
摘要 在满足开发环境所有特征的情况下进行了大量方式上的升级...
dev,stage,prod配置 目的:使用gitfs统一分布式环境中的配置,将开...
服务端安装 初始化基础环境 假设2个节点做2个副本,修改hosts文...
一、简介 在通常情况下,使用 nginx 基于 ip 限制访问请求频率等...
网站的目录结构为: # tree /home/ / home / wwwroot / ...
在配置tomcat虚拟主机时候,如何每一个虚拟主机写成单独文件,...

我要回帖

更多关于 lemon oa mysql 的文章

 

随机推荐