HAproxy指南之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/srccd /usr/local/src/haproxy-1.5.15make TARGET=linux26  PREFIX=/usr/local/haproxymake 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

时间: 2024-08-23 12:02:54

HAproxy指南之haproxy实现应用动静分离(案例篇)的相关文章

使用HAproxy如何实现web站点的动静分离

HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.      HAProxy特别 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的 运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上.    HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数.多进程或多线程

haproxy+keepalived双主模型及动静分离的实现

实验目标: 1.haproxy统计页面的输出机制: 2.haproxy动静分离机制: 3.基于keepalived的高可用实现: 环境: vm8虚拟机 操作系统: centos 6.4 内核版本: 2.6.32-358.el6.x86_64 注: (1) 每个haproxy各有两块网卡,外网网卡选择Bridge,内网网卡选择Vmnet2; (2) 内部两台web服务器的网卡都是选择Vmnet2; 一.准备工作: 1.各节点IP地址相关设置 node1:  ifconfig eth1 192.16

HAproxy企业应用,TCP/HTTP动静分离

HAproxy企业应用,TCP/HTTP动静分离HAProxy的是一个免费的.开源的的tcp/http反向代理工具.负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性.高并发性,负载均衡和代理对TCP和基于HTTP的应用程序.它特别适用于流量非常高的网站.它已成为事实上的标准开源负载均衡器,现在随大多数主流Linux发行版一起提供,在互联网领域应用也是非常广泛,受欢迎的第三方工具. 在企业实际应用环境中,往往会根据业务请求将相关不同请求跳转到指定的后端服务器,比如客户静态资源请求

haproxy+varnish+amp集群实现动静分离

    一.简介 Haproxy一个高性能的负载均衡服务软件,它可基于四层和七层之间进行调度,而且对各个节点具有健康状态检测的功能,当后端服务器故障时,会自动标记为不可用状态,当服务器上线时还会自动将后端主机上线.比起lvs其配置简单,且引入了frontend,backend,listen等功能,frontend可添加acl规则,可根据HTTP请求头做规则匹配,然后把请求定向到相关的backend.       二.配置相关参数详解 haproxy主要分为global.defaults.fron

LAMP+haproxy+varnish实现网站访问的动静分离及静态资源缓存

实验目标:1.    LAMP节点提供用户动态请求访问,数据库单独有数据库节点提供:2.    LAMP动态网站有两台服务器,提供负载均衡:3.    静态网站服务器节点提供用户的静态资源请求访问:存在两台静态web服务器,其网站静态资源在静态服务器上存放:4.    用户的静态请求访问后缓存在varnish服务器上,实现访问加速5.    前端的haproxy提供反向代理功能,将用户的动态资源请求发送给后端LAMP节点,静态资源请求发往后端静态web服务器:6.    该架构考虑还不健全,如静

利用Haproxy对Discuz实现数据的动静分离

一,实验目的 利用Haproxy+Discuz实现数据的动静分离 二,实验模型 三,实验环境 四,实验内容 1,首先在node2,3上安装http服务,安装PHP 2,提供NFS文件共享存储 配置node2的web根目录为nfs共享目录为挂载在node3的文件根目录下. node3: mount -t nfs 172.16.18.1:/var/www/html/upload   /var/www/html/upload 3,在node2上部署Discuz论坛 将Discuz解压到站点根目录下.进

haproxy+varnish实现discuz论坛的动静分离以及静态缓存

一.目的: (1) 动静分离discuzx,静态资源通过NFS挂载至动态服务器中: (2) varnish缓存静态资源: 二.拓扑规划 三.步骤:     1.先部署discuz的动静分离 (1)在app动态服务器快速搭建LAMP环境: yum install -y httpd mysql-server php php-mysql (2)创建discuz论坛的mysql用户: MySQL [(none)]> GRANT ALL ON *.* TO 'nihao'@'localhost' IDEN

HAproxy的负载均衡+日志独立+动静分离+读写分离的配置

主机环境   redhat6.5 64位 实验环境   服务端1 ip 172.25.29.2            服务端2 ip 172.25.29.3             管理端1 ip 172.25.29.1  防火墙状态:关闭 1.Haproxy的负载均衡及测试 A)负载均衡的配置 [[email protected] ~]# yum install haproxy -y            #安装haproxy [[email protected] ~]# vim /etc/h

CentOS 6.5环境下使用HAProxy+apache实现web服务的动静分离

HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上. HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数.多进程或多线程模型受内存限制.系统调