网上很多关于集群的文章,不过很多在细节上讲的不够详尽。导致初学者在测试时出现的问题不能解决。好了,话说到这里,关键是解决问题。
1、首先群集所需组件的准备,我这里用的是Apache2.4.6,tomcat8.0.302,jdk1.8
Apache2.4.6下载地址:http://download.csdn.net/detail/benxiaohai529/9652400 绿色免安装版
tomcat8和jdk8我这里就不提供下载地址了,因为这个网上一搜一大堆。
2、Apache2.4.6安装及配置
1)首先我提供的是免安装版的,下载后直接解压即可;解压后放在磁盘英文目录下。
2)以管理员身份打开命令行窗口。
3) cd C:\Apache24 进入到Apache2.4.6安装目录,
http -k install 安装Apache2.4.6服务,这样就可以在计算机的服务里看到这个服务,
在这里可以设置服务是否开机启动。
http -k uninstall解除服务,即卸载该服务;执行此命令后该服务即从计算机的服务中移除
httpd 启动服务。
服务是否正常启动可以在浏览器里输入http://localhost/ 进行测试,如果出现It Works说明正常 启动,不同版本显示的内容有可 能不一样。
如果启动失败一般有三种情况 :
第一种端口被其它程序占用不能启动,因为Apache监听端口是80,而此端口也是web服务常 用 的端口,所以在启动 Apache服务前应停掉其它服务对80端口的占用或者修改Apache监听端口。
修改端口 :在conf/httpd.conf中搜索 Listen 80 在 这里修改即可,
第二种路径设置
在conf/httpd.conf中搜索 ServerRoot 在ServerRoot 后面有双引号的字符串,双引号里面的字符串是指你Apache2.4.6的安装 目录,我这里是ServerRoot "c:/Apache24"记住ServerRoot 与"c:/Apache24"中间有空格的。
第三种情况就是load加载错误而导致的。这种情况不能一概而论,视俱体情况而定。
3、Apache2.4.6配置tomcat集群
第一步:在conf目录下新建mod_proxy_balancer.conf文件并在mod_proxy_balancer.conf文件中添加以下内容
#---------------------start------------------------
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule rewrite_module modules/mod_rewrite.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 speling_module modules/mod_speling.so
LoadModule ssl_module modules/mod_ssl.so
#----------------------end---------------------
第二步:在conf/httpd.conf的文件尾追加
include conf/mod_proxy_balancer.conf
第三步:在conf/httpd.conf的文件尾追加
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
第四步:在conf/httpd.conf的文件尾追加
ProxyRequests Off
<proxy balancer://cluster>
BalancerMember http://127.0.0.1:8080 loadfactor=1 route=tomcat
BalancerMember http://127.0.0.1:8180 loadfactor=3 route=tomcat1
BalancerMember http://127.0.0.1:8280 loadfactor=1 route=tomcat2
</proxy>
ProxyPass / balancer://cluster/
在这里我重点讲解的是第四步
ProxyRequests Off 关闭正向代理请求,
<proxy balancer://cluster>
BalancerMember http://127.0.0.1:8080 loadfactor=1 route=tomcat
BalancerMember http://127.0.0.1:8180 loadfactor=3 route=tomcat1
BalancerMember http://127.0.0.1:8280 loadfactor=1 route=tomcat2
</proxy>
配置负载均衡,cluster名字自己随意起,这是负载均衡的名字,
BalancerMember http://127.0.0.1:8080 loadfactor=1 route=tomcat
http://127.0.0.1:8080 tomcat服务器的地址 ,loadfactor 权重比,我这里是三个服务器,假如访问次数是5的话,其中只 有一次可以访问名称为tomcat的服务器一次,即访问频率是1/(1+3+1); route路由名称,这个名称是在tomcat service.xml的
<Engine name="Catalina" jvmRoute="Tomcat" defaultHost="localhost">中配置的。与jvmRoute对应,这是我个人的理解。
ProxyPass / balancer://cluster/启用反向代理,这样来自Apache的请求都转向了tomcat了。
4、tomcat配置修改
在tomcat service.xml中搜索
Engine name="Catalina"
设置成:<Engine name="Catalina" jvmRoute="Tomcat" defaultHost="localhost">
jvmRoute="Tomcat"与Apache里 BalancerMember http://127.0.0.1:8080 loadfactor=1 route=tomcat
route相同。
如果在同一台机子上还需修改
Server shutdown 端口
Connector的port端口,这里是两个,如下面图
至此集群配置完毕,我们快来验证我们的成果吧,
首先创建一个test.jsp,分别放在三个tomcat的test中,每个tomcat中test.jsp显示 的内容不一样,然后启动apache服务和tomcat三个服务器,所有服务器启动完毕后我们打开浏览器,在浏览器里输入http://localhost/test/test.jsp.然后我们在试着刷新几次,效果就显而已见了。