HAproxy的简单安装配置介绍
Haproxy:是一款基于TCP(第四层)和HTTP(第七层)的代理软件,支持双机热备和支持虚拟主机,具有良好的负载均衡能力,并且它的配置也是十分简单,拥有非常好的后端服务健康检查功能,当其代理的后端服务器出现故障时,HAproxy会自动将该服务器摘除,故障恢复后再自动匹配,其中的frontend、backend.非常灵活好用,fronten会根据HTTP请求头内容做规则匹配,然后再把请求定向到backend. 提供服务的真机:Real-server1、2:#yuminstall-yhttpd#echorealserver1、2.example.com>/var/www/html/iondex.html#/etc/init.d/httpd start 做负载均衡的服务器:Haproxy1/2:#yum install -y haproxy.x86_64 直接安装haproxy红帽源里有#vim/etc/haproxy/haproxy.cfg60 stats uri /status :添加监控页面61 stats auth admin:westos :监控页面添加认证方式一:采用listen组件方式,相当于frontend 与backend的组合体89listenliumin*:80 #采用监听的方式,监听80端口的Apache服务,ip为任意。90balance roundrobin #负载均衡采用的算法91server web1172.25.45.55:80check#添加提供Apache服务的真机real-server1/2 check提供健康检查92server web2172.25.45.56:80 check ####将产生的日志额外放在一个haproxy.log文件里,进行日志服务设置:#vim /etc/rsyslog.conf13 $ModLoad imudp #打开udp模块14 $UDPServerRun 514 #打开udp的514端口62local2.* /var/log/haproxy.log注意:haproxy生成的日志是通过udo协议进行传输的,所以一定要将udp模块和端口打开,切记。 进行测试:在FIREFOX上输入haproxy服务的ip:172.25.10.20,刷新网页,可以看到realserver提供的apache不同的页面,再验证监控页面及其认证,同样输入Ip:172.25.10.20/status ,最后验证产生的日志,使用命令:tail -f/var/log/haproxy.log,不断刷新网页,就会产生很多日志内容。 方式二:使用frontend ,backend组件方式:Frontend:接收请求的前端虚拟节点,frontend可以根据规则直接指定具体使用后端的backend(可动态选择);Backend:后端服务集群的配置,是真实的服务器,一个backend对应一个或者多个实体服务器。此试验需将前面的listen组件方式注销掉。 88 frontendwestos*:80 89aclbadsrc 172.25.10.250 #acl:访问控制权限列表Bad 只是一个名字,src表示访问本服务器的client端地址。又称源地址 acldenyfile path/admin/ #目的就是不想让用户访问我的172.25.45.20/admin这个路径的页面。 90blockifbad :锁住页面,不让访问哈 91 errorloc403http://172.25.10.20:8080满足进行页面重定向。 92 http-request denyifbad denyfile 如果满足bad 和denyfile 则拒绝访问172.25.45.250/admin这个路径。 93default_backendweb默认使用后端web服务。 94 backend web 95 balanceroundrobin #调度算法 source共8种,回去一定要看好这些材料 96 serverweb1172.25.45.15:80 checkweight 1 #weight加权值,web1是起的名字。Ip就是提供服务的真机ip地址+端口号80,也就是httpd服务。Check进行后端健康检查 97 serverweb2172.25.45.16:80 checkweight 3项目一:Haproxy之动静分离:frontend westos*:80acl url_static path_beg -i /static /images /javascript /stylesheets#凡是以/static/image /javascript/stylesheets 开头的静态网页 acl url_static path_end-i .jpg .gif .png .css .js#凡是以.jpg.gif.css .js 结尾的静态网页
use_backend staticif url_static
#如果是静态网页,则访问后端static的服务器
default_backenddynamic #默认情况下访问动态的dynic服务器。
backendstatic
balance roundrobin
serverweb1 172.25.45.15:80 checkweight 1
server backup 127.0.0.1:8080 backup
backenddynamic
server web2172.25.45.16:80 checkweight 1
#/etc/init.t/haproxyreload
前提要在ip为172.25.10.15这台主机上的/var/www/html里mkdirstatic然后在里面放几张照片,然后通过FIREFOX输入网址:172.25.45.20/images进行测试,如果是realserver的网页出来,就说明对着呢。
Haproxy之读写分离:
# vim/etc/haproxy/haproxy.cfg
acl readmethodGET 读的方法有:GET ,HEAD
acl readmethodHEAD
acl writemethodPUT 写的方法:PUT, POST
acl writemethodPOST
use_backendstatic if read
use_backenduploadifwrite
default_backendstatic
backend static
balance roundrobin
server web1172.25.45.15:80check weight 1
server backup 127.0.0.1:8080backup
backend upload
server web2172.25.45.16:80check weight 1
在两台真机进行如下操作:realserver1 realserver2
#lftp -->upload获得测试上传php页面到/var/www/html
# yuminstall -yphp
#/etc/init.d/htpdrestaart
在ip为172.25.45.16的realserver上:
#mkdir /var/www/html/upload/upload
#chmod777 /var/www/html/upload/ -R :是用户有上传权限。
#mkdir /var/www/html/upload/upload在提供上传的真机ip为172.25.10.16里面一定要新建一个upload目录,不然,上传的图片不知道传到哪里去了。此处需要down 一个上传的php测试页面
页:
[1]