以前用ha,lvs做过负载均衡,我知道apache可以做负载均衡,一直没有做。所以今天我尝试用apache做了一次负载均衡。感觉还可以,以后如果有公司非要让我用apache来做负载均衡,也不要花很多时间去研究了。

一,查看有没有安装过mod_proxy之类的东西:

/usr/local/apache/bin/httpd -l

如果没有发现mod_proxy,我们就到apache安装目录下的modules里面看看有没有mod_proxy.so文件,如果都没有,则说明没有加载负载均衡的模块


二,安装mod_proxy,proxy_balancer_module等

进入apache的解压目录,就是你从网上下载下来的压缩文件,然后解压产生的目录。

cd  /home/soft/lnmp1.2-full/src/httpd-2.2.29/modules/proxy/

 /usr/local/apache/bin/apxs -c -i mod_proxy.c proxy_util.c

然后进入:
/usr/local/apache/modules查看即可

三、修改apache的配置文件

    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  
      
    ProxyRequests On  
    <Proxy balancer://clusterphpinfo>  
    BalancerMember http://192.168.1.176:8888  
    BalancerMember http://192.168.1.176:8889
    </Proxy>  
    ProxyPass /test2 balancer://clusterphpinfo stickysession=STICK_PORT_TOKEN nofailover=On  
    ProxyPassReverse /test2 balancer://clusterphpinfo  
      
    <Location /balancer-manager>  
    SetHandler balancer-manager  
    Order Deny,Allow  
    Allow from all  
    </Location>  
Listen 8888
<VirtualHost *:8888>
    DocumentRoot "/home/wwwroot/default/demo1"
    ServerName  localhost
    <Directory "/home/wwwroot/default/demo1">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>
Listen 8889
<VirtualHost *:8889>
    DocumentRoot "/home/wwwroot/default/demo2"
    ServerName  localhost
    <Directory "/home/wwwroot/default/demo2">
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>



测试:
http://192.168.1.176:8889/
http://192.168.1.176:8888/
http://192.168.1.176/test2
测试成功

1,为什么我这里要用/test2而不是/,因为在这里用/会和documentroot冲突,因为监听的都是80端口。
2,stickysession 从字面上看,严格的session,加上他说明实现严格的session的负载均衡,根据个人需要吧。
3,其实像这样的负载均衡,其实就是反向代理,http://localhost/test2起到了连接池的作用,如果你访问http://localhost/test2/index.php,他其实访问的http://192.168.18.2:10004/index.php或者是http://192.168.18.2:10000/index.php
4,<Location /balancer-manager></Location>中间的内容是用监测负载均衡的情况的,可 以放到正式服务器,也可以不放。