最近研究下 apache+tomcat 集群 ,
总的来说有两种方式 1 proxy 2 mod_jk 其中 proxy中具体也分了balance,其实mod_jk如果workers.properties不配置负载均衡也就是实现简单的转发。
总的来说支持协议也是两种 1 http 2 ajp
协议可自由选择
先看第一种方式 比较简单
一 proxy 方式
1 首先开启apache的proxy模块 ,具体如下
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_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
我直接搜索了proxy copy to here. 如果不用ajp 可不开启
2 在apahce中 配置 代理成员
ProxyPass / balancer://proxyTest/
<Proxy balancer://proxyTest>
BalancerMember http://127.0.0.1:8081/ loadfactor=1
BalancerMember http://127.0.0.1:8082/ loadfactor=1
</Proxy>
注意 ProxyPass 后的 /为根目录 如果有虚拟目录可配置 proxyTest 是你balancer的名字,对应即可,千万注意 member里千万别加注释 ## 我加了注释后居然报错
BalancerMember can not have a balancer name when defined in a location
loadfactor 为权重值1-100 其实也就是分配的概率 ,直接分配了2个tomcat
完后重启apache 通过浏览器测试发现 8081 和8082 交替出现 ,当然这里也可支持ajp协议,感兴趣的可以试试
二 mod_jk 方式
1 首先配置 mod_jk-1.2.31-httpd-2.2.3.so 模块
此模块 默认apache 并未支持 需要我们自己安装下载地址如下
http://zucou.com/download/mod_jk-1.2.31-httpd-2.2.3.rar
2 在apache中配置引入mod_jk.conf和httpd.conf同一目录即可
# 负载均衡转发
Include "conf/mod_jk.conf"
3 在mod_jk.conf中 配置 引入模块和配置文件
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.3.so
JkWorkersFile conf/workers.properties
#指定那些请求交给tomcat处理,"controller"为在workers.propertise里指定的负载分配控制器名
JkMount /*.* controller
4 将需要转发已经负载的tomcat配置在workers 中
#server
worker.list = controller
#========tomcat8081========
worker.tomcat8081.port=8009
worker.tomcat8081.host=127.0.0.1
worker.tomcat8081.type=ajp13
worker.tomcat8081.lbfactor = 1
#========tomcat8082========
worker.tomcat8082.port=8010
worker.tomcat8082.host=127.0.0.1
worker.tomcat8082.type=ajp13
worker.tomcat8082.lbfactor = 1
#========controller,负载均衡控制器========
worker.controller.type=lb
worker.controller.balanced_workers=tomcat8081,tomcat8082
worker.controller.sticky_session=false
worker.controller.sticky_session_force=1
#worker.controller.sticky_session=1
5 配置tomcat
修改 server.xml文件
修改后重启
即可见到效果
集群环境下 就存在session 同步问题 。。。这个还是在补充吧 今天没时间了。。太饿了 还没吃饭。。。。。醒了后还没下床