2019独角兽企业重金招聘Python工程师标准>>>
个人心得,如果你有好的思路请给我留言,谢谢!
刚刚接触负载均衡,第一站实现Apache的负载均衡,当然这也是参考很多网上的资料,测试成功了,如果要用Apache做负载均衡,就必须提供一台服务器做负载服务器,地下两个服务器都不是本机服务器,实现了这种负载均衡就必须得要重写 session ,因为几台服务器无法获取通用SESSION,这种方法提供了一唯一的 session_id 可以根据这个ID来存储用户信息,如果并发量大的话,最好还是配置一个分布式的MEMCACHED,做一个一致哈希来储存 SESSION 种的用户数据,至于要怎么实现,那就根据自己的业务来,我只是提供一条思路
1、如何搭配Apache原生类的负载均衡配置
一,查看有没有安装过mod_proxy之类的东西
[zhangy@BlackGhost ~]$ /usr/local/apache2/bin/httpd -l
如果没有发现mod_proxy,我们就到apache安装目录下的modules里面看看有没有mod_proxy.so文件,如果都没有,则说明没有加载负载均衡的模块
二,安装mod_proxy,proxy_balancer_module等
进入apache的解压目录,就是你从网上下载下来的压缩文件,然后解压产生的目录。
cd apache的解压目录/modules/proxy
[root@BlackGhost proxy]# /usr/local/apache2/bin/apxs -c -i mod_proxy.c proxy_util.c
注意:上面如果不加proxy_util.c的话,LoadModule proxy_module modules/mod_proxy.so会报错的,提示你找不到mod_proxy.so文件
[root@BlackGhost proxy]# /usr/local/apache2/bin/apxs -c -i mod_proxy_balancer.c
[root@BlackGhost proxy]# /usr/local/apache2/bin/apxs -c -i mod_proxy_http.c
出现下面的东西说明装好了。
———————————————————————-
Libraries have been installed in:
/usr/local/apache2/modules
#要安装的模块装好了
[zhangy@BlackGhost apache2]$ ls ./modules/
httpd.exp mod_fastcgi.so mod_proxy.so mod_rewrite.so
libphp5.so mod_fcgid.so mod_proxy_balancer.so
mod_cache.so mod_mem_cache.so mod_proxy_http.so
三,配置httpd.conf,测试负载均衡
1,根据请求数(默认),平均分配
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 Off
BalancerMember http://192.168.18.2:10004
BalancerMember http://192.168.18.2:10000
ProxyPass /test2 balancer://clusterphpinfo stickysession=STICK_PORT_TOKEN nofailover=On
ProxyPassReverse /test2 balancer://clusterphpinfo
SetHandler balancer-manager
Order Deny,Allow
Allow from all
#Allow from 192.168.18.*
配置说明:在httpd.conf里面添加以上配置
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,
访问http://localhost/test2/balancer-manager看下图:
实战利用apache来做集群,实现负载均衡 - PHP程序员 - 李国华【PHP程序员C++】博客
apache负载均衡
图片说明:从上图我们可以看出,负载均衡算法是根据请求数(byrequests),平均分配到二个虚拟主机。
2,给节点加权重,根据挂起的请求数进行平衡
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 Off
BalancerMember http://192.168.2.130 loadfactor=5
BalancerMember http://192.168.2.99 loadfactor=1
ProxySet lbmethod=bytraffic
ProxyPass /test2 balancer://clusterphpinfo stickysession=STICK_PORT_TOKEN nofailover=On
ProxyPassReverse /test2 balancer://clusterphpinfo
SetHandler balancer-manager
Order Deny,Allow
Allow from all
#Allow from 192.168.18.*
配置说明:说一下不同的
1,平衡算法,由byrequests变成bytraffic
2,由平均分配变成非平均分配
3、loadfactor=5 这表示分配的概率