zoukankan      html  css  js  c++  java
  • tomcat集群搭建

    tomcat

    1、准备

    1-1apr安装

    ./configure --prefix=/usr/local/apr

    make && make install

    1-2apr-util安装

    ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

    make && make install

    1-3apache安装

    ./configure --prefix=/data/apache --enable-rewrite --enable-so --with-apr=/data/app/apr --with-apr-util=/data/app/apr-util --with-pcre=/data/app/pcre

    make && make install

    1-4pcre安装

    ./configure --prefix=/usr/local/pcre

    make && make install

    1-5mod.jk安装

    tar -zxvf tomcat-connectors-1.2.32-src.tar.gz

    cd tomcat-connectors-1.2.32-src/native

    ./buildconf.sh
    ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-java-home=$JAVA_HOME --with-java-platform=2 --enable-jni

    make && make install

    如果成功结束,你可以在/usr/local/apache/modules/下找到mod_jk.so文件。

    2、部署

    2-1、安装tomcat

    tar zxvf

    2-2、配置apache

    vim conf/httpd.conf

    LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so   //表示载入JK模块
    JkWorkersFile conf/workers.properties    //tomcat实例配置
    JkMount /* controller       //设置apache分发器,/*表示apache将所有文件都由分发器controller 进行分发,你可以自行设置*.jsp,*.do

    vim conf/ workers.properties

    worker.list=controller   
    #Tomcat1实例配置   
    worker.tomcat80.host=10.71.144.80
    worker.tomcat80.port=8009    //ajp的端口
    worker.tomcat80.type=ajp13  
    # 分发权重 值越大负载越大   
    worker.tomcat1.lbfactor = 1   


    #Tomcat2实例配置   
    worker.tomcat81.host=10.71.144.81
    worker.tomcat81.port=8009  
    worker.tomcat81.type=ajp13  
    # 分发权重 值越大负载越大   
    worker.tomcat81.lbfactor = 1  

    worker.lbcontroller.type=lb   
    worker.lbcontroller.balance_workers=tomcat80,tomcat81,tomcat82
    worker.lbcontroller.sticky_session=True  

    这里就是tomcat80tomcat82必须与之后tomcat中的server.xmljvmRoute值一致

    2-3、配置tomcat

    vim conf/server.xml

    <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat35">

    ……

    <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.McastServi

    ce"

    address="228.0.0.4"

    port="45564"

    frequency="500"

    dropTime="3000"/>

    <Receiver

    className="org.apache.catalina.tribes.transport.nio.NioRece

    iver"

      address="auto"

      port="4000"

      autoBind="100"

      selectorTimeout="5000"

      maxThreads="6"/>

    <Sender

    className="org.apache.catalina.tribes.transport.Replication

    Transmitter">

      <Transport

    className="org.apache.catalina.tribes.transport.nio.Poole

    dParallelSender"/>

    </Sender>

    <Interceptor

    className="org.apache.catalina.tribes.group.interceptors.Tc

    pFailureDetector"/>

    <Interceptor

    className="org.apache.catalina.tribes.group.interceptors.Me

    ssageDispatch15Interceptor"/>

      </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.JvmRouteSessionIDBi

    nderListener"/>

      <ClusterListener

    className="org.apache.catalina.ha.session.ClusterSessionListe

    ner"/>

    </Cluster>

    2-4session复制

    tomcat集群中的 session管理,主要有两种方式:
    1).粘性session
    表示从同一窗口发来的请求都将有集群中的同一个tomcat进行处理。配 置方式是在上面workers.properties文件中
    worker.lbcontroller.sticky_session=True   
    粘性session的好处在不会在不同的tomcat上来回跳动处理请求,但是坏处是如果处理该sessiontomcat崩溃,那么之后 的请求将由其他tomcat处理,原有session失效而重新新建一个新的session,这样如果继续从session取值,会抛出 nullpointer的访问异常。
    2).session复制
    session复制是指tomcat彼此之间通过组播方式将session 发到各个tomcat实例上,如果其中一个访问出错,则另外tomcat仍然具有有效的session内容,从而能正常接管其session。坏处是当 tomcat实例很多,或者用户在session中有大量操作时,组播发送的信息量十分惊人。session复制配置则是在发布的web应用程序中的 web.xml中添加
    <distributable/>
    此外,session复制所需的JDK必须是JDK 5.0及其以上版本

    注:单机部署多个tomcat需要改端口

    2-5、启动

    1apache

    ……/apache/bin/apachectl start

    ……/apache/bin/apachectl stop 关闭

    2tomcat

    ……/tomcat-xxx/bin/startup.sh

    ……/tomcat-xxx/bin/shutup.sh 关闭

    3error

    3-1安装apahce

    问题:

    configure: error: APR not found. Please read the documentation 

    解决:

    安装apr apr-util

    3-2、安装aprapr-util

    问题:

    执行make命令时报错

    xml/apr_xml.c:35:19: error: expat.h: No such file or directory

    ……

    make[1]: * [xml/apr_xml.lo] Error 1
    make[1]: Leaving directory `/root/Downloads/apache_svn/apr-util-1.6.0'
    make: * [all-recursive] Error 1

    解决:

    yum install expat-devel

    3-3、安装apr

    问题:

    编译APR包的时候在执行configure可能会出现 rm: cannot remove `libtoolT': No such file or directory

    解决:

    编辑configure这个文件,将 $RM “$cfgfile” 那行注释掉 ,然后重新编译即可。

    3-4apache启动

    问题:

    AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.58.135. Set the 'ServerName' directive globally to suppress this message

    vim  .../apache/conf/httpd.conf

    #ServerName www.example.com:80

    ServerName localhost:80

    4、日志

    4-1.catalina.日期.log

      这个主要是记录tomcat启动时候的信息,类似于我们在eclipse中启动服务的时候在控制台看到的信息。在里面可以看到启动的JVM参数以及操作系统等日志信息。如果没有使用log4j等日志机制,系统的的错误信息与打印语句也在这个日志文件中记录。(linux下所有的日志都在catalina.out中)

    4-2.commons-daemon.日期.log

      这个日期放的估计是利用服务方式启动tomcat作为守护进程的日志记录,因为我的tomcat启动方式是以服务的方式启动的,索引产生这个日志文件记录了服务的启动状态。

    4-3.host-manager.日期.log

      这个估计是放tomcat的自带的manager项目的日志信息的,也没有看到有什么重要的日志信息

    4-4.localhost.日期.log

      这个类似于第一种日志,可是信息没有第一种全

    4-5.localhost_access_log.日期.txt

      这个是存放访问tomcat的请求的所有地址以及请求的路径、时间,请求协议以及返回码等信息(重要)

    4-6.manager.日志.log

      这个估计也是manager项目专有的日志文件,看不出有什么重要的信息

    4-7.tomcat7-stderr.日期.log  

      这个是log4j的错误日志,因此在程序中要合理的捕捉异常。

    4-8.tomcat7-stdout.日期.log  

        类似于eclipse的控制台的信息

      这个是程序中的System语句打印的日志(包括系统抛出的异常),也终于明白了为什么一再强调不能用打印语句进行系统调试

  • 相关阅读:
    (转载)5分钟安装Linux系统到U盘
    (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)
    (原创)LAMP搭建之一:图解如何安装并检查LAMP
    OpenGL-渲染管线的流程(有图有真相)
    判断点在直线上
    使用QT开发GoogleMap瓦片显示和下载工具
    转:PCL+VS2010环境配置
    error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”
    An error occurred during the installation of assembly 'Microsoft.VC90.ATL or 'Microsoft.VC80.ATL'
    如何确定VS编译器版本
  • 原文地址:https://www.cnblogs.com/archimedes-euler/p/11276524.html
Copyright © 2011-2022 走看看