热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Apache+Tomcat配置反向代理、负载均衡和集群(mod_proxy方式)

Apache配置负载均衡和集群使用mod_jk的方式比较多。但是mod_jk已经停止更新,并且配置相对复杂。Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多。1.Apache配置反向代理正向代理一般是指PC连接到代理服务器,由代理服务器转发请求到网站。而反向代理

Apache配置负载均衡集群使用mod_jk的方式比较多。
但是mod_jk已经停止更新,并且配置相对复杂。
Apache2.2以后,提供了一种原生的方式配置负载均衡和集群,比mod_jk简单很多。

1.Apache配置反向代理
正向代理一般是指PC连接到代理服务器,由代理服务器转发请求到网站。而反向代理指的是用户将请求发送给反向代理服务器,由反向代理服务器将请求路由转发到具体的服务器。
比如机房有两个Tomcat提供服务,但是由于防火墙的原因,用户不能直接访问。这个时候,可以使用反向代理服务器,将请求转发到Tomcat。而防火墙只需要开启反向代理服务器的端口即可。

29254281_138962004426tf

下面实验假设内网Tomcat提供谷歌服务,外网通过反向代理,访问这个服务。
修改/etc/httpd/conf/httpd.conf 增加下面的配置

29254281_1389620381iAkH

访问链接:http://192.168.1.105/google

29254281_138962052847LY

2.负载均衡
负载均衡应该是最常用的横向扩展技术。Apache负载均衡将前端的请求,按照配置的比例转发给后台的Tomcat服务器,从而提高了并发访问量。作为mod_proxy方式,配置负载均衡十分简单,就是在反向代理的基础上,将请求发送到负载均衡器。
首先,修改War包程序的web.xml文件,增加标识。
其次,修改每个Tomcat服务器的server.xml,配置jvmRoute????

29254281_138962128967Zx

最后,修改apache的httpd.conf文件,增加如下内容

29254281_1389621679fiG0

其中ProxyPass /images ! 表示/images开头的请求不会转发给Tomcat,而是作为静态资源在Apache的images目录下寻找资源文件。
而反向代理将所有的/Test请求都转发给名叫mycluster的balancer。
而这个balancer有两个Tomcat成员。

loadfactor表示请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。
lbmethod表示负载均衡的算法,lbmethod可能的取值有:
lbmethod=byrequests 按照请求次数均衡(默认)
lbmethod=bytraffic 按照流量均衡
lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

stickySession=JSESSIONID表示开启粘性Session。他的意思是如果第一次请求分到了worker1的Tomcat,那么这个用户的后续请求,都会分配给worker1的这个Tomcat。
使用一个测试页面查看粘性Session

index.jsp

index_jsp

可以看到,由于粘性Session的作用,对网页的反复操作,都被Apache发送到了同一个Tomcat(worker2)

29254281_1389623295uyuY

查看firefox的COOKIE信息,apache就是根据JSESSIONID后面的routeid实现粘性Session的。

29254281_13896238266w67

3.集群
我觉得集群和负载均衡的区别就是集群包括Session复制和故障转移
Session复制是广义的,实际上就是故障转移的时候,还可以继续读取这个用户的Session。
Session复制只是其中的一种方式,也可以采用Session服务器的方式。
例如:

http://blog.itpub.net/29254281/viewspace-1063018/

在负载均衡的基础上配置集群
首先,开启Tomcat的Session复制功能

2014-03-17 09:42:51的屏幕截图

然后在Apache配置故障转移(nofailover=Off)

29254281_1389627112RC2z

配置了集群之后,请求从前端过来,假如分配到了worker1,那么因为粘性Session,他会一直访问worker1.
如果worker1宕机,这个用户的后续请求会自动转移到worker2.
由于Tomcat配置了Session复制,所以Session信息没有丢失。
整个过程对于用户是完全透明的。


推荐阅读
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • Apache Maven 3.5.0 版本的发布带来了多项重要特性和性能优化。该版本不仅改进了构建过程的效率,还增强了对复杂项目结构的支持。通过引入新的依赖解析机制和优化的插件系统,Maven 3.5.0 在提升用户体验的同时,也确保了更高的稳定性和兼容性。此外,该版本还修复了多个已知问题,进一步提升了整体的可靠性和安全性。 ... [详细]
  • Nginx入门指南:从零开始掌握基础配置与优化技巧
    Nginx入门指南:从零开始掌握基础配置与优化技巧 ... [详细]
  • Maven在不同环境下的自动化构建与部署策略:测试与生产环境的定制化打包方案
    环境配置 在你的pom.xml文件中添加如下配置:PROD ... [详细]
  • Spring Boot 和 Spring Cloud 是 Spring 生态系统中的重要组成部分,各自具有独特的特性和应用场景。Spring Boot 通过简化配置和自动配置机制,显著提高了开发和部署效率,减少了传统 Spring 应用中繁琐的 XML 配置文件需求。而 Spring Cloud 则在此基础上进一步提供了分布式系统的解决方案,包括服务发现、配置管理、断路器等高级功能,适用于微服务架构的构建和管理。本文将深入探讨两者的核心差异,并分析其各自的最佳应用场景。 ... [详细]
  • 当前,众多初创企业对全栈工程师的需求日益增长,但市场中却存在大量所谓的“伪全栈工程师”,尤其是那些仅掌握了Node.js技能的前端开发人员。本文旨在深入探讨全栈工程师在现代技术生态中的真实角色与价值,澄清对这一角色的误解,并强调真正的全栈工程师应具备全面的技术栈和综合解决问题的能力。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • SpringBoot启动脚本详解:BAT文件应用与基础入门指南(SpringBoot系列第1篇)
    如果你还在为SSM框架的复杂搭建过程和繁琐的配置文件而烦恼,那么SpringBoot将是你的一大福音。作为SpringBoot系列的第一篇文章,本文详细介绍了如何使用BAT文件来启动SpringBoot应用,并提供了基础入门指南,帮助开发者快速上手,简化开发流程。 ... [详细]
  • 在Maven项目中高效集成JaCoCo代码覆盖率插件,以显著提高测试质量。首先,需在项目的`pom.xml`文件中添加JaCoCo和JUnit的依赖配置,确保测试框架和覆盖率工具的无缝结合。通过这种方式,开发者不仅能够执行单元测试,还能获取详细的代码覆盖率报告,从而优化测试策略和代码质量。 ... [详细]
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • 本文将详细介绍如何在SSM框架中无缝集成ShardingSphere 4.10,以实现高效的数据分片和读写分离。通过实例演示和代码解析,帮助开发者快速掌握这一复杂但实用的技术。文章从基础概念入手,逐步深入到具体配置和应用实践,旨在为读者提供一个全面、易懂的整合指南。 ... [详细]
  • 深入解析Spring Boot源码的序章
    本系列文章旨在深入解析Spring Boot的源代码,分享笔者在学习过程中的心得与体会。内容涵盖核心源码分析,可能会对初学者造成一定理解难度,建议读者结合笔者提供的详细注释进行阅读,以获得更好的学习体验。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
  • 比尔·盖茨最新个人网站出人意料地选择Linux服务器,背后有何深意?
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 后端开发|php教程numbering,addClass,COOKIE,POST,instanceof后端开发-php教程一:php变量商场项目源码,ubuntu安装其他系统,to ... [详细]
author-avatar
洁西卡915_922
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有