企业之haproxy
haproxy是一款功能强大、灵活好用反向代理软件,提供了高可用、负载均衡、后端服务器代理的功能,它在7层负载均衡方面的功能很强大(支持
cookie track, header
rewrite等等),支持双机热备,支持虚拟主机,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障,
HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入;同时还提供直观的监控页面,可以清晰实时的监控服务集群的运行状况。
在四层(tcp)实现负载均衡的软件:
lvs------>重量级
nginx------>轻量级,带缓存功能,正则表达式较灵活
haproxy------>模拟四层转发,较灵活
在七层(http)实现反向代理的软件:
haproxy------>天生技能,全面支持七层代理,会话保持,标记,路径转移;
nginx------>只在http协议和mail协议上功能比较好,性能与haproxy差不多;
apache------>功能较差
haproxy的配置文件分为四个部分:
全局配置:
global:全局配置段
代理配置:
default: 默认配置----->所有在backend、frontend、linsten中相同内容可以在此定义;
frontend:前段配置----->定义前端套接字,接受客户端请求;
backend: 后端配置----->定义后端分配规则,与后端服务器交互;
listen:绑定配置----->直接将指定的客户端与后端特定服务器绑定到一起;
实验环境:rhel6.5 selinux and iptables disabled
172.25.85.2 server2.example.com
172.25.85.3 server3.example.com
172.25.85.7 server7.example.com
172.25.85.8 server8.example.com
1.haproxy的安装和配置:
在server3和server2上安装:
yum install haproxy -y
/etc/init.d/haproxy start
在server2上:
vim /etc/haproxy/haproxy.cfg
需要注释掉一部分:
http://s2.运维网.com/wyfs02/M00/85/72/wKioL1ejggPwslsAAACoSph3R6g356.png-wh_500x0-wm_3-wmp_4-s_3049710918.png
stats uri /status
statsauth admin:westosfrontendwestos *:80
default_backend web
backendweb
balance roundrobin
serverweb1 172.25.31.10:80 checkweight 1
serverweb2 172.25.31.11:80 checkweight1
server backup 127.0.0.1:8080backup
server backup 127.0.0.1:8080 backup /etc/init.d/haproxyreload
检测:
打开server7和server8上的httpd:
在浏览器中打开172.25.85.2
交替出现 server7.linux.orgserver8.westos.org
在浏览器中打开172.25.85.2/status
http://s2.运维网.com/wyfs02/M01/85/72/wKioL1ejgROibMoKAAEgZL7vdto317.png-wh_500x0-wm_3-wmp_4-s_87271197.png
检测2:
关闭server7和server8上的httpd
在server2上:
echo server2.zhangweijing> index.html
vim /etc/httpd/conf/httpd.conf
listen 8080 /etc/init.d/httpd start
在浏览器中打开172.25.85.2:
http://s2.运维网.com/wyfs02/M02/85/72/wKiom1ejgULj8eYFAAAy-jSZChI619.png-wh_500x0-wm_3-wmp_4-s_3025021287.png
2. server2:
tail -f /var/log/messages
vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514local2.* /var/log/haproxy.log
/etc/init.d/rsyslog reload
tail -f /var/log/messages
tail -f /var/log/haproxy.log
3. server2:
vim /etc/haproxy/haproxy.cfg
增加 statsauth admin:westos
/etc/init.d/haproxyreload 在浏览器中打开172.25.85.2/status
http://s5.运维网.com/wyfs02/M01/85/72/wKiom1ejgargHx8UAAEwGJ0D1mQ994.png-wh_500x0-wm_3-wmp_4-s_3209665480.png
4.1server2:
vim /etc/haproxy/haproxy.cfg
http://s1.运维网.com/wyfs02/M02/85/72/wKioL1ejgdKzhG9nAABKK89NzhY928.png-wh_500x0-wm_3-wmp_4-s_2387512264.png
增加
frontend westos *:80
acl bad src 172.25.85.250
block if bad
errorloc403 http://172.25.85.2:8080
default_backend web
backend web
balance roundrobin
serverweb1 172.25.85.7:80 check
serverweb2 172.25.85.8:80 check
server backup 127.0.0.1:8080 backup /etc/init.d/haproxy reload
在浏览器中打开http://172.25.85.2:8080/
http://s4.运维网.com/wyfs02/M02/85/72/wKioL1ejgj_Cah0YAAAspxMlgdU566.png-wh_500x0-wm_3-wmp_4-s_4274652625.png
4.2server2:
vim /etc/haproxy/haproxy.cfg
frontend westos *:80
acl bad src 172.25.85.250
#block if bad
#errorloc403 http://172.25.85.2:8080
redirect location http://172.25.85.3:80 if bad
default_backend web
backend web
balance roundrobin
serverweb1 172.25.85.7:80 check
serverweb2 172.25.85.8:80 check
server backup 127.0.0.1:8080 backup /etc/init.d/haproxy reload
在浏览器中打开http://172.25.85.3
http://s2.运维网.com/wyfs02/M01/85/72/wKioL1ejgn3DQ3Y4AAAl8YWMG98127.png-wh_500x0-wm_3-wmp_4-s_1870748113.png
4.3server2:
vim /etc/haproxy/haproxy.cfg
http://s3.运维网.com/wyfs02/M00/85/72/wKioL1ejgrWRNZx8AABuyKC16zQ104.png-wh_500x0-wm_3-wmp_4-s_2359023227.png
frontend westos *:80
acl bad src 172.25.85.250
#block if bad
#errorloc403 http://172.25.85.2:8080
#redirect location http://172.25.85.3:80 if bad
# http-request deny if denyfile bad
default_backend web
backend web
balance roundrobin
serverweb1 172.25.85.7:80 check
serverweb2 172.25.85.8:80 check
server backup 127.0.0.1:8080 backup /etc/init.d/haproxy reload
在server7:
cd /var/www/html/
mkdir admin
cd admin/
echo server7.server7 > index.html
在server8:
cd /var/www/html/
mkdir admin
cd admin/
echo server8.server8 > index.html
在浏览器中打开http://172.25.85.2/admin/
交替出现 server7.server7 server8.server8
4.4 server2:
vim /etc/haproxy/haproxy.cfg
frontend westos *:80
acl bad src 172.25.85.250
acl denyfile path /admin/
#block if bad
#errorloc403 http://172.25.85.2:8080
#redirect location http://172.25.85.3:80 if bad
http-request deny if denyfile bad
default_backend web
backend web
balance roundrobin
serverweb1 172.25.85.7:80 check
serverweb2 172.25.85.8:80 check
server backup 127.0.0.1:8080 backup
/etc/init.d/haproxy reload
在浏览器中打开http://172.25.85.2/admin/
http://s3.运维网.com/wyfs02/M01/85/72/wKiom1ejgvLyFt-yAABJFkyKZRA787.png-wh_500x0-wm_3-wmp_4-s_4041346949.png
5.server2:
vim /etc/haproxy/haproxy.cfg
frontend westos *:80
acl bad src 172.25.85.250
acl denyfile path /admin/
#block if bad
#errorloc403 http://172.25.85.2:8080
#redirect location http://172.25.85.3:80 if bad
#http-request deny if denyfile bad
acl url_static path_beg -i /static/images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend images if url_static
default_backenduploadbackendimages
balance roundrobin
serverweb1 172.25.85.7:80 check
server backup 127.0.0.1:8080 backupbackend upload
serverweb2 172.25.85.8:80 check /etc/init.d/haproxy reload
server7:
cd /var/www/html/
mkdir images ##给这个目录下方一个小图片redhat.jpg
在浏览器中打开:http://172.25.85.2/images/redhat.jpg
http://s4.运维网.com/wyfs02/M01/85/72/wKioL1ejg0DiQd6FAAI-xk6ZlCc073.png-wh_500x0-wm_3-wmp_4-s_3036942092.png
6.server2:
vim /etc/haproxy/haproxy.cfg
frontend westos *:80
acl bad src 172.25.85.250
acl denyfile path /admin/
#block if bad
#errorloc403 http://172.25.85.2:8080
#redirect location http://172.25.85.3:80 if bad
#http-request deny if denyfile bad
acl url_static path_beg -i /static/images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
acl read method GET
acl read methodHEAD
acl write method PUT
acl write methodPOST
# use_backend images if url_static
# use_backend images if read
use_backenduploadif write
default_backendimagesbackendimages
balance roundrobin
serverweb1 172.25.85.8:80 checkbackendupload
serverweb1 172.25.85.7:80 check
/etc/init.d/haproxy reload
在server8:
cd /var/www/html ##将upload文件放在这个目录下
chown 777upload
cd/var/www/html /upload
mkdir upload
在浏览器中打开172.25.85.2/upload就可以上传文件了。
页:
[1]