`
猫不吃的鱼
  • 浏览: 157817 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖市
社区版块
存档分类
最新评论

apache-tomat负载均衡和集成

 
阅读更多
apache_2.2.4+tomcat6 集群和负载均衡

名词解释:
Apache:apache是web服务器,tomcat是应用服务器,是一个servlet容器,是apache的扩展。Apache和tomcat都可以作为独立的web服务器运行,但是apache不能运行java程序。Apache是普通的服务器,本身只支持html静态页面。但是可以通过插件支持php,还可以与tomcat连通,既单向apache连接tomcat,通过apache访问tomcat资源。Apache和tomcat是独立的,但是可以集成。 当两者整合使用的时候,如果客户端请求的是静态页面,则只需要apache服务器响应请求,如果客户端请求动态页面,则apache服务器响应请求。

Mod_jk:也叫JK,是apache用来连接后台tomcat的模块,支持集群和负载均衡。

Ajp:是定向包协议。采用二进制格式来传输可读性文本。Web服务器(apache)通过tcp连接和servlet容器(tomcat)连接。为了减少生成的socket开销,web服务器和servlet容器之间尝试保持持久性tcp连接,即多个请求回复重用一个连接,这些请求完成之前,其他请求不能使用该连接

配置软件
Apache 2.2.4  1个
Tomcat6  2个
mod_jk-1.2.26-httpd-2.2.4.so  用来连接apache和tomcat的

安装 apache 2.2.4

配置 tomcat (tomcat1,tomcat2)

打开tomcat/conf/server.xml
1、
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatX">
Engine 节点增加节点标示 jvmRoute,参与的负载均衡的tomcat的此处jvmRoute设置不可以相同。


<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

参与负载均衡的 tomcat,此处HostName值必须相同。

tomcat 的session复用

<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"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/> 
            <!-- timeout="60000"--> 
            <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"/> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
          </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>       

<Valve className="org.apache.catalina.valves.RequestDumperValve"/>

这两处的注释去除。

端口设置

<Server port="8005" shutdown="SHUTDOWN">

<Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

三处的port,参与集群的tomcat不能设置相同。需要分别设置不同。其中<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  的port 在后面apache的请求分发配置中需要用到。

配置apache
将mod_jk-1.2.26-httpd-2.2.4.so 放入 apache/modules

修改httpd.conf文件
找到

<IfModule dir_module>
    DirectoryIndex login.html
</IfModule>

此处修改默认目录文件,你可以根据需要修改

在httpd.conf末尾 增加如下内容

LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFile conf/workers.properties
JkMount /* lbcontroller   

这些是tomcat集群,负载均衡配置部分 JkMount /* lbcontroller  是指定分配给tomcat的请求。

Conf中创建workers.properties文件 此文件用于配置apache和tomcat的集成要用到的tomcat实例和负载均衡分发控制器。
比如

#分发控制器,lbcontroller值对应conf/httpd.conf中的JkMount /* lbcontroller
worker.list=lbcontroller

######Tomcat1实例配置#####
#tomcat1,对应tomcat的server.xml 中<Engine name="tomcat1" defaultHost="localhost" jvmRoute="tomcat1">的jvmRoute值
#host值对应server.xml中的<Host name="localhost" appBase="webapps">以及hosts文件中的值
worker.tomcat1.host=localhost
#port值对应server.xml中的节点<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
worker.tomcat1.port=8009
worker.tomcat1.type=ajp13
#分发权重,值越大负载越大
worker.tomcat1.lbfactor=1

#Tomcat2实例配置
worker.tomcat2.host=localhost
worker.tomcat2.port=9009
worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1
#负载均衡分发控制器
worker.lbcontroller.type=lb
worker.lbcontroller.balance_workers=tomcat1,tomcat2
worker.lbcontroller.sticky_session=false
#worker.lbcontroller.sticky_session的值
#为false时候,一个客户端连接请求,会发向不同tomcat,不同tomcat之间复用session
#为1时,则一个客户端请求只会发向一个tomcat.

四、session复制 应用程序的配置

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">       <display-name>TomcatDemo</display-name>       <distributable/></web-app>

Web.xml中 添加 <distributable/>

测试 session复用:
Index.jsp

name:<%=session.getAttribute("name")%>

Writer.jsp
    <%
    session.setAttribute("name","yuyong");
     %>

第一次 http://localhost:8888/clutom/index.jsp 打印name:null
执行 http://locahost:9090/clustom/writer.jsp 再次执行http://localhost:8888/clutom/index.jsp 打印 name:yuyong 。测试成功,实现了session复用

测试tomcat负载均衡

Index.jsp
<%
System.out.println("request....")
%>

浏览器http://localhost/clutom/
Tomcat1的控制台打印了一句request.... 再次刷新 tomcat2打印了request....
再次刷新又是tomcat1打印了。。如此。。。说明每次请求,分别请求了不同的tomcat。




1
1
分享到:
评论

相关推荐

    Apache2.2和Tomcat7集成负载均衡(软件和教程)

    在apache2和tomcat5的基础上实现了apapche2.2.22和tomcat7.0.27的负载均衡和集成(更多技术资料,

    Apache Http Server与Tomcat实现负载均衡和集群

    NULL 博文链接:https://wangpj.iteye.com/blog/1766184

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    这里是apache和tomcat链接的关键,前台apache就是通过AJP协议与tomcat进行通信的,以完成负载均衡的作用。也可以用HTTP协议。大家注意它们是如何连接通信的,上面的红色部分(port="8009")就是连接的接口了。 把四...

    Apache负载均衡

    这是有关于如何实现Apache2.2和Tomcat7集成负载均衡的技术,需要学习的可以拿下来。

    Linux搭建Apache+Tomcat环境

    本说明手册为了阐述Linux搭建Apache+Tomcat环境,并详细介绍Tomcat的集群和负载均衡配置而编写。届时介绍域名的绑定,Red Hat和Ubuntu中随系统自动启动个软件的配置方法。

    Linux环境下负载均衡集群的实现.pdf

    为了提高服务器的性能,作者提出了使用 Tomcat 和 Apache 在 Linux 环境下进行集成,实现负载均衡集群。作者分析了负载均衡集群的架构,详细阐述了方案的实现过程。 负载均衡集群的实现可以分为以下几个步骤: 1. ...

    Apache2.2以上版本与Tomcat整合配置及负载均衡实现

    下面是实现2个tomcat实现负载均衡,如果只有一个则可删除一个 apache2.2以上版本,无需使用jk_mod来集成tomcat,直接使用ajp,很方便。 修改apache配置文件httpd.conf 启用mod_proxy_ajp 代码如下: #LoadModule ...

    apache tomcat.doc

    apache2.4与tomcat集成,负载均衡配置 JDK8安装 安装配置

    Apache+多个Tomcat 服务器集群配置

    将以下Module的注释去掉,这里并没有使用mod_jk.so进行apache和tomcat的链接,从2.X以后apache自身已集成了mod_jk.so的功能。只需简单的把下面几行去掉注释,就相当于以前用mod_jk.so比较繁琐的配置了。这里主要采用...

    TOMCAT+APACHE集成以及session复制

    我自己的查资料写的一个demo,绝对ok。也可以到的javaeye上去查看。详细说明。

    config文件.rar

    apache2.4与tomcat集成,负载均衡配置 JDK8安装 apache2.4与tomcat集成,负载均衡配置,安装配置配置文件

    Tomcat性能调优指导手册.pdf

    Tomcat性能调优指导手册 1. 概述 3 2. Java虚拟机性能调优 3 2.1 catalina.sh 或 catalina.bat 3 ...6.2 集成Apache Server 6 6.2.1 配置负载均衡器 6 7. 启用APR库 11 8. 使用Jconsole监控 12 9. 调优综述 13

    spring-cloud-sandbox

    Ribbon(客户端负载均衡)(Eureka 集成) 删除对 *-eureka.properties 的需要 在适当的地方使用 spring boot 值作为默认值 关闭时从 eureka 同步删除服务 动态刷新日志级别 使用 hystrix/ribbon/eureka 集成...

    网站建设硬件设计方案.docx

    通过Nginx实现反向代理服务器集群,同时搭建squid集群以作为静态页面和图片的缓存 通过web服务器的配置来实现负载均衡,即通过apache或是Nginx 将客户请求均衡的分给tomcat1,tomcat2….去处理 数据存储的设计思路 1...

    微网快站自助建站系统

    您还可以通过与Nginx、Apache等Web服务器集成后实现服务器集群与负载均衡,以支持大规模的并发访问。同时,本系统的软件架构设计考虑到了功能的可扩展性,并不局限于一个相对简单的新闻类型的信息发布网站,您还可以...

    微网快站自助建站系统1.0

    微网快站自助建站系统旨在帮助各类单位、企业、...下载的安装包中已经集成了Tomcat 8.0.46,您只需要自行安装并配置好jdk和MySQL,运行数据库脚本创建数据库,然后修改安装包中相应的MySQL的连接账号信息即可运行起来。

Global site tag (gtag.js) - Google Analytics