CDN分发网络
- CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
VCL 处理流程图
- VCL流程
- Receive 状态,也就是请求处理的入口状态,根据 VCL 规则判断该请求应该是 Pass 或
Pipe,或者进入 Lookup(本地查询)。 - Lookup 状态,进入此状态后,会在 hash 表中查找数据,若找到,则进入 Hit 状态,否则进
入 miss 状态。 - Pass 状态,在此状态下,会进入后端请求,即进入 fetch 状态。
- Fetch 状态,在 Fetch 状态下,对请求进行后端的获取,发送请求,获得数据,并进行本地
的存储。 - Deliver 状态, 将获取到的数据发送给客户端,然后完成本次请求。
当只有一个后端服务器
- server1
[root@server1 ~]# ls
varnish-libs-3.0.5-1.el6.x86_64.rpm
varnish-3.0.5-1.el6.x86_64.rpm
[root@server1 ~]# yum install -y varnish-* jemalloc-3.6.0-1.el7.x86_64.rpm
[root@server1 ~]# rpm -qc varnish-3.0.5-1.el6.x86_64 # 查看varnish的配置文件
/etc/logrotate.d/varnish # varnish的日志文件
/etc/sysconfig/varnish # varnish的命令参数配置文件
/etc/varnish/default.vcl # varnish的程序主配置文件
[root@server1 ~]# vim /etc/sysconfig/varnish
NFILES=131072 # 最多打开文件的个数
MEMLOCK=82000 # 最大内存锁定大小
NPROCS=“unlimited” # 进程数,unlimited表示不做限制
[root@server1 ~]# sysctl -a | grep file # 查看系统可以打开文件的个数,发现远小于varnish的最大个数
fs.file-nr = 448 0 98864
fs.file-max = 98864
为了和varnish软件匹配,需要修改文件个数,而文件个数是通过内存大小来控制的,所以我们需要通过加大内存来增加文件个数
- sysctl -a | grep file # 再次查看,发现可以打开文件的个数可以满足varnish的最大需求
- ulimit -l # 查看系统允许的进程数,远小于varnish允许数,但是我们不能修改系统的,只能来修改varnish的
64 - vim /etc/security/limits.conf # 为了和varnish匹配,修改系统对varnish的默认参数和varnish本身保持一致
varnish - nofile 131072
varnish - memlock 82000
varnish - nproc unlimited
- /etc/init