CDN加速的实现 --- varnish

一、什么是CDN

cdn全称为内容分发网络(Content Delivery Network)。基本思想是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,是内容传输地更快、更稳定。通过在互联网各处放置节点服务器来构成在现有的互联网基础上的一层只能虚拟网络,cdn系统能够实时地根据网络流量和个节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。目的是为了是用户就近取所需内容,解决了网络拥挤问题,提高用户的响应速度。

varnish是一款具有高性能的开源HTTP加速器,具有方向代理、缓存的功能。

二、部署单个后端服务器的varnish过程

1.在官网下载软件包:varnish-libs-3.0.5-1.el6.x86_64.rpm和 varnish-3.0.5-1.el6.x86_64.rpm

2、安装varnish:(安装完成后,可以在/etc/passwd中查看已经生成的varnish用户;所以对varnish的访问控制也相当于通过对varnish用户控制来实现)

--->  yum  install  varnish-3.0.5-1.el6.x86_64.rpm   -y

--->  yum  install  varnish-libs-3.0.5-1.el6.x86_64.rpm   -y

3、编辑varnish文件

--->  /etc/sysconfig/varnish                # 只修改文件的接听端口为80即可

第66行修改:VARNISH_LISTEN_PORT=80

第8行查看:NFILES=131072                    # 表示能打开的最大文件数(varnish用户可自动调整)

第12行查看:MEMLOCK=82000                   # 表示最多可使用的内容空间(varnish用户可自动调整)

第15行查看:NPROCS=‘unlimited’              # 表示单个用户可运行的最大线程数

4、编辑varnish用户的限制文件

--->  vim  /etc/security/limits.conf        # 只需要在末尾添加如下信息即可

varnish     -      nofile      131072

varnish     -      memlock     82000

varnish     -      nproc       unlimited

# 注意:此时的最后一列信息与3文件中的内容想对应

5、打开virnish服务器

---> /etc/init.d/varnish  start

6、在默认文件中添加访问后端服务器的ip、端口、是否命中执行的相关代码(varnish主机为172.25.2.1)

---> /etc/varnish/default.vcl

baskend  default {

.host = "172.25.2.2"

.port = "80"

}

sub  val_deliver {

if (obj.hits > 0){

set resp.http.X-Cache = "HIT  from westos cache";

# 在vainish中命中HTT访问的域名

}

else{

set resp.http.X-Cache = "MISS  from westos cache";

# 在后端赴服务器中得到MISS访问的域名

}

return (deliver)

}

7、默认配置文件修改之后,要进行文件的加载

--->  vim  /etc/init.d/varnish   reload

8、在后端服务器中安装并开启httpd服务,关闭火墙

--->  yum install httpd  -y

--->  /etc/init.d/httpd  start

--->  iptables  -L       # 查看火墙是关闭状态

9、在后端服务器添加一个默认发布目录

---> vim /var/www/html/index.html

<h1>server2 --- www.xniu.com<h1>

--->  /etc/init.d/httpd  restart

10、此时可以在物理主机中进行测试

--->  curl  -I  172.25.2.1          # 第一次,显示从后端服务器获取。第二次显示从varnish缓存中获取

注释:### 通过 varnishadm 手动清除缓存

varnishadm ban.url .*$          #清除所有
        varnishadm ban.url /index.html  #清除 index.html 页面缓存
        varnishadm ban.url /admin/$     #清除 admin 目录缓存

三、具有多台后端服务器的varnish

1、打开vm3主机;并设置ip为172.25.2.3,主机名为server3

---> vim /etc/sysconfig/network          # 修改主机名

hostname=server3

---> vim /etc/sysconfig/network-scripts/ifcfg-eth0

IPADDR=172.25.2.3

2、在server3中安装httpd服务、并编辑默认发布目录

---> vim  /var/www/html/index.html

<h1>server3 --- www.linux.com </h1>

--->  /etc/init.d/httpd  restart

3、在物理主机中添加解析

--->  vim  /etc/hosts

172.25.2.1   www.linux.com  www.xniu.com  xniu.com

4、配置varnish的默认文件

--->  vim  /etc/varnish/default.vcl

backend web1 {          # 后端的第一个服务器web1

.host = "172.25.2.2";  # 当www.xniu.com访问跳转到server2主机
  .port = "80";
 }
 backend web2 {           # 后端的第二个服务器web2
   .host = "172.25.2.3";  # 当www.linux.com访问跳转server3
   .port = "80";
 }
 #当访问 www.xniu.com或xniu.com 域名时从 web1 上取数据,访问 www.linux.com 域名时到 web2 取数据。访问其他页面报错。
 sub vcl_recv {
 if (req.http.host ~ "^(www.)?xniu.com") {
 set req.http.host = "www.xniu.com";
 set req.backend = web1;
 } elsif (req.http.host ~ "^www.linux.com") {
 set req.backend = web2;
 } else {error 404 "westos cache";
 }
 }

--->  /etc/init.d/varnish  reload

5、在物理主机中测试(此时,两个结果是不一样的)

---> curl -I www.linux.com

---> curl -I www.xniu.com

四、varnish后端服务器的负载均衡

1、负载均衡(Load Balace,简称LB):是一种服务器或网络设备的集群技术。负载均衡将特定的业务(网络服务、网络流量等)分担给多个  服务器或网络设备,从而提高了业务处理能力,保证了业务的高可用性。负载均衡的算法种类很多,常见的包含:轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法等,应根据实际情况选取。在varnish中我们常用的是轮询法,平衡对待每一个服务器。

2、在server3中httpd默认发布目录进行如下操作

--->  vim /etc/httpd/conf/httpd.conf         # 将990行的注释打开

<VirtualHost *:80>

DocumentRoot  /var/www/html

ServerName  www.linux.com

</VirtualHost>

<VirtualHost *:80>

DocumentRoot  /www1

ServerName  www.xniu.com

</VirtualHost>

3、在server3中创建/www1目录,并添加index.html;填写内容为 www.xniu.com

4、在varnish主机的默认文件中进行如下添加:

director lb round-robin {    # 为轮询法
  { .backend = web1;}
  { .backend = web2;}
  #把多个后端聚合为一个组,并检测后端健康状况
  }

sub vcl_recv {
  if (req.http.host ~ "^(www.)?xniu.com") {
  set req.http.host = "www.xniu.com";
  set req.backend = lb;
  return (pass);        # 表示不经过缓存,直接取服务器取拿东西
  } elsif (req.http.host ~ "^www.linux.com") {
  set req.backend = web2;
  } else {
  error 404 "westos cache";
  }
  }

---> /etc/init.d/varnish  reload

5、在物理主机中测试:

---> cutl -I www.xniu.com

分析:会出现轮询现象。若第一次出现server2 --- www.xniu.com(server2),则在120s内均为该结果(由于varnish对数据进行了缓存);经过120s后,显示结果变为www.xniu.con(server3);出现这样的结果,是由于轮询算法,server2和server3平均被访问。如果默认写上pass之后,则每次属性www.xniu.com界面,会出现上述两个结果交替出现的现象。若server2或者server3中有一个httpd服务损坏后,客户端依然可以访问号的哪个服务器。

原文地址:https://www.cnblogs.com/uthnb/p/9644100.html

时间: 2024-11-17 11:52:50

CDN加速的实现 --- varnish的相关文章

《CDN加速代理》RHEL6

CDN加速代理环境的测试:192.168.1.这个网段是可以上网的,2网段不可以上网 一台apache服务器 :配置 只安装apche服务 IP 192.168.1.59 一台双网卡的服务器 :只安装squid服务eth0 192.168.1.61  eth1  192.168.2.61 一台客户机: 只有浏览器  网段为2 也是不可以上网的192.168.2.37 1.  apache服务器: 2.  修改apache配置文件打开虚拟端口: 3.  启动apache服务;  刷掉火墙策略: 4

jquery cdn加速点

新浪jquery cdn加速点: <script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.js"></script> <script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script> 百度jquery cdn加速点: <script src="http:/

linux杂谈(十二):CDN加速

1.CDN简介 ? ?今天我们来模仿一下CDN加速下的apche服务器访问.那么我们首先来了解一下什么是CDN加速. ? ?DN的全称是Content Delivery Network,即内容分发网络.其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络"边缘",使用户可以就近取得所需的内容,提高用户访问网站的响应速度. ? ?举一个例子:我们要访问腾讯的新闻网,那我们是直接去访问深圳总部的服务器么?当然不是,这样不仅服务器的负载接受不了,而且

CDN加速原理普及

什么是CDN? 全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络 百科说明:https://baike.baidu.com/item/cnd/8200849?fr=aladdin CDN的全称是Content Delivery Network,即内容分发网络.其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度.类似分布各地的物流仓储网络,CDN网络可以将源站的内容缓存到分

Web前端性能优化之CDN加速

1.什么是CDN? 在介绍CDN加速之前,我们先来简单的了解一下什么是CDN?CDN(Content Delivery Network)即内容分发网络,其基本思路是尽可能的避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输更快.更稳定.通过在网络各处放置节点服务器所构成的现有互联网基础之上的一层虚拟网络,CDN系统能够实时的根据网络流量和各节点的连接,负载状况以及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上.其目的就是使用户能够就近的获取请求数据,解决

DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别

“智能DNS”跟“双线加速”.“CDN加速”的区别相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,它们在工作方式上有着本质的区别,但它们又可以组合起来使用的.下面华数世纪为大家简单介绍一下: 智能DNS相当于一种在DNS解析服务器上进行的负载均衡,当用户访问一个站点时,他的IE浏览器向服务器提交了一个URL地址,域名解析服务器就开始分析用户的线路.如果用户属于电信线路,就把那个站点的电信IP解析给用户,把用户引到电信站:如果是网通也是同

加载CDN加速服务地址

Jquery是个非常流行的JS前端框架,在很多网站都能看到它的身影.很多网站都喜欢采用一些Jquery CDN加速服务,这样网站加载jquery会更快.之前火端网络的一些网站都是使用Google的jquery CDN,如:http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js ,但是由于最近Google打不开,这些CDN地址也无法访问,而JS往往放在网页的head里,JS无法访问导致网站打开非常慢,只能是全部替换掉CDN链接

国内CDN加速现状

什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.是位于网络层与应用层之间的网络应用,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布 到最接近用户的网络"边缘",使用户可以就近取得所需的内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度.从技术上全面解决由于用 户访问量大.网点分布不均等原因所造成的用户访问网站响应速度慢的问题. 内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储

WP Super Cache+七牛云配置CDN加速,让你的网站秒开

CDN加速网站是几乎所有的站长都在考虑的问题,CDN,全称是Content Delivery Network,即内容分发网络.所谓CDN加速,通俗的来说就是把原服务器上数据复制到其他服务器上,用户访问时,那台服务器近访问到的就是那台服务器 上的数据.CDN加速优点是成本低,速度快.CDN加速的方法和工具都很多,网上用的比较多的是“我爱水煮鱼”做的七牛镜像插件,这个插件很好用,但是也 有两个 bug 无法解决: 1.插件中的 JavaScript 和 CSS 无法镜像到七牛云存储中去. 2.部分主