CDN原理

作者: SkTj | 来源:发表于2019-02-17 20:31 被阅读25次

    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

    相关文章

      网友评论

          本文标题:CDN原理

          本文链接:https://www.haomeiwen.com/subject/xsdneqtx.html