CDN加速的实现 --- varnish
Posted uthnb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
3、编辑varnish文件
---> /etc/sysconfig/varnish # 只修改文件的接听端口为80即可
4、编辑varnish用户的限制文件
---> vim /etc/security/limits.conf # 只需要在末尾添加如下信息即可
5、打开virnish服务器
---> /etc/init.d/varnish start
6、在默认文件中添加访问后端服务器的ip、端口、是否命中执行的相关代码(varnish主机为172.25.2.1)
---> /etc/varnish/default.vcl
---> 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 /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
---> /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行的注释打开
3、在server3中创建/www1目录,并添加index.html;填写内容为 www.xniu.com
4、在varnish主机的默认文件中进行如下添加:
---> /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服务损坏后,客户端依然可以访问号的哪个服务器。
以上是关于CDN加速的实现 --- varnish的主要内容,如果未能解决你的问题,请参考以下文章