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‘ IDENTIFIED BY ‘123456‘;
MySQL [(none)]> FLUSH PRIVILEGES;

(3)部署discuz论坛程序:

[[email protected] html]# unzip Discuz_X3.2_SC_UTF8.zip

(4)要实现discuz的动静分离,首先要了解discuz的动静资源的存放目录位置,在discuz的根目录upload目录中,data和static存放的是静态资源:

[[email protected] upload]# tree -L 1
.
├── admin.php
├── api
├── api.php
├── archiver
├── config
├── connect.php
├── cp.php
├── crossdomain.xml
├── data  #静态资源
├── favicon.ico
├── forum.php
├── group.php
├── home.php
├── index.php
├── install
├── member.php
├── misc.php
├── plugin.php
├── portal.php
├── robots.txt
├── search.php
├── source
├── static  #静态资源
├── template
├── uc_client
├── uc_server
└── userapp.php
10 directories, 17 files

(5)知道了静态资源的位置,接下来就可以搭建static静态资源的静态服务器了,首先,快速搭建LAMP环境,这里就不演示了,搭建完成后启动NFS和配置NFS:

[[email protected] ~]# yum install -y rpcbind nfs-utils
[[email protected] ~]# vim /etc/exports  #编辑NFS共享目录
[[email protected] ~]# cat !$
cat /etc/exports
/var/www/html/upload/data 10.1.0.0/16(rw)
/var/www/html/upload/static 10.1.0.0/16(rw)
[[email protected] ~]# service rpcbind start
[[email protected] ~]# service ntf start
[[email protected] ~]# showmount -e 10.1.249.30 
Export list for 10.1.249.30:
/var/www/html/upload/static 10.1.0.0/16
/var/www/html/upload/data   10.1.0.0/16

(6)回过头来,先把动态服务的初始化静态内容复制到静态服务器上,再动态服务器上将静态资源的两个目录挂上去:

[[email protected] ~]# scp /var/www/html/upload/static/* 10.1.249.30:/var/www/html/upload/static/*  #拷贝文件时路径要一致
[[email protected] ~]# scp /var/www/html/upload/data/* 10.1.249.30:/var/www/html/upload/data/*
[[email protected] ~]# mount.nfs 10.1.249.30:/var/www/html/upload/static/ /var/www/html/upload/static/ #挂载NFS
[[email protected] ~]# mount.nfs 10.1.249.30:/var/www/html/upload/data/ /var/www/html/upload/data/

(7)OK,接下来可以安装haproxy来进行设置acl调度了:

[[email protected] ~]# yum install -y haproxy
[[email protected] ~]# cat /etc/haproxy/haproxy.cfg 
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the ‘listen‘ and ‘backend‘ sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
listen stats
    mode http
    bind *:1080
    stats enable
    stats hide-version
    stats uri     /admin
    stats realm   Haproxy\ Statistics
    stats auth    admin:admin
    stats admin if TRUE
frontend  main 
    bind *:80
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js .html .ico
    use_backend static          if url_static
    default_backend             app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 10.1.249.30:80 check
    rspadd X-Via:static #启用响应报文首部标志,以便观察是静态服务器反馈的
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server app 10.1.252.36:80 check
    rspadd X-Via:app #启用响应报文首部标志,以便观察是动态服务器反馈的

(8)OK,haproxy已经搭建完成,我们来测试一下:

haproxy状态页:

动态服务器响应:

静态服务器响应:

    2、动静分离已经实现,接下来在静态资源添加varnish来缓存静态资源:

(9)安装配置varnish,由于前端haproxy已经进行了资源的分离,所以,varnish的配置基本用默认的配置就可以了

[[email protected] ~]# yum install -y varnish-3.0.7-1.el7.centos.x86_64.rpm 
[[email protected] ~]# vim /etc/varnish/default.vcl 
backend default {
  .host = "10.1.249.30";
  .port = "80";
}

(10)修改HAproxy的配置文件,把静态资源的调度IP改为varnish:

[[email protected] ~]# cat  /etc/haproxy/haproxy.cfg 
#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#---------------------------------------------------------------------
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the ‘-r‘ option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
#---------------------------------------------------------------------
# common defaults that all the ‘listen‘ and ‘backend‘ sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
listen stats
    mode http
    bind *:1080
    stats enable
    stats hide-version
    stats uri     /admin
    stats realm   Haproxy\ Statistics
    stats auth    admin:admin
    stats admin if TRUE
frontend  main 
    bind *:80
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js .html .ico
    use_backend static          if url_static
    default_backend             app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 10.1.249.75:6081 check
    rspadd X-Via:static
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
    server app 10.1.252.36:80 check
    rspadd X-Via:app

    OK,haproxy+varnish实现动静资源分离和静态资源的缓存到此暂告一段落,更多内容请关注我的博客

时间: 2025-01-18 09:25:57

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

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

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

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

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

haproxy实现discuz论坛的动静分离和负载均衡

一.在cs2.cs3.cs4上安装httpd [[email protected] ~]# yum install httpd [[email protected] ~]# yum install httpd [[email protected] ~]# yum install httpd 二.在cs3.cs4上安装php和php-mysql [[email protected] ~]# yum install php [[email protected] ~]# yum install php

使用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

Varnish的负载均衡、动静分离

一.Varish的简介 Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. 在当前主流的Web架构中,Cache担任着越来越重要的作用.常见的基于浏览器的C/S架构,Web Cache更是节约服务器资源的关键.而最近几年由FreeBSD创始人之一Kamp开发的varnish更是一个不可多得的Web Cache Server.严格意义上说,Varnish是一个高性能的反向代理软件,只不过

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

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

高性能Web服务之haproxy应用详解及实现论坛的动静分离机制

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

LNAMP源码安装整合加论坛及动静分离

LNAMP(Linux+Nginx+Apache+Mysql+PHP)架构受到很多IT企业的青睐,取代了原来认为很好的LNMP(Linux+Nginx+Mysql+PHP)架构,那我们说LNAMP到底有什么优点呢,还得从Nginx和apache的优缺点说起. Nginx处理静态文件能力很强,Apache处理动态文件很强而且很稳定,把二者综合在一块,性能提升很多倍.可能很多Linux SA在从事LNMP运维中,会发现PHP(FastCGI)模式会出现一些502错误的现象,这是因为Nginx+PHP