CDN原理

Content Delivery Network,即“内容发布与速递网络”,能为企业站点提供更快速、稳定服务的网络架构。它采取了分布式网络缓存结构(即国际上流行的Web Cache技术),通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近<u>用户</u>的Cache<u>服务器</u>内,通过DNS负载均衡的技术,判断用户来源就近<u>访问</u>Cache服务器取得所需的内容,解决Internet网络拥塞状况,提高用户访问网站的响应速度,如同提供了多个分布在各地的加速器,以达到快速、可冗余的为多个网站加速的目的。换句话说,CDN就是让网站访问者可以在离自己最近的地方最快的得到可靠的服务。

Squid是一个更专用的代理服务器,性能和效率会比Apache的mod_proxy高很多.
1.下载squid2.6 http://www.squid-cache.org/Versi ... -2.6.STABLE2.tar.gz
2.安装:
groupadd squid
useradd –g squid squid
tar –zxvf <wbr> <wbr>squid-2.6.STABLE2.tar.gz
cd squid-2.6.STABLE2
./configure--prefix=/usr/local/squid --enable-dlmalloc --with-pthreads--enable-poll --disable-internal-dns --enable-stacktrace--enable-removal-policies="heap,lru" --enable-delay-pools--enable-storeio="aufs,coss,diskd,ufs"
make
make install
cd /usr/local/squid
chown –R squid.squid var/

/usr/local/squid/etc/squid.conf

cache服务器IP 218.5.79.91

监听服务器的3128端口,透明代理,支持域名和IP的虚拟主机

http_port 218.5.79.91:3128 transparent vhost vport
icp_port 0

原始服务器的IP 218.5.76.247

为原始服务器80端口服务,即实现反向代理功能。

cache_peer 218.5.76.247 parent 80 0 no-query originserver

cache_mem 的值一般设为物理内存的1/3

512M内存,则选用160M即可

cache_mem 160M
cache_swap_low 90
cache_swap_high 95

maximum_object_size 4096K
maximum_object_size_in_memory 8K
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024

cache_replacement_policy lru
memory_replacement_policy lru
cache_dir ufs /usr/local/squid/var/cache 1024 16 256

access_log /usr/local/squid/var/logs/access.log squid
cache_log /usr/local/squid/var/logs/cache.log
cache_store_log /usr/local/squid/var/logs/store.log
pid_filename /usr/local/squid/var/logs/squid.pid

refresh_pattern ^ftp: <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>1440 <wbr> <wbr> <wbr> <wbr> 20% 10080
refresh_pattern ^gopher: <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>1440 <wbr> <wbr> <wbr> <wbr> 0% <wbr> <wbr>1440
refresh_pattern . <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>0 <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>20% <wbr> <wbr> <wbr> <wbr> 4320

refresh_pattern -i .jpg<wbr> <wbr> <wbr> <wbr> <wbr> <wbr>5 <wbr> <wbr> <wbr> <wbr>0% <wbr> <wbr> <wbr> <wbr>5 <wbr> <wbr> <wbr> <wbr> refresh_pattern -i \.html <wbr> <wbr>5 <wbr> <wbr> <wbr> <wbr> 0% <wbr> <wbr> <wbr> <wbr>5 <wbr> <wbr> <wbr> <wbr>
refresh_pattern -i .htm$ <wbr> <wbr> 5 <wbr> <wbr>0% <wbr> <wbr> <wbr> <wbr>5 <wbr> <wbr> <wbr> <wbr>

访问控制只须加上一条代理服务器的IP

禁止对代理<u>进行</u>IP访问

如有其它要求可如下进行访问控制

acl myIP dst 218.5.79.91
http_access deny myIP

把下面的http_access deny all 改为:

http_access allow all

管理员的邮箱地址以便接收一些cache信息

cache_mgr 用户名@

cache_effective_user squid
cache_effective_group squid

以上为squid最简单的<u>配置</u>,如有其它要求,可自行对配置文件进行修改。

修改好配置文件执行如下命令

做一个转发

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0.0.0.0 --dport 80 -j REDIRECT --to-ports 3128

生成cache目录

/usr/local/squid/sbin/squid –z

启动squid

/usr/local/squid/sbin/squid –NCdl

关闭 squid

/usr/local/squid/sbin/squid –k shutdown

如果访问日志写满,可定期执行如下命令:

/usr/local/squid/sbin/squid –k rotate

或通过crontab每天0点截断/轮循日志

0 0 * * * (/usr/local/squid/sbin/squid –k rotate)

如果代理运行中,进行了对配置文件的修改,可执行如下指令

重新读取配置文件

/usr/local/squid/sbin/squid –k reconfigure

查看客户的点击的情况,可查看代理access.log

tail –f /usr/local/squid/var/logs/access.log

查看cache目录中存储了什么文件可以查看store.log

vi /usr/local/squid/var/logs/store.log

这样基本代理配置就基本实现了。
Squid + DNS合理配置能就更能实现CDN在南北网络中的特殊作用:

为了尽量减少用户的跨地域访问,最有效的方法就是对用户的实际地址进行判断,从而为其选择更合适的服务器进行访问.这里我们所采用的是至少BIND9.X 以上的版本做DNS.因为最新的BIND9为其新添加了对客户IP判断的功能.

本例提供域名http://www.quangao.com/进行配置解析,当一用户访问此域名时,主DNS服务器对其进行判断如果其网段为网通地址段, 则解析其到北京的一台服务器上进行访问. <wbr> <wbr> <wbr> <wbr> 如果其IP地址段为电信地址段,则令其到厦门的服务器上进行访问.若都不是则令其访问默认的服务器.
主DNS域名服务器的named.conf配置如下:
options {
directory "/usr/local/named/etc/";
pid-file "/var/run/named/named.pid";
version "0.0.0";BT无线网络破解教程
datasize 40M;
};
logging
{
channel query_log
{
file "query.log" versions 3 size 20m;
severity info;
print-time yes;
print-category <wbr> <wbr>yes;
};
category queries
{思科学习视频资料下载中心
query_log;
};
};
acl "BEIJING" {
203.196.0.0/16;
};

acl "XIAMEN" {
202.101.0.0/16;
};

view "bj" {
match-clients { BEIJING; };
zone "." {思科路由器配置
type hint;
file "/usr/local/named/etc/named.root";
};
zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "/usr/local/named/etc/localhost";
};
zone "quangao.com" {
type master;
file "/usr/local/named/etc/quangao.com";
};
};

view "xm" {
match-clients { XIAMEN; };
zone "." {
type hint;
file "/usr/local/named/etc/named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "/usr/local/named/etc/localhost";
};思科路由器交换机
zone "quangao.com" {
type master;
file "/usr/local/named/etc/quangao_.com";
};
};

view "other" {
match-clients { any; };
zone "." {
type hint;
file "/usr/local/named/etc/named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
type master;
file "/usr/local/named/etc/localhost";
};
zone "quangao.com" {
type master;
file "/usr/local/named/etc/quangao_o.com";
};
};

key "rndc-key" {思科路由器交换机模拟软件
algorithm hmac-md5;
secret "/vrFZVATJcy/Zo6pmtOoEA==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
这样由主DNS的控制进行对来访的IP进行分流,从而使用户访问离其较近的proxy代理服务器。不但访问速度得到提升,更减轻了源服务器的负载。

工作原理:
本处用http://www.abc.com/为例(主服务器在上海)
全国设了三个代理。北京为01。厦门为02,天津的为03
有北京用户A,厦门用户B。对其进行访问。

经主DNS根据访问的IP地址进行分流,使北京用户的请求指向北京的代理服务器01。厦门用户的请求指向厦门的服务器02。这样就解决了南北互联网的瓶颈问题。

当位于上海的主服务器进行数据更新的时候,全国各地的代理会自动去原服务器更新资料。
如果一旦地方的代理出现故障,它会自动查看附近的结点,进行数据传送,不会影响客户的访问,这一点可由squid.conf 中的cache_peer实现。
例如当北京的代理01出现故障,它会自动与天津的代理03通信,再得到资料后,它会自动回送给北京的用户,而这一切对于用户又都是透明的。就像是在访问原始服务器一样,不过这个可比直接对原始服务器的访问至少快2个数量级。

查看文件传送的一些相关信息,可使用如下命令进行测试
wget –d http://XXX

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • BIND 视图技术实现DNS,Squid做前端缓存简单的CDN的搭建:1、CDN的工作原理:当外网访问内网域名的时...
    SkTj阅读 364评论 0 0
  • 案例:Web服务器:域名www.abc.com IP:192.168.21.129 电信单线路接入访问用户:电信宽...
    SkTj阅读 1,393评论 0 9
  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,878评论 0 7
  • 一、BIND是什么 BIND是互联网应用最为广泛的DNS软件。 二、BIND的安装与使用 以下内容转自 http:...
    0_0啊阅读 3,083评论 0 0
  • 2018.11.20 这几天又一个需要爆发期,4啊5啊,10,面,菇,跑什么的都开始说了,主要说的汉语比较多,我猜...
    想儿陶陶阅读 87评论 0 0