Apache负载均衡之mod_proxy模块实现

实验环境:一台虚拟机,IP:192.168.1.117

实验目的:学习mod_proxy的负载功能,实现Apache反代并且负载到后端两个tomcat。

实验步骤:

在/etc/httpd/conf.d目录下增加配置文件,实现Apache的负载均衡。

# cd /etc/httpd/conf.d

# vim mod_proxy.conf

<Proxy balancer://lbcluser1>

BalancerMember http://192.168.1.117:8080 loadfactor=1 route=TomcatA

BalancerMember http://192.168.1.117:9080 loadfactor=1 route=TomcatB

ProxySet lbmethod=byrequests

</Proxy>

ProxyPass / balancer://lbcluser1/

ProxyPassReverse / balancer://lbcluser/

保存退出

在上面配置文件</Proxy>和ProxyPass / balancer://lbcluser1/ 的中间中添加如下,这样可以访问其status页面。

<Location /status>

SetHander balancer-manager

ProxyPass !

Order allow,deny

Allow from all

</Location>

即是下面配置, # vim mod_proxy.conf

<Proxy balancer://lbcluster1>

BalancerMember http://192.168.1.117:8080 loadfactor=1 route=TomcatA

BalancerMember http://192.168.1.117:9080 loadfactor=1 route=TomcatB

ProxySet lbmethod=byrequests

</Proxy>

<Location /status>

SetHander balancer-manager

ProxyPass !

Order allow,deny

Allow from all

</Location>

ProxyPass / balancer://lbcluster1/

ProxyPassReverse / balancer://lbcluster/

保存退出之后

# httpd -t

# service httpd restart

下面在tomcat下创建test测试页

现在两个tomcat上做测试页,即在/usr/local/tomcatA/webapps/目录下

创建# mkdir -pv ./test/WEB-INF/{classes,lib},并且在test目录下穿件文件

# vim index.jsp

<%@ page language="java" %>

<html>

<head><title>TomcatA</title></head>

<body>

<h1><font color="red">TomcatA. .just a test page </font></h1>

<table border="1">

<tr>

<td>Session ID</td>

<% session.setAttribute("changyu.com","changyu.com"); %>

<td><%= session.getId() %></td>

</tr>

<tr>

<td>Created on</td>

<td><%= session.getCreationTime() %></td>

</tr>

</table>

</body>

</html>

同理在tomcatB同位置处

演示效果,在TomcatB上某context中(如/test),提供如下页面

<%@ page language="java" %>

<html>

<head><title>TomcatB</title></head>

<body>

<h1><font color="blue">TomcatB.just a test page</font></h1>

<table border="1">

<tr>

<td>Session ID</td>

<% session.setAttribute("changyu.com","changyu.com"); %>

<td><%= session.getId() %></td>

</tr>

<tr>

<td>Created on</td>

<td><%= session.getCreationTime() %></td>

</tr>

</table>

</body>

</html>

还有一步就是在/usr/local/tomcat{1,2}/webpapps/test/WEB-INF/的目录下加一个web.xml文件并且在其任意位置添加<distributable/>。

对于tomcatA来说

[[email protected] conf]# cp ./web.xml /usr/local/tomcatA/webapps/test/WEB-INF/

[[email protected] conf]# cd /usr/local/tomcatA/webapps/test/WEB-INF/

[[email protected] WEB-INF]# ls

classes  lib  web.xml

[[email protected] WEB-INF]#

[[email protected] WEB-INF]# vim web.xml //任意位置加入下信息

<distributable/>

对于tomcatB来说

[[email protected] conf]# cp ./web.xml /usr/local/tomcatA/webapps/test/WEB-INF/

[[email protected] conf]# cd /usr/local/tomcatB/webapps/test/WEB-INF/

[[email protected] WEB-INF]# ls

classes  lib  web.xml

[[email protected] WEB-INF]# vim web.xml //任意位置加入下信息。

<distributable/>

分别重新启动。

[[email protected] bin]# ./catalina.sh stop

Using CATALINA_BASE:   /usr/local/tomcatB

Using CATALINA_HOME:   /usr/local/tomcatB

Using CATALINA_TMPDIR: /usr/local/tomcatB/temp

Using JRE_HOME:        /opt/jdk1.7.0_71/

Using CLASSPATH:       /usr/local/tomcatB/bin/bootstrap.jar:/usr/local/tomcatB/bin/tomcat-juli.jar

[[email protected] bin]# ./catalina.sh start

Using CATALINA_BASE:   /usr/local/tomcatB

Using CATALINA_HOME:   /usr/local/tomcatB

Using CATALINA_TMPDIR: /usr/local/tomcatB/temp

Using JRE_HOME:        /opt/jdk1.7.0_71/

Using CLASSPATH:       /usr/local/tomcatB/bin/bootstrap.jar:/usr/local/tomcatB/bin/tomcat-juli.jar

Tomcat started.

[[email protected] bin]#

重新启动,并且访问http://192.168.1.117/test

刷新页面

将上面test应用定义成集群会话管理器,将下面文件拷贝到两个文件中

<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"/>

<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"/>

</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>

之后再次访问,会话保持

刷新一下,不难发现SessionID 没有变化。

时间: 2024-10-12 13:02:00

Apache负载均衡之mod_proxy模块实现的相关文章

Apache负载均衡之mod_proxy模块的代理功能

本次只是先在实验环境下实现Apache做代理,实现的过程比较简单,本人在一台虚拟机上(IP:192.168.1.116)使用yum安装了httpd,php和tomcat,apache-tomcat-7.0.56. 第一 步:yum安装httpd,php.安装好之后启动httpd并且访问. 第二安装tomcat,过程省略其安装成功分别访问截图如下. 第三步 接下来检查httpd的proxy的模块.要想实现Apache的负载均衡,需有如下几个模块. # httpd -M proxy_module (

nginx、Apache负载均衡后端主机tomcat,并实现session保持

一.实验环境准备 1.主机规划 Apache主机 172.18.12.20 TomcatA 172.18.12.21 TomcatB 172.18.12.22 2.tomcat主机安装和配置 # yum install -y java-1.7.0-openjdk java-1.7.0-openjdk-devel # vim /etc/profile.d/java.sh # yum install -y tomcat tomcat-lib tomcat-webapps tomcat-admin-w

使用nginx+Apache负载均衡及动静分离

使用nginx+Apache负载均衡及动静分离 介绍    LB负载均衡集群分两类: LVS (四层)和 nginx或haproxy (七层)    客户端都是通过访问分发器的VIP来访问网站 在七层中的网站页面有: .php .html .png .jpeg .jsp 等, 有动态页面有静态页面. 需要在应用层基于不同的应用进行分发. 一:实验拓扑图:     二:实验目标 实战:使用Apache+nginx实现动静分离的负载均衡集群 三:实验环境 主机作用分类 主机名 IP地址 安装软件 N

Linux系统实现Apache负载均衡

因项目需要最近研究了下Linux 红帽 6.5下实现Apache负载均衡的问题.从干净的环境说起. 1.安装JDK环境 首先下载linux版本的JDK,我使用的是jdk-6u24-linux-x64-rpm.bin,并将该文件上传至服务器的指定目录. chmod 777 jdk-6u24-linux-x64-rpm.bin修改文件的操作权限: ./jdk-6u24-linux-x64-rpm.bin,解压JDK文件: rpm -ivh jdk-6u24-linux-x64-rpm,安装JDK:

Tomcat系列之Apache负载均衡请求至Tomcat及DeltaManager的使用

Tomcat系列之Apache负载均衡请求至Tomcat及DeltaManager的使用

apache负载均衡中有关于session会话的问题

以下是有关于apache负载均衡和反向代理的配置 <VirtualHost *:90>   #虚拟主机默认访问端口     ServerAdmin *     ServerName astg.vj.com  #服务器访问名           ServerAlias *.astg.vj.com #服务器访问别名     ProxyRequests Off #       <IfModule mod_rewrite.c> #               RewriteEngine o

JBOSS通过Apache负载均衡方法一:使用mod_jk

JBOSS通过Apache负载均衡方法一:使用mod_jk   本文第一.二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负载均衡进行说明,第三节对相应的参数做了解释. 一.   Linux环境下Apache + mod_jk + JBOSS Apache和JBOSS使用AJP协议,利用8009端口通过mod_jk来实现通信. 1.  安装并配置apache 下载apache代码包,上传到服务器. 解开代码包 [[ema

《Apache负载均衡》RHEL6

Apache负载均衡的搭建,基于上篇<CDN web加速代理>搭建好的服务器,我们来搭建apache负载均衡: Apahe负载均衡:就是为了缓解一台服务器的压力而多台服务器配合使用. 基于上面配好的服务器: 我们还需要在添加一台apache服务器:192.168.1.136  只安装apache服务: 开启apache服务: 1.首先我们看下百度:很明显看到访问百度时它不止一个IP ,它是2台结合使用的. 2.修改双网卡主机的squid的配置文件: 3.重启apache服务: 客户端 4.首先

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理

Nginx基于TCP/UDP端口的四层负载均衡(stream模块)配置梳理 通常我们会用Nginx的upstream做基于http/https端口的7层负载均衡,由于Nginx老版本不支持tcp协议,所以基于tcp/udp端口的四层负载均衡一般用LVS或Haproxy来做.至于4层负载均衡和7层负载均衡的区别,可以参考:http://www.cnblogs.com/kevingrace/p/6137881.html.然而Nginx从1.9.0版本开始,新增加了一个stream模块,用来实现四层协