`

linux下apache tomcat 通过mod_proxy负载均衡

阅读更多

 

第一章. 背景简介 
对于大多数企业应用,都希望能做到7*24小时不间断运行。要保持如此高的可用性并非易事,比较常见的做法是将系统部署到多台机器上,每台机器都对外提供同样的功能,这就是集群。系统变为集群时,除了要求系统能够支持水平伸缩外,还要解决两个问题: 
1, 如何均衡地访问到提供业务功能的机器。 
2, 如何保证当机器出现问题时,用户能自动跳转到另外的机器,不影响使用。 
常用的负载均衡技术有硬件和软件两种,本示例常用软件的技术实现。软件也有很多实现技术,如基于apache的mod_jk以及mod_proxy等。基于mod_jk的蛮复杂的,好坏我没做过测试,有人说很好,有人说是淘汰货。不过apache自己提供了mod_proxy 这种方式,我觉得也蛮简单吧,所有我就选用mod_proxy的方式。 
实现集群的应用最重要的是处理用户Session的问题,一般有三种策略: 
1, Session复制 
2, Session Sticky 
3, 基于Cache的集中式Session 
本文使用的是Tomcat 7.0.2应用服务器,用的方法是Session复制。 

第二章. 配置环境 
1, JDK1.7,请自行下载安装,搞Java的一般都装有的吧,哈哈。 
2, Apache 2.4.6
3, Tomcat 7.0.2,目前也是最新的版本。
4, 我这里是在centos 6.2(64bit)上的

 

第三章: 操作步骤 

  1. 安装Apache基本模块

  配置conf/httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。 

1.  LoadModule proxy_module modules/mod_proxy.so    
2.  LoadModule proxy_ajp_module modules/mod_proxy_ajp.so    
3.  LoadModule proxy_balancer_module modules/mod_proxy_balancer.so    
4.  LoadModule proxy_connect_module modules/mod_proxy_connect.so    
5.  LoadModule proxy_ftp_module modules/mod_proxy_ftp.so    
6.  LoadModule proxy_http_module modules/mod_proxy_http.so   

 


负载均衡部分:

 

 

<VirtualHost *:80>
    ServerName www.i-css.cn
    ServerAlias i-css.cn *i-css.cn
    ProxyRequests Off

    ProxyPass / balancer://cn/ stickySession=JSESSIONID|jsessionid
    #ProxyPassReverse / balancer://cn/
    ErrorLog "logs/cn_error.log"
    CustomLog "logs/cn_access.log" common
</VirtualHost>
<proxy balancer://cn>
    BalancerMember ajp://192.168.1.173:8009 loadfactor=1 route=s173_cn smax=5 max=20 ttl=120 retry=300 timeout=15
    BalancerMember ajp://192.168.1.183:8009 loadfactor=1 route=s183_cn smax=5 max=20 ttl=120 retry=300 timeout=15
    ProxySet lbmethod=bytraffic
</proxy>

 

 

这里是我的负载均衡在apache中的配置。你可以直接放在httpd.conf 里面,也可以放在相关的子配置文件中,反正我是写vhost.conf里面的。后面我们会逐条介绍其中的意义和配置的。

 

<proxy balancer://cn>
    BalancerMember ajp://192.168.1.173:8009 loadfactor=1 route=s173_cn smax=5 max=20 ttl=120 retry=300 timeout=15
    BalancerMember ajp://192.168.1.183:8009 loadfactor=1 route=s183_cn smax=5 max=20 ttl=120 retry=300 timeout=15
    ProxySet lbmethod=bytraffic
</proxy>

这里,我配置了一个负载均衡节点balancer://cn,其中包含了两个服务ajp://192.168.1.173:8009ajp://192.168.1.183:8009,这里是来源于两个独立的内网ip的服务。这里使用的AJP的转发方式,当然,使用HTTP也可以。不过在性能和稳定性方面。AJP比HTTP具有明显的优势。

 

这里的节点次序会有一个先后关系,Apache会将请求按照FIFO的方式调度顺次分配到各个节点上!如果其中有一个节点挂掉,将跳过该节点顺次寻找可用节点。下面解释一下,其中的参数:

loadfactor=1 :loadfactor表示后台服务器负载到由Apache发送请求的权值。放在BalancerMember 后面
route=s173_cn : 路由的表示。这个是和tomcat的jvmRoute 相对应的
smax=5 max=20 ttl=120 retry=300 timeout=15 这些都是性能指标。
ProxySet lbmethod=bytraffic :设置负载均衡的策略,一共用三种。

 

负载均衡的节点设置好了,我们只要将请求转发到这个负载均衡的节点上来就ok了。 所以我们需要配置个代理:

 

ProxyPass / balancer://cn/ stickySession=JSESSIONID|jsessionid

这里我只用到了代理,没有使用反向代理。

这里在将所有的请求全部转发到负载均衡节点balancer://cn上。 这个后面的参数非常重要。

 

stickySession=JSESSIONID|jsessionid  :这里是设置stickySession 这个在我们的文章开头的时候已经说明了。这样配置你的服务器之间才能实现session共享。

sticky模式的根本在于浏览器支持cookie,如果浏览器不支持cookie,则需要修改server.xml文件中的<Context />节点,将cookie置为false,关闭cookie功能,让jsessionid显式传递!

设置的方法,在tomcat的context的目录下面设置:<context cookie="false"> 

 

到此位置,集群的配置基本上就搞定了。

 

tomcat的配置见:

http://shiguanghui.iteye.com/admin/blogs/1933923

 

 

 应用设置:

我们需要修改应用中的web.xml文件,将<distributable />节点部署到<web-app />节点中,开启分布式服务: 

 

 

 

 

 

分享到:
评论

相关推荐

    基于mod_proxy+Apache_2.2.16+Tomcat_7的负载均衡与集群配置

    基于mod_proxy+Apache_2.2.16+Tomcat_7的负载均衡与集群配置

    负载均衡mod_jk及mod_proxy方式

    window下完整的apache+mod_jk或mod_proxy+tomcat配置方案,用于负载均衡及动静态页面分离。里面包含有相对应版本的apache、tomcat、mod_jk,已经多个参考文档

    Apache+tomcat实现负载均衡

    在Apache与Tomcat的组合中,Apache通常作为前端负载均衡器,通过HTTP代理或反向代理功能将请求转发给后端的多个Tomcat实例。以下是实现这一目标的主要步骤: 1. **安装和配置Apache**:首先,你需要在服务器上安装...

    Mod_Proxy+Apache+Tomcat负载均衡与集群配置

    本文档详细介绍了使用mod_proxy模块与Apache和Tomcat结合来实现负载均衡与集群配置的过程。配置前需要准备相应的环境,包括安装JDK、Apache HTTP Server和Tomcat服务器。本文档使用了Tomcat 7.0.2作为应用服务器,并...

    apache_tomcat负载均衡

    Apache Tomcat 负载均衡是一种优化Web服务器性能和可靠性的技术,它通过将客户端请求分发到多个Tomcat实例上,实现应用服务器间的负载共享,从而提高系统的处理能力和可用性。这种技术常用于大型网站和企业级应用,...

    apache +tomcat集群 ajp_proxy实际操作

    - 若要实现更高级的负载均衡,可以使用`mod_proxy_balancer`模块。示例配置如下: ```apache *:80&gt; ... &lt;IfModule proxy_balancer_module&gt; ProxyPass / balancer://mycluster stickysession=JSESSIONID ...

    Apache与Tomcat整合教程(服务器负载均衡)

    2. **Mod_proxy_module**:另一种方法是使用Apache的Mod_proxy模块,它可以透明地将请求转发到Tomcat。Mod_proxy提供了HTTP、HTTPS、AJAX等多种代理模式,并且支持AJP(Apache JServ Protocol)协议,直接与Tomcat...

    Apache+tomcat负载均衡

    在Apache中配置负载均衡,首先需要安装mod_proxy和mod_proxy_balancer模块。这些模块允许Apache作为反向代理服务器,接收用户请求并转发到适当的Tomcat实例。以下是一个基本的配置示例: ```apacheconf LoadModule ...

    TOCAT_APACHE.rar_负载 方案_负载均衡

    通过mod_proxy,我们可以设置多个后端Tomcat服务器,形成一个集群,然后使用不同的负载均衡策略,如轮询、权重分配、最少连接数等。 1. **轮询策略**:每个请求依次分配给不同的服务器,确保所有服务器平均分担工作...

    tomcat_apache_mod

    描述中的“tomcat集群配置所需的几个工具”可能包括Apache HTTP Server、Tomcat服务器、mod_proxy模块,以及可能的集群管理工具,如Apache HTTP Server的mod_jk或mod_proxy_ajp模块。这些工具的配合使用,可以实现多...

    apche_tomcat负载均衡

    本文将详细介绍如何在Apache Tomcat 7.0和Apache 2.2环境下配置负载均衡,并实现session复制。 **环境配置** 1. 安装JDK1.6:首先确保安装了Sun JDK 1.6,将其安装在默认路径,例如`C:\Program Files\Java\jdk1.6.0...

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

    - 使用mod_proxy_balancer模块,创建一个负载均衡器,将请求分发到多个Tomcat实例。配置包括定义负载平衡器、指定成员和分配策略,如轮询、权重分配等。 - 在虚拟主机配置中,将所有动态请求通过负载均衡器转发。 ...

    Windows下Apache2.2+Tomcat6配置集群、负载均衡、session共享

    2. **mod_proxy_ajp模块**:这个模块用于Apache和Tomcat之间的通信,通过AJP(Apache JServ Protocol)协议,能够有效地处理动态内容,提高性能。 接下来,**Tomcat6** 是一个流行的Java Servlet和JavaServer Pages...

    apache2.4+tomcat负载均衡配置源码

    Apache2.4的这种角色是通过其模块mod_proxy来实现的,特别是mod_proxy_balancer模块,它提供了负载均衡的功能。 1. 安装Apache2.4和Tomcat: - Apache2.4可以从Apache官方网站下载,安装完成后确保httpd服务运行...

    Linux下通过Apache搭建Tomcat集群

    在Linux下,Apache和Tomcat组合可以创建一个高效且可扩展的Java应用服务器集群。 1. **安装Apache和Tomcat** - 安装Apache HTTP服务器,通常使用`apt-get`或`yum`命令,具体取决于你的Linux发行版。 - 安装多个...

    Apache 与 Tomcat 配置负载均衡

    - 安装mod_proxy、mod_proxy_balancer等Apache模块,这些模块提供了负载均衡功能。可以通过编辑`httpd.conf`配置文件并添加以下行启用: ``` LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_...

    linux下apache+tomcat实现集群

    Apache通过模块如mod_proxy或mod_proxy_ajp与Tomcat进行通信。 1. **Apache配置**: - 安装Apache:在Red Hat 5上,使用`yum install httpd`命令安装Apache。 - 配置mod_proxy:启用mod_proxy模块,编辑`/etc/...

    实现apache+tomcat集群和负载均衡的比较

    在Apache+Tomcat的场景下,Apache通常作为前端代理服务器,接收客户端请求,然后根据负载均衡策略将请求分发到后端的多个Tomcat实例上。这样做可以有效分散服务器压力,防止单点故障,并提升整体系统的可靠性。 ...

    apache + tomcat 负载均衡worker模式初探

    在Apache的配置文件(如httpd.conf)中,启用mod_proxy模块,通常通过取消`LoadModule proxy_module modules/mod_proxy.so`这行前面的注释。 2. **配置worker**:在Apache的配置文件中,定义worker列表,每个worker...

Global site tag (gtag.js) - Google Analytics