sszxf 发表于 2016-12-30 08:54:23

apache,tomcat ,loadbalance

Apache+Tomcat ,load balance
 
 
1.编译httpd ,apache 版本要在2.2 之上
./configure --with-apr=/usr/local/apr--with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre--prefix=/ceno/product/httpd --enable-module=vhost_alias --enable-module=so --enable-proxy--enable-proxy-ajp  --enable-proxy-balancer--enable-proxy-http
Make
Make install
 
 

 
查看有没有配置mod_proxy:
步骤一:
 执行/ceno/product/httpd/bin/httpd–l 命令,查看结果中有没有列出如下内容:
  mod_proxy.c
 mod_proxy_connect.c
 mod_proxy_ftp.c
 mod_proxy_http.c
 mod_proxy_scgi.c
 mod_proxy_ajp.c
 mod_proxy_balancer.c

 如果有,即说明已经安装了,不在进行步骤二。如果没有,则进入步骤二
 
步骤二:
  进入到/ceno/product/httpd/modules(httpd 的安装目录) 查看有没有
    mod_proxy_balancer.so
mod_proxy_http.so
mod_proxy.so

如果有,则说明安装成功,不再进行步骤三,否则进入步骤三进行安装
步骤三:安装
 
cd /work/apache/httpd-2.2.21/modules/proxy  apache 源文件下载的解压目录
 
/ceno/product/httpd/bin/apxs -c –i mod_proxy.cproxy_util.c
/ceno/product/httpd/bin/apxs -c –i mod_proxy_balancer.c
/ceno/product/httpd/bin/apxs -c –i mod_proxy_http.c

 
出现下面这个,则提示安装成功:
----------------------------------------------------------------------
Libraries have been installed in:
  /ceno/product/httpd/modules
 

 
 
 
3.配置httpd.conf文件(ajp 协议)
 
###############################################################
#LoadModule proxy_module"/ceno/product/httpd/modules/mod_proxy.so"
#LoadModule proxy_http_module"/ceno/product/httpd/modules/mod_proxy_http.so"
#LoadModule proxy_balancer_module "/ceno/product/httpd/modules/mod_proxy_balancer.so"
 
<Proxy balancer://mycluster>
BalancerMember ajp://192.168.7.18:8009route=worker1 loadfactor=1
BalancerMember ajp://192.168.7.18:8010route=worker2 loadfactor=1
</Proxy>
<Location /examples>
ProxyPass balancer://mycluster/examplesstickysession=JSESSIONID|jsessionid scolonpathdelim=On
</Location>
 
<Location /balancer-manager>
  SetHandlerbalancer-manager
</Location>
 

 
 
说明:
##
3.1.如果在httpd –l 命令中能够列出,则不需要在手动导入三个module
如果是使用 apxs 命令安装的,则需要手动添加三个module
3.2. balancer://mycluster 配置apache服务器负载均衡集群
这里使用ajp协议连接tomcat
 
3.3配置访问路径
 
Stickysessio=JSESSIONID|jsessionid  配置同一个sessionid的请求都发往同一台host,等号右边的是放置在url上的parameter的name 或者cookie 中的name,如果cookie 中的name 和url中的name 不一致,可以用 | 分隔。
scolonpathdelim=on
在jsesseionid 前用;分隔开的路径信息 如果需要获取到,则需要将该参数打开,默认该参数为off。
 
 
3.4.配置balancer-manager 用来监控 负载均很集群节点,你可以看到如下图
 
 
  4.配置http.conf(http协议)
 
 
#LoadModule proxy_module"/ceno/product/httpd/modules/mod_proxy.so"
#LoadModule proxy_http_module"/ceno/product/httpd/modules/mod_proxy_http.so"
#LoadModule proxy_balancer_module"/ceno/product/httpd/modules/mod_proxy_balancer.so"
 
<Proxy balancer://mycluster>
#BalancerMember ajp://192.168.7.18:8009route=worker1 loadfactor=1
#BalancerMember ajp://192.168.7.18:8010route=worker2 loadfactor=1
BalancerMember http://192.168.7.18:8080route=worker1 loadfactor=5
BalancerMember http://192.168.7.18:8081route=worker2 loadfactor=1
</Proxy>
 
<Location /examples>
ProxyPass balancer://mycluster/examples stickysession=JSESSIONID|jsessionidscolonpathdelim=On
</Location>
 
 
<Location />
ProxyPass balancer://mycluster/ stickysession=JSESSIONID|jsessionidscolonpathdelim=On
</Location>
<Location /balancer-manager>
  SetHandlerbalancer-manager
</Location>

 
 
 
说明:
 BalancerMemberhttp://192.168.7.18:8080 route=worker1 loadfactor=5
BalancerMember http://192.168.7.18:8081route=worker2 loadfactor=1

 
将其中的协议由 ajp变成httpd
 
其中route对应的name 要和tomcat 中 conf/server.xml 文件中每个engine 配置的jvmRoute一致。
 
Loadfactor 是负载因子,数字越大,表示请求的概率越大
 

页: [1]
查看完整版本: apache,tomcat ,loadbalance