Apache2.2配置负载均衡

提醒:配置好之后在测试的时候必须保存session在不同的应用服务器(tomcat,jboss,weblogic等)的复制。

配置工具官方下载地址:http://httpd.apache.org/download.cgi(百度有安装教程,该中间在windows下配置负载均衡比较稳定)

负载均衡就是把所有用户的访问压力分散到多台服务器上,也可以分散到多个tomcat里。

首先创建一个Web项目,在项目的web.xml中需要加上以下配置,表明该应用可多应用分流处理,能进行session的复制。

 

<display-name> 就是web项目的描述信息,在应用服务器控制台上可以作为标志

<distributable> 元素为空标签,它的存在与是否可分布式处理.如果web.xml中出现这个元素,则代表站台开发时,已经被设计为能在多个JSP Container之间分散执行。

<display-name>TomcatClusterDemo</display-name> <distributable/>

服务端要使用几个tomcat进行负载就配置几个tomcat服务的启动。

 

web服用服务器的部署工作

将两个web项目放到tomcat1,tomcat2的webapps目录下,确认通过tomcat1,tomcat2来进行分流,这两个tomcat的端口,AJP等配置要不一样。

例如tomcat1的servel.xml配置:

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

<Connector port="10001" protocol="HTTP/1.1"

connectionTimeout="20000" redirectPort="8443" />

<Connector port="20001" protocol="AJP/1.3" redirectPort="8443" />

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

 

tomcat2的servel.xml配置:

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

<Connector port="10002" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />

<Connector port="20002" protocol="AJP/1.3" redirectPort="8443" />

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm2">

 

修改apache的httpd.conf文件

1,在Apache安装目录下找到Apache24/conf/下的 httpd.conf,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(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

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so

 

 

2,去掉Include conf/extra/httpd-vhosts.conf前面的注释 #(打开conf文件下extra文件的虚拟主机---httpd-vhosts.conf)

Apache虚拟主机配置的作用:现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录(方法-基于IP配置,基于域名配置,端口配置)

 

3,在httpd.conf文档最下面加上一下代码:

ProxyRequests Off

<Proxy balancer://mycluster>

BalancerMember ajp://172.16.X.X:20001/ loadfactor=1 route=jvm1

BalancerMember ajp://172.16.X.X:20002/ loadfactor=1 route=jvm2

</Proxy>

ProxyPass / balancer://mycluster/

 

解释值:

172.16.X.X是tomcat服务器的IP,端口号对应tomcat中server.xml里的ajp的端口号,route对应jvmRoute的配置。

 

# 警告:以下这段配置仅用于调试,绝不要添加到生产环境中!!!

# 是用来监视负载均衡的工作情况的,调试时可以加上(生产环境中禁止使用!),然后访问 http://localhost/balancer-manager/ 即可看到负载均衡的工作状况。

<Location /balancer-manager>

SetHandler balancer-manager

order Deny,Allow

Deny from all

Allow from localhost

</Location>

 

详解:

-- 172.16.X.X:20001 和 172.16.X.X:20002 是当前本机地址+端口号

-- 从 ProxyRequests Off 可以看出,负载均衡器就是一个反向代理,只不过它的代理转发地址不是某台具体服务器,而是一个balancer:// 协议

-- ProxyPass / balancer://mycluster协议地址可以随便定义

-- loadfactor 表负载均衡比例划分,取值参数范围1-100

 

配置虚拟站点

用文本编辑器打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上以下代码:

<VirtualHost *:80>

ServerName 127.0.0.1

ServerAlias localhost

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

ProxyPassReverse / balancer://mycluster/

ErrorLog "logs/lbtest-error.log"

CustomLog "logs/lbtest-access.log" common

</VirtualHost>

---------------------

 

运行

将两个web项目放入tomcat1和tomcat2中,重启apache,tomcat1,tomcat2

页面多刷新几次,可以尝试轮流关闭tomcat来进行测试

 

测试本机地址:1270.0.1+对应tomcat中webapp下的相对路径

测试其他:ip地址+对应tomcat中webapp下的相对路径

 

如果将web项目部署到两个或多个tomcat中,两个tomcat可以随机打印内容到控制台,就说明apache负载均衡配置成功。

80端口是默认端口,将80端口修改成8090或者8080就要显示的通过ip+端口号去调用,不修改直接通过ip访问,因为默认访问的端口就是80。

 

项目常用部署负载均衡的四种方式

  1. 通过实现Web服务器实现负载均衡(apache/nginx对tomcat)。
  2. 使用网络地址转换实现多服务器负载均衡。
  3. 使用DNS服务器实现负载均衡。
  4. 通过SQL Server数据库实现负载均衡。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、小H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值