Apache-httpserver + Tomcat负载均衡

Apache-httpserver + Tomcat负载均衡


做负载均衡,也可以用来做项目之间的session共享,首先说一下我的项目情况,我的服务器在一台电脑上,一共有两个项目,一个是我们的主业务网站,
另一个就是网站的论坛,现在需要给主网站做负载均衡,用两个tomcat,然后用一个另tomcat来跑bbs


第一步:修改httpd.conf文件,在文件最底部加上如下内容
LoadModule     jk_module  modules/mod_jk.so
JkWorkersFile conf/workers.properties
NameVirtualHost *:80

<VirtualHost *:80>
ServerName www.offlineshenzhoudai.com
#ServerAlias domain.tld *.domain.tld
DocumentRoot "G:/sessionShare/virtualHost_szdai"
JkMount /* worker1Balancer
#JkUnMount /jk-status
JkMount /jk-status  jk-status
#<IfModule jk_module>
#JkWorkersFile conf/workers.properties
#JkMountFile conf/uriworkermap.properties
#</IfModule>
</VirtualHost>

<VirtualHost *:80>
ServerName bbs.offlineshenzhoudai.com
DocumentRoot "G:/sessionShare/virtualHost_bbs"
JkMount /* worker2
</VirtualHost>




我们的负载是通过mod_jk这个http server的扩展模块来进行的,可以看到,我们在第一步加载了
模块 ,LoadModule jk_module  modules/mod_jk.so

然后指定了配置文件,也就是mod_jk的工作文件,内容如下

# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
#
# The workers that jk should create and work with
#

worker.list=worker1Balancer,worker2,jk-status //jk工作时要创建的对象worker1Balancer , 这个是主业务网站的负载均衡器,worker2是bbs的服务器,
//jk是监控模块工作状态的

# Defining a worker named node1 and of type ajp13
# Note that the name and the type do not have to match.

worker.node0.type=ajp13
worker.node0.host=localhost
worker.node0.port=8009

worker.node1.type=ajp13
worker.node1.host=localhost
worker.node1.port=10001

worker.worker2.type=ajp13
worker.worker2.host=localhost
worker.worker2.port=10002

# Defining a load balancer

worker.worker1Balancer.type=lb
worker.worker1Balancer.balance_workers=node0,node1

# Define status worker

worker.jk-status.type=status

worker.lb.sticky_session=false
worker.lb.sticky_session_force=1


这是httpserver的配置,然后需要修改的就是tomcat的配置文件,找到conf下的server.xml文件,

去掉 <Connector port="10001" protocol="AJP/1.3" redirectPort="8443" />的注释       作用是开启tomcat支持AJP协议连接器,也就是支持AJP协议链接(httpserver就是通过这个协议连接tomcat的)

去掉<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>的注释    让tomcat之间共享session,这样就能够支持session共享了



别人的文章 , 以后参考参考 http://wangjianming555.blog.51cto.com/2621896/1020732


2014-10-14 21:40

上面的文章是8个月前写的,自己看都觉得乱七八糟,竟然被人浏览了七八十次,这里向看我博客的人道歉,我写的太差了,希望以后可以慢慢改正,我博客写清楚,方便自己以后查看,同时 也给有需要的朋友参考.

现在加的内容和之前的内容其实是差不多的主题,都是围绕Apache 的httpd server来说的,前面是借助于mod_jk.so这个模块来做负载均衡,今天我需要的功能是借助于proxy_http_module来进行反向代理,先解释一下什么是反向代理
一般来说,代理是多台pc通过代理来访问特定内容,就像我们翻墙时用国外的代理软件来看 一些被屏蔽的网站,我画了一张图来说明代理的一般用法,比较丑,请见谅

pc1,pc2,pc3通过pc4上的 代理访问Internet. 是这样一个过程,比如说pc1上的电脑访问 百度(需要将浏览器的代理服务器设置为pc4),请求会到达pc4,因为pc1浏览器的代理服务器 是pc4,pc4访问www.baidu.com,把获取到的网页内容返回给pc1,同样访问别的网站也是一样,pc2,pc3也同样是这样。

方向代理:顾名思义,就是反着来代理,我们假设有一个场景,公司有四台服务器,但是只有一个域名,baiduxx.com, 分别有一台news服务器,bbs服务器,img服务器,但是用户要通过域名来访问怎么办呢?请看如下的图

我们使用1台服务器来跑 Apache web 服务器 端口为80,客户端访问时如果用news.baidu.com访问,webserver就将请求转发到news 服务器处理,如果是bbs.baiduxx.com就转到bbs服务器处理,然后再交给apache并返回给用户。

原理就是这样,接下来我们来看具体 如果做反向代理,因为反向代理需要相应模块,请将httpd.conf中如下模块启用

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so

以下是httpd.conf要添加的配置文件内容
NameVirtualHost *:80
<VirtualHost *:80>
ServerName news.baiduxx.com

ProxyPass / news://*
<Proxy news://*>
BalancerMember http://192.168.1.100:8888/
</Proxy>
</VirtualHost>


<VirtualHost *:80>
ServerName bbs.baiduxx.com
ProxyPass / bbs://*
<Proxy bbs://*>
BalancerMember http://192.168.0.101:9999/
</Proxy>
</VirtualHost>
这里简单解释一下手先通过NamVirtualHost 来设置支持NamedVirtualHost方式访问的地址,这里设置为*:80,代表侦听所有地址,然后在每个虚拟主机中设置相应的机器名, ServerName : news.baiduxx.com,这句代表将访问这个域名所有的请求都被这个 虚拟主机处理,然后通过代理将请求反向转发到内网的别的机器,当然这里也可以是本机的其它端口,如BalancerMember http://127.0.0.1:8888 可以看到请求是news://*,这个其实从url的标准来看这里news代表一个协议,这里其实是没关系的,可以为任意的,bb://*   ,转发的顺序为  ProxyPass指令将 / (所有请求)转化为 news://* , 然后Proxy指令捕获这个news://*并将其转到 http://192.168.0.100:8888/

参考文章:点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值