您的位置:首页 > 理论基础 > 计算机网络

Apache Http Server整合Tomcat集群

2016-10-22 00:00 411 查看
摘要: 使用apache http server 整合tomcat集群,实现tomcat分布式部署,实现用户分流,提高服务稳定性!

一.分布式原理

通过Apache-Server作为中转服务器,实现多个tomcat服务器之间的分布式处理,用户直接请求Apache-Server,然后Apache-Server会将请求分发到具体的tomcat-server,之后tomcat-server响应客户请求并返回结果到Apache-Server,最后Apache-Server返回结果给用户。如下图:

二.安装tomcat

tomcat集群可以根据用户需求和真实环境选择水平集群部署或者垂直集群部署,水平集群部署即在多台服务器上部署,当其中一台服务器宕机或者服务停掉后请求回被转发到其余服务器上而不影响适应,缺点是浪费网络和设备资源。垂直集群部署是指在同一台服务器部署多个tomcat应用,由于单个tomcat对内存和cpu的消耗比较小,该部署方式可以将部署服务器的内存和cpu的利用率最大,当其中一个tomcat停止后也回被分发到其余tomcat不影响使用,但如果整个服务器宕机也会造成服务无法访问,稳定性要比水平部署差一点。

本文中示例是水平部署,将tomcat不是在两台机器上,由于是部署在多台机器上,有个好处是不会有tomcat端口号冲突问题,可以直接解压tomcat到两台服务器,无需修改任何配置,直接运行两个tomcat;本文使用的是apache-tomcat-7.0.72。

在myeclipse新建一个空的web项目,并导出war包,分别拷贝到两个tomcat中的webapps下,如:test.war。为了区分两个tomcat将test项目中的index.jsp中的body内容改为tomcat1和tomcat2,(一般部几圈部署的项目部署的内容都是完全一样的,本文修改body内容只是为了后面的测试更直观)并分别访问两个tomcat中部署的项目。如下:





三.安装apache http server

下载:apache http server 安装介质,本文下载的是:httpd-2.2.25-win32-x86-no_ssl.msi

双击运行:







此处的名称可以自己设置,其中server name即为服务域名,后续可以在安装配置文件中修改。



此处选择custom自定义安装目录







至此apache http server即安装完成。电脑右下角会出现一个apache的标志,可以通过该管理器对apache http server 进行起停。





四.配置apache http server

1.修改server名称

由于之前在安装的过程中我们设置的服务域名,如果用户当前安装服务器地址映射的即是之前填写的域名可以不用修改,如果是在自己电脑安装测试的可以找到%apache_home%\conf\httpd.conf文件打开,搜索ServerName找到之前配置的域名,更改位本机ip地址/或者127.0.0.1/或者localhost.

修改完后重启apache http server

# If your host doesn't have a registered DNS name, enter its IP address here.
#
ServerName wangzhen.wz.com

注:修改完配置之后,可以点击Test Configuration来测试你修改的配置文件是否正确,如果点击之后doc窗口一闪而过,说明你修改的配置文件没问题,如果doc窗口一直停留住,说明修改的配置有问题:



还一种方式是在本机host文件中添加域名映射,不用修改httpd.conf文件,如:

# localhost name resolution is handled within DNS itself.
#	127.0.0.1       localhost
#	::1             localhost
127.0.0.1       wangzhen.wz.com

具体怎么处理看个人选择,本文选择的是在host中映射域名的方式,serverName修改完成之后可以在浏览器输入地址测试下我们安装的serverName,如果出现如下界面,则说明我们安装成功。



2.下载mod_jk模块

apache http server 与tomcat的连接是通过一个叫做mod_jk的模块联通起来的,我们首选要下在这个模块,本文使用的是mod_jk-1.2.31-httpd-2.2.3.so,并将该模块放入到%apache_home%\modules目录下,可以看到该目录下有很多同种格式的模块。

3.配置mod_jk

在%apache_home%\conf\httpd.conf文件的最后,记住是最后,添加include conf/mod_jk.conf表示引入mod_jk.conf配置文件,既然引入了mod_jk.conf,而且该目录下又没有mod_jk.conf,所以我们要在同目录下手动创建一下mod_jk.conf文件,文件内容如下:

#加载mod_jk Module
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so

#指定workers.properties文件路径 也就是指定工作的tomcat路径
JKWorkersFile conf/workers.properties

#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器
JkMount /* controller

同理,该配置文件种引入了指定tomcat工作路径的配置文件workers.properties,也需要手动创建一个workers.properties配置文件,内容如下:

worker.list = controller,tomcat1,tomcat2  #server 列表
#========tomcat1========
worker.tomcat1.port=8009       #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat1.host=localhost  #tomcat的主机地址,如不为本机,请填写ip地址
worker.tomcat1.type=ajp13
worker.tomcat1.lbfactor = 2    #server的加权比重,值越高,分得的请求越多

#========tomcat2========
worker.tomcat2.port=8009       #ajp13 端口号,在tomcat下server.xml配置,默认8009
worker.tomcat2.host=192.168.1.116  #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

如果是垂直部署要注意ajp13 端口不能冲突,因为apache http server连接tomcat走的是ajp13 端口。水平部署的话就无所谓了。

在该配置文件种指定我们第二部安装的tomcat地址,重新启动apache http server。通过apache http server 访问我们部署的test项目。连续刷新页面,可以看到如下效果:





请求通过apache http server有时被分发到本机的tomcat1上,有时被分发到1.116上的tomcat2上,到此处则表我们的tomcat集群初步部署成功。

五.session共享配置

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息