您的位置:首页 > 其它

HAproxy的重定向及读写分离

2017-03-24 22:48 204 查看
HAproxy安装配置重定向及读写分离

server1:172.25.88.1

server3:172.25.88.3
server4:172.25.88.4

简单配置

server1:

yum install haproxy -y
vim /etc/haproxy/haproxy.cfg
60 #---------------------------------------------------------------------
61 # main frontend which proxys to the backends
62 #---------------------------------------------------------------------
63 #frontend  main *:5000
64 #    acl url_static       path_beg       -i /static /images /javascript /stylesheets
65 #    acl url_static       path_end       -i .jpg .gif .png .css .js
66 #
67 #    use_backend static          if url_static
68 #    default_backend             app
69 #
70 #---------------------------------------------------------------------
71 # static backend for serving up images, stylesheets and such
72 #---------------------------------------------------------------------
73 #backend static
74 #    balance     roundrobin
75 #    server      static 127.0.0.1:4331 check
76 #
77 #---------------------------------------------------------------------
78 # round robin balancing between the various backends
79 #---------------------------------------------------------------------

listen westos *:80
balance     roundrobin
server      web1 172.25.88.3:80 check
server      web2 172.25.88.4:80 check

89 listen admin *:8080         haproxy 监控页面:用浏览器访问172.25.88.1:8080/status
90         stats   enable
91         stats uri /status   监控页面地址
92         stats auth admin:westos     用户名:密码
93         stats refresh 5s

server3:

yum install httpd -y

server4:

yum install httpd -y

检验:

浏览器访问172.25.88.1 rr:3/4

浏览器访问172.25.88.1:8080/status



HAproxy日志

日志默认存入rsyslog,要查看的话,需要打开rsyslog

server1:

vim /etc/rsyslog.conf
13 $ModLoad imudp          接受 haproxy 日志
14 $UDPServerRun 514
42 *.info;mail.none;authpriv.none;cron.none;local2.none         /var/log/messages
62 local2.*    /var/log/haproxy.log    单独存一份


/etc/init.d/rsyslog start
tail -f /var/log/haproxy.log



server1:

vim /etc/haproxy
86 frontend westos *:80
87         acl url_static       path_beg       -i  /images
88         acl url_static       path_end       -i .jpg .gif .png
89         use_backend static          if url_static
90         default_backend app
91
92 backend static  后端静态
93     balance     roundrobin
94     server  web1 172.25.88.3:80 check
95
96 backend app
97     balance     roundrobin
98     server  web2 172.25.88.4:80 check
server3:

/etc/init.d/httpd start
ll /var/www/html/images/
OSI.gif redhat.jpg




访问的是server3,因为只有server3才有images目录
server4:
/etc/init.d/httpd start



重定向

server1:
先设置黑名单
vim /etc/haproxy
90         acl badhost src 172.25.88.250
91         block if badhost
直接给用户返回403,不太友好,所以重定向应运而生



错误重定向(403)

vim /etc/httpd/conf/httpd.conf
Listen 8000
vim /var/www/html/index.html
攻城师正在修复ING...
其实我就是不想让你访问!!!啦啦啦!

server1:

vim /etc/haproxy
90         acl badhost src 172.25.88.250
91         block if badhost
92 errorloc 403 http://172.25.88.1:8000[/code]badhost(172.25.88.250)在浏览器中访问172.25.88.1 自动跳转到http://172.25.88.1:8000





黑名单重定向

server1:

acl  badhost src 172.25.88.250
redirect location http://172.25.88.1:8000 if  badhost
badhost(172.25.88.250)在浏览器中访问172.25.88.1 自动跳转到http://172.25.4.11:8000

RS全挂了以后(302临时重定向)

server4:

/etc/init.d/httpd stop

server1:

vim /etc/haproxy
103 backend app
104     balance     roundrobin
105     server  web2 172.25.88.4:80 check
106     server  local 172.25.88.1:8000 backup
访问172.25.88.1,跳转到8000 显示工程师正在修复ING(页面需要自己写)
网易:301 永久重定向
cdn
302 临时重定向,不推荐





server1:

vim /etc/haproxy
94         redirect code 301 location http://172.25.88.1:8000 if badhost
如果不写301,只写code默认是302,临时重定向


网页重定向

1.访问westos.org自动跳转到www.westos.org

真机:

vim /etc/hosts
172.25.88.1     server1.lalala.com www.westos.org westos.org

server1:

vim /etc/haproxy
acl westos.org hdr_beg(host) -i westos.org
redirect code 301 location http://www.westos.org if westos.org








2.访问IP自动跳转到域名

server1:

vim /etc/haproxy

acl 172.25.88.1 hdr(host) -i 172.25.88.1
redirect code 301 location http://www.westos.org if 172.25.88.1





读写分离

server11:

vim /etc/haproxy
106         acl read method GET
107         acl read method HEAD
108         acl write method PUT
109         acl write method POST
119     use_backend app          if write
120     default_backend static

123 backend static
124         balance     roundrobin
125         server      web1 172.25.88.3:80 check    读
126
127 backend  app
128         balance     roundrobin
129         server      web2 172.25.88.4:80 check    写

server3,server4:

yum install php -y
cd /var/www/html/upload/
mv * ..
chmod 777 upload
server3和server4的upload都有读写权限哦~









记得将upload中的size改大一点.
&& ($_FILES["file"]["size"] < 20000000))
/etc/init.d/httpd restart 因为装了php模块,还是重启一下吧~

检测

在浏览器中访问www.westos.org/images

因为只有server3中有images ,server4中没有,所以读端在server3





上传图片(写)在server4的upload中

尽管server3,server4的upload都是777



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息