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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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=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指南之haproxy重定向配置(案例篇)

HAproxy动静分离

高可用haproxy调度后端服务器实现动静分离集群架构

HAProxy实现动静分离

HAProxy基于KeepAlived实现Web高可用及动静分离

keepalive高可用haproxy实现URL资源的动静分离