|
< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
Apache&Tomcat集群
1. 软件
2010年五一晚上做的测试采用的软件:
1) apache_< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />2.0.55-win32-x86-no_ssl.msi
2) apache-tomcat-5.5.29.zip
3) mod_jk
还有什么JDK了,操作系统了废话没用的就不提了。
2. 负载均衡
1) 理论环节
先说下为什么要用Apache,用Apache的目的是为了做负载均衡。啥是个负载均衡?简单点说就是把请求你服务的数量分配开了,别让我一个人(是一个WEB服务器)来处理,大家一起来帮我处理,所以就产生了这么个名词,也由此就诞生了一种分配结构。画个图看看:
< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />
WEB服务器
WEB服务器A
WEB服务器B
WEB服务器C
< xmlnamespace prefix ="w" ns ="urn:schemas-microsoft-com:office:word" /> 前面一个领导后面一堆干活的,这个整体的事情叫负载均衡,前面的那个领导就是Apache大虾,此虾就是分配任务的头,有很多大虾都可以当此领导,Apache,nginx等等,Tomcat其实也可以的。用的最多是Apache,最厉害的是nginx,其实有它不均衡也可以了,哥们单挑支持3万并发连接,正好是Apache的10倍,据说新浪、网易、 腾讯都用它,可想而知。我还没验证过,大家没事telnet下三个大网站看看是不是。Tomcat用在这有点笨,分配任务的时候据说没原则,领导的领导们不好控制他所以用的人少。
2) Apache操作
现在开始来实现负载均衡的操作:
i. 先装apache_2.0.55
选这版本是因为用的人多,网上资料把我决定了(版本很重要,待会儿告诉你为什么),毕竟学别人的东西。
ii. 配置
a) 在http.conf最后加一句:include conf/mod_jk.conf
b) 创建mod_jk.conf,并添加内容
以下是我配置的原样:()
LoadModule jk_module modules/mod_jk.so #加载mod_jk Module
JkWorkersFile conf/workers.properties #指定 workers.properties文件路径
JkMount /* controller#对所有的请求进行分流
c) 创建workers.properties文件,并添加内容
以下内容是我配置的原样本:按此段第二条的的配置位置创建
worker.list = controller,tomcat1,tomcat2 #server 列表
#========tomcat1========
worker.tomcat1.port=8888 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========tomcat2========
worker.tomcat2.port=9999 #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=localhost #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat2.type=ajp13
worker.tomcat2.lbfactor = 1 #server的加权比重,值越高,分得的请求越多
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat1,tomcat2 #指定分担请求的tomcat
worker.controller.sticky_session=1
d) mod_jk.so文件
这个文件就是本段第一句在http.conf中首先设置的内容。到Apache那下载, 它是The Apache Tomcat Connector,就是Tomcat和别的服务器连接的插件,这类插件有很多种,有连IIS、Sun、apache,netscape等。其实下载的不叫mod_jk.so叫mod_jk-apache-2.0.55.so,我下的时候只有最新的mod_jk-1.2.30-httpd-2.2.3.so,为了配合版本的问题,百度了个2.0.55的。
把这个文件放置到此段第二条的的配置的位置
iii. 补充阐述
现在说下版本的问题,最关键的是什么版本的mod_jk能支持你采用的Apache,且又和你选的Tomcat配套。因为我直接下了个最新的Tomcat5.529的,Tomcat Connector 提供的是mod_jk-1.2.30-httpd-2.2.3.so,实验的时候折腾了1个小时都没成功,Apache就是启动不了。换了个2.0.55的,还是启动不了,最后发现是一句汉语注释没有加“#“,害的我死劲的读apache的英语模板,学了半天英语。
还有就是把下载的连接器改名为mod_jk.so。
You should first have mod_jk.so (unix) or mod_jk.dll (Windows) installed in your Apache module directory (see your Apache documentation to locate it)
其实改不改无所谓,就是王八的屁股,叫‘龟腚’!,造做就好懒的管它为什么。
忘了说那个workers.properties文件了,那个文件很好理解,猜猜就可以了猜不错。就是让领导的领导(说白了就是我或者你)配置领导下面有那些干活的和哪些活由谁来干的,Apache的Quick Start讲的很清楚,高级需求时再看看。
举例:
JkMount /*.jsp tomcat1 就是说所有请求的是jsp文件的tomcat1搞定。
JkMount /*.do tomcat2 就是说把所有.do请求的交给tomcat2处理。
JkMount /* controller 就是说领导按照一定比例随机分配给下面干活的,这个"controller"就是在workers.propertise里指定的负载分配控制器。
3) TOMCAT操作
i. 安装Tomcat
把下载的解压版本解压一份,按住ctrl点击后拖一下,两份改改名,Ta/Tb
ii. 配置Server.xml
改端口:要启多个Tomcat需要改的端口改了再说:
Ta
端口功能
Tb
|
|
|