apache 实现负载均衡

使用Apache作为Web代理

Apusic应用服务器能够通过下面的两种方式完成与Apache的集成:

4.9.1. HTTP Proxy

利用Apache自身提供的mod_proxy_http模块就可以完成与Apusic应用服务器的集成,而且Apusic应用服务器端不需要做任何设置。mod_proxy_http提供代理HTTP请求的功能。支持HTTP/0.9,HTTP/1.0,HTTP/1.1标准。

  • 单机环境下的配置

    需要在%APACHE_HOME%/conf/httpd.conf做如下配置:

    ...
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    ...
    ProxyPass /${request_uri} http://192.168.6.119:6888/${request_uri}
    ...
    
  • 多机环境下的负载均衡配置

    将Apache作为LoadBalance前置机有三种不同的部署方式,分别是:

    • 轮询均衡策略的配置

    进入%APACHE_HOME%/conf目录,看看httpd.conf中以下设置是否正确:

    ...
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    ...

    上面的配置检查无误后,在httpd.conf文件末尾加入:

    ...
    ProxyPass / balancer://proxy/     #注意这里以"/"结尾
    <Proxy balancer://proxy>
    BalancerMember http://192.168.6.119:6888/
    BalancerMember http://192.168.6.120:6888/
    </Proxy>
    ...
    

    我们来观察上述的参数,我们这里假设为“ProxyPass / balancer://proxy/”,其中,“ProxyPass”是配置虚拟服务器的命令,“/”代表发送Web请求的URL前缀,如:http: //myserver/或者http://myserver/aaa,这些URL都将符合上述过滤条件;“balancer://proxy/”表示要配置负载均衡,proxy代表负载均衡名;BalancerMember 及其后面的URL表示要配置的后台服务器,其中URL为后台服务器请求时的URL。以上面的配置为例,实现负载均衡的原理如下:

    假设Apache接收到http://localhost/aaa请求,由于该请求满足ProxyPass条件(其URL前缀为“/”),该请求会被分发到后台某一个BalancerMember,譬如,该请求可能会转发到 http://192.168.6.37:6888/aaa进行处理。当第二个满足条件的URL请求过来时,该请求可能会被分发到另外一台 BalancerMember,譬如,可能会转发到http://192.168.6.38:6888/。如此循环反复,便实现了负载均衡的机制。

    • 按权重分配均衡策略的配置

    ...
    ProxyPass / balancer://proxy/         #注意这里以"/"结尾
    <Proxy balancer://proxy>
            BalancerMember http://192.168.6.119:6888/  loadfactor=3
            BalancerMember http://192.168.6.120:6888/  loadfactor=1
    </Proxy>
    ...

    参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为http: //192.168.6.119:6888的服务器,有1次这样的请求被负载BalancerMember为http://192.168.6.120: 6888后台服务器。实现了按照权重连续分配的均衡策略。

    • 权重请求响应负载均衡策略的配置

    ...
    ProxyPass / balancer://proxy/ lbmethod=bytraffic  #注意这里以"/"结尾
    <Proxy balancer://proxy>
             BalancerMember http://192.168.6.119:6888/  loadfactor=3
             BalancerMember http://192.168.6.120:6888/  loadfactor=1
    </Proxy>
    ...

    参数“lbmethod=bytraffic”表示后台服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的。 “loadfactor”表示后台服务器处理负载请求和响应字节数的权值,该值默认为1,可以将该值设置在1到100的任何值。根据以上配置是这么进行均衡负载的,假设Apache接收到http://myserver/aaa请求,将请求转发给后台服务器,如果BalancerMember为http: //192.168.6.119:6888后台服务器负载到这个请求,那么它处理请求和响应的字节数是BalancerMember为http: //192.168.6.120:6888 服务器的3倍(回想第二项均衡配置,是以请求数作为权重负载均衡的,第三项是以流量为权重负载均衡的,这是最大的区别)。

    [注意]注意

    每次修改httpd.conf,用apachectl –k restart重新启动Apache。

    当多机环境下的负载均衡时,用户需要使用STICKY SESSION特性时,除了在Apusic中配置启用STICKY SESSION外,我们还需要在Apusic服务器的vm.options(%DOMAIN_HOME%/config目录下)文件中设置:

    #
    # This is the default sytem configurations . You can modify any server side
    # configurations in this file.
    #
    ...
    com.apusic.jvm.route=proxyserver1
    ...
    
    [注意]注意

    上面的配置是基于Windows XP SP2 + Apache 2.2,Linux/Unix上的配置基本一致。配置完成后需要重新启动Apusic和Apache服务器。

4.9.2. AJP Proxy

AJP是Apache提供的完成与其它服务器通讯的一种协议。在Apache中通过mod_proxy_ajp模块发送AJP数据,另外一端的服务器需要实现AJP协议,能够接受mod_proxy_ajp模块发送的AJP协议数据,在接受到AJP协议数据后做适当处理,并能够将处理结果以AJP协议方式发送回给mod_proxy_ajp模块 。

Apusic服务器能够完全支持AJP协议,当前实现的AJP协议版本为AJP/1.2,AJP/1.3。当前Apusic服务器缺省使用的是AJP/1.3协议

  • 单机环境下的配置

    需要在%APACHE_HOME%/conf/httpd.conf做如下配置:

    ...
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_ajp.so
    ...
    ProxyPass /${request_uri} ajp://192.168.6.119:8007/${request_uri}
    ...
    

    在Apusic应用服务器域安装目录中的config目录下,在配置文件apusic.conf配置文件中加入如下内容:

    ...
    <SERVICE
        CLASS="com.apusic.servlet.http.ajp.AJPEndpoint"
        NAME="Endpoint:type=ajp,service=httpd" >
        <ATTRIBUTE NAME="Port" VALUE="8007"/>
    </SERVICE>
    ...
    
  • 多机环境下的负载均衡配置

    需要在%APACHE_HOME%/conf/httpd.conf做如下配置:

    ...
    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
    LoadModule proxy_http_module modules/mod_proxy_ajp.so
    ...
    ProxyPass /${request_uri} balancer://proxy/
    <Proxy balancer://proxy>
    BalancerMember ajp://192.168.6.119:8007/${request_uri}
    BalancerMember ajp://192.168.6.120:8007/${request_uri}
    </Proxy>
    ...
    

    在Apusic应用服务器域安装目录中的config目录下,在配置文件apusic.conf配置文件中加入如下内容:

    ...
    <SERVICE
        CLASS="com.apusic.servlet.http.ajp.AJPEndpoint"
        NAME="Endpoint:type=ajp,service=httpd" >
        <ATTRIBUTE NAME="Port" VALUE="8007"/>
    </SERVICE>
    ...
    

    当多机环境下的负载均衡时,用户需要使用STICKY SESSION特性时,除了在Apusic中配置启用STICKY SESSION外,我们还需要在Apusic服务器的vm.options(%DOMAIN_HOME%/config目录下)文件中设置:

    #
    # This is the default sytem configurations . You can modify any server side
    # configurations in this file.
    #
    ...
    com.apusic.jvm.route=proxyserver1
    ...
    
    [注意]注意

    上面的配置是基于Windows XP SP2 + Apache 2.2,Linux/Unix上的配置基本一致。配置完成后需要重新启动Apusic和Apache服务器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值