23ewrw 发表于 2016-3-17 08:46:23

HAproxy指南之haproxy实现应用动静分离(案例篇)

实际应用环境中,往往需要根据业务请求将相关不同请求跳转到指定的后端server,比如客户静态资源请求交给静态资源server处理,php请求交给php server处理,jsp请求交给tomcat处理,即业务上的应用请求分离,而haproxy完全可以利用acl匹配规则实现这一目的 。
一. haproxy实现应用动静分离
如图所示为整体的拓扑图:
一.部署前说明:(1)系统版本: centos 6.6(64位)(2)角色及ip相关信息:
角色名称ip信息
haproxy servereth0:172.51.96.233/24&&eth1:192.168.0.233/24
static servereth1:192.168.0.247/24
php servereth1:192.168.0.235/24
tomcat servereth1: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=linux26PREFIX=/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为:,页面内容如下:
(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
      userhaproxy
      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
      optionhttplog
      optionhttpclose
      optiondontlognull
      optionforwardfor      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 itnihaowelcome
      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
      optionhttpchk GET /index.html
      server jdhw 192.168.0.246:80 cookie id01 check inter 2000 rise 2 fall 3 maxconn5000
      
listenwww
      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 ifstatic
      use_backend php    ifphp
      use_backend tomcat iftomcat
      #定义后端backend server
backend static
      optionhttpchk GET /index.html
      server static1 192.168.0.247:80 cookie id1check inter 2000 rise 2 fall 3
backend php
      optionhttpchk GET /info.php
      server php1 192.168.0.235:80 cookie id1 check inter 2000 rise 2 fall 3
backend tomcat
      optionhttpchk 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
      optionhttpchk 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








页: [1]
查看完整版本: HAproxy指南之haproxy实现应用动静分离(案例篇)