概述
CDN
内容分发网络(Content Delivery Network,简称 CDN),将源内容同步到全国各边缘节点,配合精准的调度系统,将用户的请求分配至最适合他的节点,使用户可以以最快的速度取得他所需的内容,解决网络带宽小、用户访问量大、网点分布不均等问题,提高用户访问的响应速度。
工作原理
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
cdn 高速缓存器 varnish服务器
Varnish
Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的squid 相比,varnish 具有性能更高、速度更快、管理更加方便等诸多优点,很多大型的网站都开始尝试使用 varnish 来替换 squid,这些都促进varnish 迅速发展起来
varnish 工作原理
用户通过浏览器访问http服务器,但是需要先经过http加速器varnish服务器,如果用户访问的内容在varnish的cache中,则直接从varnish服务器返回该访问内容,但是如果不再varnish的cache中,就先从后端的http服务器中取出用户需要访问的内容,并保存在varnish的cache中,以便下次的访问。
varnish的状态引擎(state engine)
说道varnish的状态引擎,不得不说vcl(Varnish Configuration Language:varnish配置缓存策略的工具)。它是基于域的一种简单的编程语言,支持算数运算、允许使用正则表达式、支持if语句等。使用vcl语言编写的缓存策略通常保存于.vcl文件中,其需要编译成二进制的格式后才能由varnish调用。
VCL用于让管理员定义缓存策略,而定义好的策略将由varnish的management进程分析、转换成C代码、编译成二进制程序并连接至child进程。varnish内部有几个所谓的状态(state),在这些状态上可以附加通过VCL定义的策略以完成相应的缓存处理机制,因此VCL也经常被称作“域专用”语言或状态引擎,“域专用”指的是有些数据仅出现于特定的状态中。
具体的状态的是通过定义内置函数来实现的,具体过程如下图:
varnish 服务器的搭建及配置
安装 varnish-3.0.5-1.el6.x86_64.rpm varnish-libs-3.0.5-1.el6.x86_64.rpm
服务所需要的两个包
配置文件位置
vim /etc/sysconfig/varnish
/etc/varnish/default.vcl
NFILES 最大打开文件数量 65535
受内核,系统控制
[root@foundation31 ~]# sysctl -a | grep file-max
fs.file-max = 371487
查看系统打开文件数量
[root@foundation31 ~]# ulimit -n
1024
limit的配置文件位置
/etc/security/limits.conf
限制文件登陆的在/etc/pam.d/lib/security/pam_limits.so
[root@foundation31 pam.d]# cd /lib64/security/
[root@foundation31 security]# ll pam_limits.so
-rwxr-xr-x. 1 root root 19584 Aug 4 2015 pam_limits.so
修改varnish 的打开文件数量限制。
[root@server1 ~]# tail -n 1 /etc/security/limits.conf
varnish - nofile 65535
/etc/sysconfig/varnish
VARNISH_LISTEN_PORT=80 端口
#
# # Telnet admin interface listen address and port
VARNISH_MIN_THREADS=50
#
# # The Maximum number of worker threads to start
VARNISH_MAX_THREADS=1000 最大连接数
#
# # Idle timeout for worker threads
VARNISH_THREAD_TIMEOUT=120 内容保存时间
#
# # Cache file location 缓存保存为文件模式保存
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=1G 保存的size 为1G
#
# # Backend storage specification # 调用上面的命
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
更改 /etc/varnish/default.vcl 文件 重新启动服务
在132中创建index.html文件
测试
查看缓存命中情况
更改配置文件/etc/varnish/default.vcl
在浏览器主机中添加解析
测试:第一次没命中 去varnish132 上和133 上找找到后换存起来,再次访问www.westos.org直接返回客户端
四 负载均衡: 定义多个不同域名站点的后端服务器
更改配置文件 /etc/varnish/default.vcl
/etc/init.d/varnish reload
测试
轮询:
编辑配置文件 /etc/varnish/default.vcl
/etc/init.d/varnish reload
测试 :
通过Varnish 手动清除缓存
varnishadm ban.url .*$ 清除所有
varnishadm ban.url /index.html 清除 index.html 页面缓存
varnishadm ban.url /admin/$ 清除 admin 目录缓存
varnish cdn 推送平台
需要用到的 bansys.zip 包 解压
bansys 有两种工作模式,分别是:telnet 和 http 模式。
telnet 模式需要关闭 varnish 服务管理端口的验证,注释掉/etc/sysconfig/varnish 文件中的 “ -S $
{VARNISH_SECRET_FILE}”这行,重启 varnish 服务即可。
如果是 http 模式需要对 varnish 做以下设置:
更改 php文件
测试
最后
以上就是生动芹菜为你收集整理的CDNCDN的全部内容,希望文章能够帮你解决CDNCDN所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复