Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理

上文中主要介绍了tomcat的集群方式,下边再来说下apache的反向代理。反向代理可以这样来理解,我们通常认为的代理(正向代理)是局域网内部机器本身不能上网,网关可以上网,大家在局域网内是通过网关上网的,这个网关就是个代理机器。反向代理意思就反了过来,现在网关并不是给内部局域网做代理的,而是给外部请求内部局域网做代理的,例如,当前一个应用系统在局域网内的A机器上,外部网络不能直接访问A机器,而是通过网关访问到了A,这里网关就是个反向代理了。

总结:正向代理---为在防火墙内的局域网客户端提供Internet的途径,反向代理---将防火墙后面的服务器提供给Internet用户访问。

大家常说的Apache负载均衡就是利用了Apache的反向代理,再加上负载均衡策略实现的。下边说下apache如何做负载均衡。

打开apache的反向代理功能

在Apache2.2x版本后已经加入了mod_proxy(反向代理)模块,只是默认没有启用而已,下边打开自己机器上Apache目录下的httpd.conf文件,去掉mod_proxy模块前的注释:

<span style="font-size:18px;">#加载mod_proxy
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
</span>

这样即打开了Apache的mod_proxy模块

增加Apache监听端口

在httpd.conf的最后加上如下配置:

<span style="font-size:18px;"><VirtualHost *:8011>
         ServerAdmin [email]****.com[/email]
         ServerName localhost
         ServerAlias localhost
         ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=Off
         ProxyPassReverse / balancer://cluster/
	 ErrorLog "logs/error.log"
	 CustomLog "logs/access.log" common
</VirtualHost>
</span>

其中VirtualHost *:80代表笔者本机的http server端口。一般项目都监听在HTTP服务的默认端口80上。

ProxyPass / balancer://cluster/代表所有的请求都会重定向到balancer://cluster/处理。balancer是内置负载。cluster为下边配置中的负载名称(名字随意但上下要保持一致)

ProxyPassReverse / balancer://cluster/是反向代理,也就是将所有的请求反向代理到负载均衡后的应用url路径中。

stickysession=JSESSIONID nofailover=Off是做Session复制用的。(粘性session)

增加负载均衡处理配置

继续在httpd.conf文件尾处增加如下配置:

<span style="font-size:18px;">ProxyRequests Off
<proxy balancer://cluster>
	BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1
	BalancerMember ajp://127.0.0.1:28009 loadfactor=1 route=tomcat7_node2
	# status=+H为配置热备,当所有机器都over时,才会请求该机器
	#BalancerMember http://192.168.1.218:8009 status=+H
	#按照请求次数均衡(默认)
	#ProxySet lbmethod=byrequests
	#按照权重
	#ProxySet lbmethod=bytraffic
	#按负载量,也就是往负载少的派发新请求
	#ProxySet lbmethod=bybusyness
	ProxySet lbmethod=bybusyness
</proxy>
</span>

其中ProxyRequests Off为关闭正向代理,因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施以确保仅为经过授权的客户端提供服务。这里用Apache的反向代理,所以先把正向代理给关了。

<span style="font-size:18px;">BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1</span>

为负载的成员都有哪些(将外部请求转发到哪些集群成员上),18009为tomcat的ajp端口,注意在同一机器上两个tomcat的端口不要一致。

route为路由标识,为上文tomcat中的jvmRoute,注意要跟上文中的tomcat中的名字保持一致

ProxySetlbmethod即是负载均衡算法策略。此处使用的是按照负载量,吞吐量少Node的之后可要小心喽,分配到你的任务可就多了。而byrequests策略更偏重的是次数。

Apache的负载均衡配置已结束,下边就开始测试吧,测试前需要注意一点,如果需要将tomat中的web项目作为默认项目启动(即输入http://localhost:8080即可访问到该项目)时,需要也将apache的负载均衡配置中的

<span style="font-size:18px;">BalancerMember ajp://127.0.0.1:18009 loadfactor=1 route=tomcat7_node1</span>

端口号后也不用加项目名称。如果是非作为tomcat的默认项目,则需要改Apache的配置为ajp://127.0.0.1:18009/WebProject(即加上项目名称),总之就是tomcat和apache的项目路径保存一致即可,否则session信息将无法共享。

测试步骤

1、启动Apache、2个tomcat(不分先后启动,只有都启来即可)

2、访问本机的http://localhost(或者http://localhost/WebProject,根据自己的项目路径)

3、可以看到apache将请求转发到不同的用用服务器上

Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理

时间: 2024-10-12 07:04:46

Apache反向代理结合Tomcat集群来实现负载均衡(四)、Apache反向代理的相关文章

Apache反向代理结合Tomcat集群来实现负载均衡(一)

好的博文一般都能做到"望题知文",看下标题就知道下边要讲的内容,写这个标题时犹豫了一下,本来要将标题定位apache+tomcat实现负载均衡,可是又觉得这样显得比较模糊,后来想了一下,觉得利用Apache做负载均衡底层结合的是tomcat的集群功能,所以便用了这个标题. 首先先做下集群与负载均衡的概念区分,很多人一直都不理解这两个概念,不知道该如何区分这两个概念,又觉得这两个概念仿佛是一个技术的两个术语,其实不然,下边介绍下这两个概念: 什么是集群(Cluster) 所谓集群是指一组

Apache反向代理结合Tomcat集群来实现负载均衡(一)、概念理解

好的博文一般都能做到"望题知文",看下标题就知道下边要讲的内容,写这个标题时犹豫了一下,本来要将标题定位apache+tomcat实现负载均衡,但是又认为这样显得比較模糊.后来想了一下,认为利用Apache做负载均衡底层结合的是tomcat的集群功能.所以便用了这个标题. 首先先做下集群与负载均衡的概念区分,非常多人一直都不理解这两个概念,不知道该怎样区分这两个概念,又认为这两个概念仿佛是一个技术的两个术语,事实上不然,下边介绍下这两个概念: 什么是集群(Cluster) 所谓集群是指

实践出真知——一文教你搭建Nginx+Tomcat集群,实现负载均衡及动静分离

实践出真知--一文教你搭建Nginx+Tomcat集群,实现负载均衡及动静分离 前言 ? 想必大家对于Nginx和Tomcat都非常熟悉了,Nginx的应用非常广泛,不仅是对web静态资源非常友好,而且也是非常实用的反向代理和负载均衡软件.结合后端Tomcat的服务,从而搭建Nginx+Tomcat集群. ? 对于直接想要实践的朋友而言可以获取本文的链接中的软件包后直接看第三备份的内容. 一.集群搭建结构及拓扑 1.1集群架构图示 Nginx+Tomcat集群的结构示意图如下: 1.2系统环境与

Dubbo之旅--集群容错和负载均衡

当我们的系统中用到Dubbo的集群环境,因为各种原因在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重试. Dubbo的集群容错在这里想说说他是因为我们实际的项目中出现了此类的问题,因为依赖的第三方项目出现异常,导致dubbo调用超时,此时使用的是默认的集群容错方式,而配置的reties='3',这样前段系统连续掉用了三次服务,结果可想而知. 先说一下各节点关系: 这里的Invoker是Provider的一个可调用Service的抽象,Invoker封装了Provider地

Openfire 集群部署和负载均衡方案

一.   概述 Openfire是在即时通讯中广泛使用的XMPP协议通讯服务器,本方案采用Openfire的Hazelcast插件进行集群部署,采用Haproxy进行负载均衡,在示例环境中测试通过. 二.   示例环境 服务器配置如下: 服务器名 用途 操作系统 IP PC647 Openfire节点1 Windows7 10.200.10.11 seasky Openfire节点2 Windows xp 10.200.10.18 Lub1 Mysql数据库 LUbuntu 12 10.200.

ASP.NET Core使用Docker-Swarm集群部署实现负载均衡实战演练

一.需求背景 人生苦短,我用.NET Core!阿笨对Docker是这样评价的:Docker在手,环境我有!Docker出手,集群我有!前面的Doc基础课程我们学习了如何使用Docker来部署搭建单机容器应用.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernetes, Mesos等众

ngnix+ tomcat +memcached 集群设置服务器负载均衡,session共享

1.准备工作: 下载nginx-1.8.0  网址:http://nginx.org/ tomcat7两个,apache-tomcat-7.0.62版本的,我命名为tomcat1,tomcat2 memcache服务: memcached.exe, 1.1 负载均衡配置 1.1.1 配置nginx #user nobody; worker_processes 2; #error_log logs/error.log; #error_log logs/error.log notice; #erro

linux集群服务之负载均衡

负载均衡集群(LB) 负载均衡集群工作原理 当用户发送请求时,该请求不是立即发送给后端的真实服务器(realservers),而是先发送给调度器或者分发器(director),然后director根据某种调度算法,在将该请求发送给后端真实的服务器(realservers).服务器处理请求完成后,再直接响应给客户端. 负载均衡设备 刚刚所说的调度器或者分发器是一种负载均衡设备,这种设备有硬件和软件之分: 常见的硬件负载均衡设备: 1.F5  BIG-IP 2.Citrix  NetScale 3.

Dubbo中集群Cluster,负载均衡,容错,路由解析

Dubbo中的Cluster可以将多个服务提供方伪装成一个提供方,具体也就是将Directory中的多个Invoker伪装成一个Invoker,在伪装的过程中包含了容错的处理,负载均衡的处理和路由的处理.这篇文章介绍下集群相关的东西,开始先对着文档解释下容错模式,负载均衡,路由等概念,然后解析下源码的处理.(稍微有点乱,心情不太好,不适合分析源码.) 集群的容错模式 Failover Cluster 这是dubbo中默认的集群容错模式 失败自动切换,当出现失败,重试其它服务器. 通常用于读操作,