`
iwindyforest
  • 浏览: 235196 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Apache+Tomcat使用Apache的反向代理功能实现的负载均衡设置

 
阅读更多

 

反向代理介绍

 

Apache可以被配置为正向(forward)反向(reverse) 代理
正向代理是一个位于客户端和原始服务器(originserver)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径。正向代理还可以使用缓冲特性(由mod_cache 提供)减少网络使用率。
使用ProxyRequests 指令即可激活正向代理 。
因为正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此你必须采取安全措施 以确保仅为经过授权的客户端提供服务。


反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置.客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
反向代理的典型用途是将防火墙后面的服务器提供给Internet用户访问.反向代理还可以为后端的多台服务器提供负载平衡,或为后端较慢的服务器提供缓冲服务。 另外,还可以启用高级URL策略和管理技术,从而使处于不同web服务器系统的web页面同时存在于同一个URL空间下。
可以使用ProxyPass指令激活反向代理(在RewriteRule 指令中使用[P] 标记也可以)。配置反向代理并不需要 打开ProxyRequests 指令(但有可能需要加载)。

 

 

实现部分

需要Apache 2.4.4, Tomcat 7

Apache HTTP Server端配置

/apache/conf/httpd.conf

#去掉注释以开启以下模块:

#for load balance

 

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_html_module modules/mod_proxy_html.so
LoadModule proxy_http_module modules/mod_proxy_http.so

 

 

 

#to resolve the start failed issue:

#AH02432: Cannot find LB Method: byrequests

#AH01183: Cannot share balancer

#AH00020: Configuration Failed, exiting

 

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

 

 

#for index.jsp

<IfModule dir_module>
    DirectoryIndex index.html index.jsp
</IfModule>

 

#for static content cache

 

LoadModule buffer_module modules/mod_buffer.so
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so

 

 

 

#最后加入以下内容

#for load balance

ProxyRequests Off
ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
<proxy balancer://cluster/>
BalancerMember ajp://127.0.0.1:9001 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9002 loadfactor=1 route=jvm2
</proxy>

 

ProxyRequests Off

 

我们只使用反向代理功能, ProxyRequests并不需要, 所以设置为Off

 

ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On

ProxyPass为代理转发的Url,即将所有访问/*的请求转发到群集balancer://cluster/

其中cluster后面的"/"不可缺少, 否则使用status模块查看apache代理运行状态的时候将会出错

 

<proxy balancer://cluster/>
BalancerMember ajp://127.0.0.1:9001 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9002 loadfactor=1 route=jvm2
</proxy>

BalancerMember为群集的成员,即群集服务器Tomcat1, 2, ....,负载均衡服务器会根据均衡规则(loadfactor)来将请求转发给BalancerMember。

Apache使用ajp协议与tomcat子服务器进行交互, 协议后的路径为每个tomcat的运行地址, 端口为tomcat的ajp服务运行端口, 端口在server.xml的connector标签中设置.

route的值对应tomcat的server.xml中engine标签的jvmRoute属性.

 

 

Tomcat 端设置

需要多个tomcat安装到不同位置, 每个tomcat都需要配置以保证端口不互相冲突

 

Server.xml

8001需要保证端口不冲突

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

 这部分的HTTP端口, 默认是8080可以注释掉

<!--
<Connector port="8080" protocol="HTTP/1.1"
			connectionTimeout="20000" redirectPort="8443" />
--> 
9001需要保证端口不冲突
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="9001" protocol="AJP/1.3" redirectPort="8443" />

 Standalone, localhost, jvm1

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">

 Cluster标签的默认配置需要注释掉

<!-- 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 
-->

 

 

替换为下面的Cluster配置,

其中228.0.0.4及其端口为组播地址和端口45564, 不可更改.

5001需要保证端口不冲突

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
	channelSendOptions="6">
	<Manager className="org.apache.catalina.ha.session.BackupManager"
		expireSessionsOnShutdown="false" notifyListenersOnReplication="true"
		mapSendOptions="6" />
	<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="5001" selectorTimeout="100" maxThreads="6" />
		<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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" />
	<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.ClusterSessionListener" />
</Cluster>

 

 

将以上代码片段中的标注红色部分, 排除端口冲突, 设置好属性值.

确保 CATALINA_BASE, CATALINA_HOME熟悉没有被设置仅系统环境变量里面

 

测试部分

 

将各个tomcat下面的

/tomcat/webapps/ROOT/index.jsp

改为以下内容

<html><body><h1>Tomcat NodeX</h1></body></html>

比如第一个就是Tomcat Node1 , 第二个Tomcat Node2                           

 

 

访问Apache服务器根目录, 假设是: http://localhost

多刷新仅此, 显示的内容将会在

Tomcat Node1

Tomcat Node2

或者

Tomcat Nodex

 

之间切换, 代表设置成功.

 

 

分享到:
评论

相关推荐

    反向代理负载均衡 Apache + Tomcat集群

    反向代理负载均衡 Apache + Tomcat集群 多的我也不多说了 看文档

    apache+tomcat+jk 均衡负载和集群

    3. **JK模块( mod_jk)**:Apache的JK模块是一个负载均衡和反向代理模块,专门设计用来与Tomcat和其他基于Java的Web服务器协同工作。它能将HTTP请求转发到后端的Tomcat实例,实现负载均衡。 4. **负载均衡**:负载...

    Apache+tomcat实现负载均衡

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

    windows下apache+tomcat反向代理模式配置负载均衡(091124整理).rar

    windows下apache+tomcat反向代理模式配置负载均衡

    Apache+tomcat负载均衡

    Apache通常通过其模块mod_proxy来实现负载均衡,它可以与Tomcat或者其他应用服务器进行集成。 在Apache中配置负载均衡,首先需要安装mod_proxy和mod_proxy_balancer模块。这些模块允许Apache作为反向代理服务器,...

    Apache+Tomcat+Linux集群和负载均衡

    **Apache+Tomcat+Linux集群和负载均衡**主要指通过Apache作为前端反向代理服务器,Tomcat作为后端应用服务器,同时利用Linux系统强大的稳定性和安全性来构建一个能够有效分发请求、提高响应速度和服务质量的Web应用...

    Nginx+keepalived+tomcat实现性负载均衡(包含需要的包)

    在构建高性能、高可用性的Web服务时,使用Nginx+keepalived+tomcat的组合可以实现强大的负载均衡和故障转移功能。这个方案的核心思想是利用Nginx作为前端反向代理服务器,通过keepalived来确保服务的高可用性,并将...

    Apache和Tomcat实现集群和负载均衡(WindowsNT)

    ### Apache和Tomcat实现集群和负载均衡(Windows NT) #### 软件环境 为了实现Apache与Tomcat的集群及负载均衡,在Windows NT环境下需要准备以下软件环境: 1. **Apache**: 版本2.0.55。可以从官方网站...

    Apache+Tomcat整合

    Apache 和 Tomcat 整合是将 Apache 作为前端服务器,负责处理静态内容和反向代理,而 Tomcat 作为后端应用服务器,处理 Java 应用的动态请求。这种架构可以充分利用两者的优点,提高系统性能和可扩展性。下面我们将...

    Windows 下使用 Apache + Tomcat 实现Web集群环境(负载均衡/反向代理)

    下载完成后,将压缩包解压到位,并将多余的 ...2、安装配置 Apache 环境。 3、安装配置 Tomcat 集群环境。 具体的详细操作步骤及参数详解请参考: https://blog.csdn.net/hello_world_qwp/article/details/79698334

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

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,Apache HTTP Server和Tomcat作为两个广泛应用的开源软件,常被结合使用以实现集群和负载均衡。Apache作为强大的静态资源服务器,而Tomcat则专精于Java应用的...

    apache+tomcat负载均衡整合文档

    3. **设置负载均衡策略**: 使用 `ProxyPassMatch` 或 `ProxyPass` 和 `ProxyPassReverse` 结合 `BalancerMember` 配置负载均衡器。例如,使用轮询策略: ``` BalancerMember ...

    apache+tomcat+memcached

    - Apache Server在处理HTML、CSS、JavaScript等静态资源方面表现出色,通过反向代理和负载均衡功能,可以将静态请求直接响应,动态请求转发给后端的Tomcat服务器。 - 搭建Apache Server集群时,可能需要考虑配置...

    apache2.4+tomcat8反向代理集群

    通过以上步骤,我们已经在Windows环境下成功配置了Apache2.4与Tomcat8的反向代理集群,实现了负载均衡及Session共享。这一配置方案不仅能够提高系统的可用性和稳定性,还能有效提升用户访问速度和体验,是大型网站和...

    Apache+Tomcat集群

    此外,随着技术的发展,现代的负载均衡解决方案如Nginx、HAProxy等也可能替代Apache作为反向代理和负载均衡器,提供更高效、灵活的解决方案。不过,理解Apache+Tomcat集群的基础配置对于运维和开发者来说仍然是非常...

    Apache+Tomcat集群的负载均衡配置文件和测试文件

    本主题聚焦于"Apache+Tomcat集群的负载均衡配置",通过Apache作为前端代理服务器,对后端的多个Tomcat实例进行负载分发,以实现高可用和高性能的服务。 首先,我们要理解负载均衡的基本概念。负载均衡是指将流入的...

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

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

Global site tag (gtag.js) - Google Analytics