摘要:在性能方面nginx服务器确实比apache服务器好,所以很多项目做负载均衡首选nginx服务器,但这并不代表apache服务器就不能做负载均衡,apache同样可以做负载均衡,不过它的负载均衡配置比nginx服务器麻烦些。
提到负载均衡,很多人提第一反应是nginx服务器,确实,大部分的网站如果要做负载均衡,nginx服务器是首选,但也有部分人就想要用apache服务器来做负载均衡。下面就让我们来看看,apache的负载均衡是如何配置的。
1、模块加载
负载均衡需要使用代理,apache代理相关的模块是 _proxy_pass_,所以,我们得在apache的 httpd.conf 配置文件中将 _proxy_pass_ 相关的模块都加载进来 (去掉它们前面的 '#'):
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_express_module modules/mod_proxy_express.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_html_module modules/mod_proxy_html.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
另外还有几个模块需要加载,不然apache服务器启动不了:
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule xml2enc_module modules/mod_xml2enc.so
2、负载均衡配置
模块加载完毕后就可以配置负载均衡了
这里准备了1台负载服务器,4台均衡服务器(因为是本地测试环境,所以这里负载服务器和均衡服务器是通过不同的接口模拟来实现的)
负载服务器配置:(apache的负载均衡只需配置负载服务器,均衡服务器不用做配置)
<VirtualHost *:80> DocumentRoot "D:\PHP\WWW\apache.com" ServerName apache.com ServerAlias <Directory "D:\PHP\WWW\apache.com"> Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> ## 负载均衡配置 ProxyRequests Off <Proxy balancer://mycluster> ## 这里的 mycluster 与下面的 ProxyPass 中的 balancer 保存一致 BalancerMember http://127.0.0.1:82 ##这里对应的是均衡服务器的 域名/IP 和端口号 BalancerMember http://127.0.0.1:82 BalancerMember http://127.0.0.1:83 BalancerMember http://127.0.0.1:84 </Proxy> ProxyPass / balancer://mycluster </VirtualHost>
apache的负载均衡效果: