标签:haproxy
实际应用环境中,往往需要根据业务请求将相关不同请求跳转到指定的后端server,比如客户静态资源请求交给静态资源server处理,php请求交给php server处理,jsp请求交给tomcat处理,即业务上的应用请求分离,而haproxy完全可以利用acl匹配规则实现这一目的 。
一. haproxy实现应用动静分离
如图所示为整体的拓扑图:
一.部署前说明:
(1)系统版本: centos 6.6(64位)
(2)角色及ip相关信息:
角色名称 | ip信息 |
haproxy server | eth0:172.51.96.233/24 && eth1:192.168.0.233/24 |
static server | eth1:192.168.0.247/24 |
php server | eth1:192.168.0.235/24 |
tomcat server | eth1:192.168.0.238/24 |
二. 部署操作
haproxy server上操作
编译安装haproxy
1.1 到haproxy官网下载haproxy源码包如下
cd ~
wget http://www.haproxy.org/download/1.5/src/haproxy-1.5.15.tar.gz
1.2 创建haproxy运行用户
groupadd -r haproxy
useradd -g haproxy -M -s /sbin/nologin haproxy
1.3 编译安装haproxy:
cd ~
tar zxvf haproxy-1.5.15.tar.gz -C /usr/local/src
cd /usr/local/src/haproxy-1.5.15
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
注意:TARGET=Linux26 是通过uname -a 来查看Linux内核版本的
1.4 创建haproxy主配置文件:
mkdir /etc/haproxy/
touch /etc/haproxy/haproxy.cfg
后端web server上操作
分别在img server,php server,tomcat server安装相应的web环境并创建测试页,其中:
(1)static server的访问url为:http://192.168.0.247/img/haproxy.png,页面内容如下:
(2)php server的访问url为:http://192.168.0.235/info.php,页面内容如下:
(3)tomcat server的访问url为:http://192.168.238:8086/index.jsp,页面内容如下:
1.5 编辑haproxy主配置文件:
代码内容如下
global log 127.0.0.1 local3 maxconn 204800 chroot /usr/local/haproxy user haproxy group haproxy daemon nbproc 1 pidfile /var/run/haproxy.pid stats socket /usr/local/haproxy/stats description haproxy server defaults log global mode http maxconn 10000 option httplog option httpclose option dontlognull option forwardfor except 127.0.0.0/8 retries 3 option redispatch option abortonclose balance roundrobin timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s listen admin_status #设置haproxy监控状态 bind *:3030 mode http log 127.0.0.1 local3 err stats refresh 5s stats uri /status #监控状态页面访问url stats realm \itnihao\welcome stats auth admin:admin stats hide-version stats admin if TRUE frontend http bind *:88 maxconn 5000 mode http log global option httplog option httpclose option forwardfor log global default_backend default acl img path_beg -i /image use_backend jdhw if img backend jdhw option httpchk GET /index.html server jdhw 192.168.0.246:80 cookie id01 check inter 2000 rise 2 fall 3 maxconn 5000 listen www bind *:80 maxconn 5000 mode http log global option httplog option httpclose option forwardfor log global default_backend default #设置默认访问页面 #设置当访问的是静态资源的时候,将请求转交给static server上去 acl static path_end -i .jpg .gif .png .css .js .html #设置当访问的是php页面的时候,将请求转交给php server上去 acl php path_end -i .php$ #设置当访问的是jsp页面的时候,将请求转交给tomcat server上去 #引用acl匹配规则 use_backend static if static use_backend php if php use_backend tomcat if tomcat #定义后端backend server backend static option httpchk GET /index.html server static1 192.168.0.247:80 cookie id1 check inter 2000 rise 2 fall 3 backend php option httpchk GET /info.php server php1 192.168.0.235:80 cookie id1 check inter 2000 rise 2 fall 3 backend tomcat option httpchk GET /index.jsp s erver tomcat1 192.168.0.238:8086 cookie id2 check inter 2000 rise 2 fall 3 #<----------------------default site for listen and frontend------------------------------------> backend default mode http option httpchk GET /index.html server default 192.168.0.127:80 cookie id1 check inter 2000 rise 2 fall 3 maxconn 5000
重启haproxy服务:
server haproxy restart
关于haproxy服务脚本代码请访问:http://blief.blog.51cto.com/6170059/1750573
本文出自 “菜鸟的成长记” 博客,请务必保留此出处http://blief.blog.51cto.com/6170059/1751806
HAproxy指南之haproxy实现应用动静分离(案例篇)
标签:haproxy
原文地址:http://blief.blog.51cto.com/6170059/1751806