由于需要,临时搭建了一个系统,因为使用的是云主机,带宽不够,于是相到将2台云主机,通过配置Apache2.4集群来减缓服务器压力,结果碰了一大堆坑。
具体讲一下我的实施过程:
2台服务器:2核4G,4M带宽,win2008r2
环境:Apache24+php7+mysql8
步骤:
1:httpd.conf启用模块
//以下3个模块为反向代理和集群模块,必须开启
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
//改模块启用Vhost,用来配置多个虚拟主机
LoadModule vhost_alias_module modules/mod_vhost_alias.so
//该模块用于流量负载均衡,必须开启,(用于负载均衡的模块共有4个,根据使用方式只能开启其中一个mod_lbmethod_bybusyness,mod_lbmethod_byrequests,mod_lbmethod_bytraffic,mod_lbmethod_heartbeat,我开启的是mod_lbmethod_bytraffic模块)
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
//重写url模块,根据个人需要
LoadModule rewrite_module modules/mod_rewrite.so
//监听端口
Listen 90
Listen 91
Listen 92
2:httpd-vhosts.conf配置vhost节点
//以下为配置代码,注意红色加粗部分,均为大坑,根据系统错误日志调试了很久才发现,害人不浅呐!
ProxyRequests off
proxyPass / balancer://myBlancer/ stickysession=sessionid nofailover=On //此处balancer://格式不能更改,否则出错
ProxyPassReverse / balancer://myBlancer/ //此处斜杠是个大坑,一定要加,否则Url重写会失败,只显示首页,不显示内页
<Proxy balancer://myBlancer/>
BalancerMember http://localhost:91/ loadfactor=3 //此处斜杠是个坑,一定要加,否则页面会出错
BalancerMember http://localhost:92/ loadfactor=6
ProxySet lbmethod=bytraffic
</Proxy>
//配完结果
<VirtualHost *:90>
ServerName localhost
ServerAlias localhost
ServerAdmin localhost
ProxyRequests off
proxyPass / balancer://myBlancer/ stickysession=sessionid nofailover=On
ProxyPassReverse / balancer://myBlancer/
<Proxy balancer://myBlancer/>
BalancerMember http://localhost:91/ loadfactor=3
BalancerMember http://localhost:92/ loadfactor=6
ProxySet lbmethod=bytraffic
</Proxy>
</VirtualHost>
<VirtualHost *:91>
ServerName localhost
ServerAlias localhost
ServerAdmin localhost
DocumentRoot "D:\www\web1"
<Directory "D:\www\web1">
Options FollowSymLinks
AllowOverride All
Require all granted //注意Apache2.4必须加,否则出现403错误
</Directory>
</VirtualHost>
<VirtualHost *:92>
ServerName localhost
ServerAlias localhost
ServerAdmin localhost
DocumentRoot "D:\www\web2"
<Directory "D:\www\web2">
Options FollowSymLinks
AllowOverride All
Require all granted //注意Apache2.4必须加,否则出现403错误
</Directory>
</VirtualHost>
3:以上配置步骤完成,重启httpd.exe
浏览器访问:http://localhost:90
可以发现已经实现负载均衡功能了。
在apache2.4+php7正常运行的情况下,按照以上配置不会出现失败。如果出现其他错误,应该是其它配置参数的问题,请自行百度解决。