tomcat集群与负载均衡

Tomcat的集群

单机多tomcat集群
1、在本机运行多个tomcat,在E:\appserver\tomcat7.0_cluster部署两个tomcat
Tomcat7.028_as1,Tomcat7.028_as2
2、修改tomcat配置
2.1端口
As1:http->9180,ajp->9109,shutdown-> 9105
As2:http->9280,ajp->9209,shutdown->9205
2.2服务器别名
As1:jvmRoute="jvm1 “
As2:jvmRoute="jvm2"
2.3打开默认集群模式(tomcat5.5与tomcat6、7不同)
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
2.4修改tomcat启动窗口名称,便于区分
As1:set TITLE=Tomcat_as1
As2:set TITLE=Tomcat_as2

1、部署测试应用
1.1将test文件夹放到Tomcat7.028_as1和Tomcat7.028_as2并行目录,即是E:\appserver\tomcat7.0_cluster
1.2在tomcat的conf\Catalina\localhost建立test.xml,内容如下:
<?xml version='1.0' encoding='utf-8'?>
<Context crossContext="true" docBase="E:\appserver\tomcat7.0_cluster\test" path="/test" reloadable="false" >
</Context>
2、访问测试应用
http://127.0.0.1:9180/test/
http://127.0.0.1:9280/test/
3、会话复制
在应用中web.xm加入<distributable/>


Apache与tomcat实现负载均衡
#让Apache监听80端口
Listen 80
# 加载相关模块
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_http_module modules/mod_proxy_http.so

#Proxy模块基本配置,禁止正向代理
#在</IfModule>标签后面加入如下配置
ProxyRequests Off
#ProxyVia On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>


#配置集群,实现轮询方式
SetEnv proxy-nokeepalive 1
ProxyPass /test/ balancer://TomcatCluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3
ProxyPassReverse /test/ balancer://TomcatCluster/
#加入集群的Tomcat应用主机
#9109及9209详见Tomcat Server.xml中相应配置
#route详见Tomcat Server.xml中相应配置
<Proxy balancer://TomcatCluster>
BalancerMember ajp://127.0.0.1:9109/test/ loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9209/test/ loadfactor=1 route=jvm2
</Proxy>

轮询均衡策略的配置
ProxyPass /test balancer://proxy
<Proxy balancer://proxy>
BalancerMember http://192.168.6.37:6888/
BalancerMember http://192.168.6.38:6888/
</Proxy>
我们来观察上述的参数“ProxyPass /test balancer://proxy”,其中,“ProxyPass”是配置虚拟服务器的命令,“/test”代表发送Web请求的URL前缀,如:http://myserver/test或者http://myserver/test/aaa,这些URL都将符合上述过滤条件;“balancer://proxy”表示要配置负载均衡,proxy代表负载均衡名;BalancerMember 及其后面的URL表示要配置的后台服务器,其中URL为后台服务器请求时的URL。以上面的配置为例,实现负载均衡的原理如下:
假设Apache接收到http://localhost/test/aaa请求,由于该请求满足ProxyPass条件(其URL前缀为“/test”),该请求会被分发到后台某一个BalancerMember,譬如,该请求可能会转发到 http://192.168.6.37:6888/aaa进行处理。当第二个满足条件的URL请求过来时,该请求可能会被分发到另外一台BalancerMember,譬如,可能会转发到http://192.168.6.38:6888/。如此循环反复,便实现了负载均衡的机制。

按权重分配均衡策略的配置
ProxyPass /test balancer://proxy lbmethod=byrequests
<Proxy balancer://proxy>
BalancerMember http://192.168.6.37:6888/ loadfactor=3
BalancerMember http://192.168.6.38:6888/ loadfactor=1
</Proxy>
参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/test/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为http://192.168.6.37:6888的服务器,有1次这样的请求被负载BalancerMember为http://192.168.6.38:6888后台服务器。实现了按照权重连续分配的均衡策略。

按权重分配均衡策略的配置
ProxyPass /test balancer://proxy lbmethod=byrequests
<Proxy balancer://proxy>
BalancerMember http://192.168.6.37:6888/ loadfactor=3
BalancerMember http://192.168.6.38:6888/ loadfactor=1
</Proxy>
参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/test/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为http://192.168.6.37:6888的服务器,有1次这样的请求被负载BalancerMember为http://192.168.6.38:6888后台服务器。实现了按照权重连续分配的均衡策略。


权重请求响应负载均衡策略的配置
ProxyPass /test balancer://proxy lbmethod=bytraffic
<Proxy balancer://proxy>
BalancerMember http://192.168.6.37:6888/ loadfactor=3
BalancerMember http://192.168.6.38:6888/ loadfactor=1
</Proxy>
参数“lbmethod=bytraffic”表示后台服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的。“loadfactor”表示后台服务器处理负载请求和响应字节数的权值,该值默认为1,可以将该值设置在1到100的任何值。根据以上配置是这么进行均衡负载的,假设Apache接收到http://myserver/test/aaa请求,将请求转发给后台服务器,如果BalancerMember为http://192.168.6.37:6888后台服务器负载到这个请求,那么它处理请求和响应的字节数是BalancerMember为http://192.168.6.38:6888 服务器的3倍(回想(2)均衡配置,(2)是以请求数作为权重负载均衡的,(3)是以流量为权重负载均衡的,这是最大的区别)。

粘性会话
ProxyPass /test/ balancer://TomcatCluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3
ProxyPassReverse /test/ balancer://TomcatCluster/
stickysession均衡器粘连会话名称。该值常常会被设置为类似JSESSIONID或者PHPSESSIONID之类的值,他依赖于支持会话的后端应用服务器。如果后端服务器使用不同的cookie名称或者URL编码的ID(像servlet容器),使用|来分开他们。第一个部分针对cookie,第二个针对路径。
stickysession=JSESSIONID ,启用粘性会话
空,不启用粘性会话,默认为空

失效转移
ProxyPass /test/ balancer://TomcatCluster/ lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3
ProxyPassReverse /test/ balancer://TomcatCluster/
Nofailover,默认为Off。如果设为‘On’,当工作单元被禁用或者出错时,会话则立即中断。可以将该值设为On如果后端服务器不支持会话复制(Session replication)。
nofailover=Off开启失效转移
nofailover=On关闭失效转移
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值