Haproxy: 是一款基于 TCP (第四层)和 HTTP (第七层)的代理软件,支持双机热备和支持虚拟主机,具有良好的负载均衡能力,并且它的配置也是十分简单,拥有非常好的后端服务健康检查功能,当其代理的后端服务器出现故障时, HAproxy 会自动将该服务器摘除,故障恢复后再自动匹配,其中的 frontend 、 backend. 非常灵活好用, fronten 会根据 HTTP 请求头内容做规则匹配,然后再把请求定向到 backend.
提供服务的真机:
Real-server1 、 2 :
#yum install -y httpd
#echo realserver1 、 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.cfg
60 stats uri /status : 添加监控页面
61 stats auth admin:westos :监控页面添加认证
方式一:采用 listen 组件方式,相当于 frontend 与 backend 的组合体
89listen liumin *:80 # 采用监听的方式,监听 80 端口的 Apache 服务, ip 为任意。
90 balance roundrobin # 负载均衡采用的算法
91 server web1 172.25.45.55:80 check # 添加提供 Apache 服务的真机 real-server1/2 check 提供健康检查
92 server web2 172.25.45.56:80 check
#### 将产生的日志额外放在一个 haproxy.log 文件里,进行日志服务设置:
#vim /etc/rsyslog.conf
13 $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 frontend westos *:80
89 acl bad src 172.25.10.250 #acl: 访问控制权限列表
Bad 只是一个名字, src 表示访问本服务器的 client 端地址。又称源地址 acl denyfile path /admin/ # 目的就是不想让用户访问我的 172.25.45.20/admin 这个路径的页面。
90 block if bad : 锁住页面,不让访问哈
91 errorloc 403 http://172.25.10.20:8080 满足进行页面重定向。
92 http-request deny if bad denyfile 如果满足 bad 和 denyfile 则拒绝访问 172.25.45.250/admin 这个路径。
93 default_backend web 默认使用后端 web 服务。
94 backend web
95 balance roundrobin # 调度算法 source 共 8 种,回去一定要看好这些材料
96 server web1 172.25.45.15:80 check weight 1 #weight 加权值, web1 是起的名字。 Ip 就是提供服务的真机 ip 地址 + 端口号 80 ,也就是 httpd 服务。 Check 进行后端健康检查
97 server web2 172.25.45.16:80 check weight 3
项目一:
Haproxy 之动静分离:
frontend westos *:80
acl 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 static if url_static
# 如果是静态网页,则访问后端 static 的服务器
default_backend dynamic # 默认情况下访问动态的 dynic 服务器。
backend static
balance roundrobin
server web1 172.25.45.15:80 check weight 1
server backup 127.0.0.1:8080 backup
backend dynamic
server web2 172.25.45.16:80 check weight 1
#/etc/init.t/haproxy reload
前提要在 ip 为 172.25.10.15 这台主机上的 /var/www/html 里 mkdirstatic 然后在里面放几张照片,然后通过 FIREFOX 输入网址: 172.25.45.20/images 进行测试,如果是 realserver 的网页出来,就说明对着呢。
Haproxy 之读写分离:
# vim /etc/haproxy/haproxy.cfg
acl read method GET 读的方法有: GET ,HEAD
acl read method HEAD
acl write method PUT 写的方法: PUT, POST
acl write method POST
use_backend static if read
use_backend upload if write
default_backend static
backend static
balance roundrobin
server web1 172.25.45.15:80 check weight 1
server backup 127.0.0.1:8080 backup
backend upload
server web2 172.25.45.16:80 check weight 1
在两台真机进行如下操作: realserver1 realserver2
# lftp --> upload 获得测试上传 php 页面到 /var/www/html
# yum install -y php
#/etc/init.d/htpd restaart
在 ip 为 172.25.45.16 的 realserver 上:
#mkdir /var/www/html/upload/upload
#chmod 777 /var/www/html/upload/ -R : 是用户有上传权限。
#mkdir /var/www/html/upload/upload 在提供上传的真机 ip 为 172.25.10.16 里面一定要新建一个 upload 目录,不然,上传的图片不知道传到哪里去了。此处需要 down 一个上传的 php 测试页面
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com