【吃灰的小鸡能干啥?】教你轻松搭建高性能的CDN集群-全球主机交流-

  • Post author:
  • Post category:hostloc
  • Post comments:0评论
  • Post last modified:七月 18, 2020

前几天,我在这里介绍了使用Traffic Server反代网站。Traffic Server是强大的正反代/缓存/CDN套件,只用来反代的话有点大材小用了。今天就来介绍使用Traffic Server搭建高性能的CDN集群。
使用Traffic Server的商业CDN有Akamai, Comcast, 又拍云等,已经是非常成熟的系统了,功能丰富,高速高并发。
教程将分为11个部分,其中仅有两部分是必须设置的,即配置映射规则和缓存规则,其他都不是必须的。因此,这里我仅列出来这两部分的内容,其他内容(缓存分区,SSL/OCSP装订/HTTP2, 自定义Headers, via header, 调试与监测, 防止惊群, 拥塞控制, DNS缓存, 均衡负载等等)由于太长,请移步博客按照实际需要操作哈。操作起来很简单,一般20-30分钟就可以安装配置好。
原文链接:https://qing.su/article/traffic-server-cdn-cluster.html
测试的CDN服务器是在一台1核,1GB内存的腾讯云轻量小鸡上,另外实测512MB内存就可以完美运行,不过一开始编译安装的时候需要加一点swap.  之前loader.io压力测试结果可以看这里(https://bit.ly/32xD1nI),2000并发访客不间断CC,一分钟38万个请求全部成功,CDN服务器CPU 40%, 源站没有任何压力,倒是轻量云的网络限制是个瓶颈……(不过我现在已经把CDN关了,所以求大佬们别打我,谢谢……
教程开始……
1, 安装Traffic Server
这一步是和之前的文章一样的。

  1. wget https://mirrors.ocf.berkeley.edu/apache/trafficserver/trafficserver-8.0.8.tar.bz2
  2. tar xjf trafficserver-8.0.8.tar.bz2
  3. apt install automake libtool pkg-config libmodule-install-perl gcc g++ libssl-dev tcl-dev libpcre3-dev libcap-dev libhwloc-dev libncurses5-dev libcurl4-openssl-dev flex autotools-dev bison debhelper dh-apparmor gettext intltool-debian libbison-dev libexpat1-dev libfl-dev libsigsegv2 libsqlite3-dev m4 po-debconf tcl8.6-dev zlib1g-dev
  4. cd trafficserver-8.0.8
  5. ./configure –enable-experimental-plugins
  6. make
  7. make install
  8. ln -s /usr/local/etc/trafficserver /etc/trafficserver

2, 设置映射规则
可以使用正代或者反代配置CDN, 都可以实现全部功能,两者性能都很高。不过由于安全原因,最外层节点不建议用正代
(1) 正代规则

  1. #records.config
  2. CONFIG proxy.config.reverse_proxy.enabled INT 0
  3. CONFIG proxy.config.url_remap.remap_required INT 0
  4. CONFIG proxy.config.url_remap.pristine_host_hdr INT 1

然后配置DNS
(2) 反代规则

  1. #records.config
  2. CONFIG proxy.config.reverse_proxy.enabled INT 1
  3. CONFIG proxy.config.url_remap.remap_required INT 1
  4. CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
  1. #remap.config 88.88.88.88为源站IP
  2. map https://qing.su/ https://88.88.88.88:443/

3, 设置缓存规则

  1. #records.config
  2. CONFIG proxy.config.http.cache.http INT 1
  3. CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
  4. CONFIG proxy.config.http.normalize_ae_gzip INT 1
  5. CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
  6. CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
  7. CONFIG proxy.config.http.cache.when_to_revalidate INT 0
  8. CONFIG proxy.config.http.cache.required_headers INT 2
  9. CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1
  1. #cache.config 按需配置
  2. url_regex=.* suffix=js ttl-in-cache=5d
  3. url_regex=.* suffix=css ttl-in-cache=5d
  4. url_regex=.* suffix=html ttl-in-cache=5d
  5. url_regex=.* suffix=xml ttl-in-cache=5d
  6. url_regex=.* suffix=ts ttl-in-cache=5d
  7. url_regex=.* suffix=jpeg ttl-in-cache=5d
  8. url_regex=.* suffix=mp4 ttl-in-cache=5d
  9. url_regex=.* suffix=zip ttl-in-cache=5d
  10. url_regex=.* suffix=gif ttl-in-cache=5d
  11. url_regex=.* suffix=jpg ttl-in-cache=5d
  12. url_regex=.* suffix=swf ttl-in-cache=5d
  13. url_regex=.* suffix=m3u8 ttl-in-cache=5d
  14. url_regex=.* scheme=https ttl-in-cache=1h
  15. url_regex=.* scheme=http ttl-in-cache=1h

其他部分,比如缓存分区,SSL/OCSP装订/HTTP2, 自定义Headers, via header, 调试与监测, 防止惊群, 拥塞控制, DNS缓存, 均衡负载等等,请参考原文https://qing.su/article/traffic-server-cdn-cluster.html.  一般来说,建议设置SSL与HTTP2, 惊群配置与拥塞控制,其他的如果没有特殊需求可以不用设置。
有任何疑问欢迎在这里或者在我博客上留言哈,如需转载请注明原文链接。谢谢大家!

loony13小时前-2楼
又拍早不用 Traffic Server 了 这就是个残缺品。。。。。没有自己开发能力的 谨慎使用

游乐王子12小时前-3楼
大佬能出个一键脚本吗?不太会用。。。

inkedus15小时前-4楼
大佬,还是你懂得多

你好,再见15小时前-5楼
厉害厉害,收藏了,一直想了解一下自建CDN

tdd15小时前-6楼
技术贴 绑定

haoava15小时前-7楼
先收藏再回复

sky2102215小时前-8楼
先收藏再说

楼主 shc15小时前-9楼

inkedus 发表于 2020-7-18 09:58大佬,还是你懂得多

大佬你是真快……

101679731315小时前-10楼
帮顶 技术贴啊

yueyyy15小时前-11楼
火钳留名,感谢大佬分享

xyx469315小时前-12楼
nbnb绑定绑定

睿数据15小时前-13楼
哎呦不错哦

爱因斯坦15小时前-14楼
有管理面板吗

fule15小时前-15楼
感谢大佬分享,比预期中的教程快了一天

micto15小时前-16楼
原博客也看了,没看到如何防cc。现在大家的困境就在DDCC,买高防来防DD,然后CC是最让人头大的。1. 怕误伤正常的访客2. 担心开启奇怪的防御后,影响用户体验:譬如输验证码3. 担心影响搜索引擎收录

楼主 shc15小时前-17楼

爱因斯坦 发表于 2020-7-18 10:08有管理面板吗

命令行管理,或者搭建群控平台Traffic Control https://traffic-control-cdn.readthedocs.io/en/latest/index.html

楼主 shc14小时前-18楼

micto 发表于 2020-7-18 10:14原博客也看了,没看到如何防cc。现在大家的困境就在DDCC,买高防来防DD,然后CC是最让人头大的。

文章第9节的内容就是为了防CC的。DD是没法防的。实测源站双核2GB内存,只能勉强扛到500并发。套了一个单核1G的CDN节点之后,CDN节点承受2000并发,一分钟38万请求没有任何压力。

楼主 shc14小时前-19楼

fule 发表于 2020-7-18 10:09感谢大佬分享,比预期中的教程快了一天

感谢大佬支持

micto14小时前-20楼

shc 发表于 2020-7-18 10:21文章第9节的内容就是为了防CC的。DD是没法防的。实测源站双核2GB内存,只能勉强扛到500并发。套了一个 …

一般各种提供cc服务的网站,能打多少的量。。

楼主 shc14小时前-21楼

micto 发表于 2020-7-18 10:32一般各种提供cc服务的网站,能打多少的量。。

不知道,不过量大了,CDN节点服务器的配置和数量肯定得跟上

remarkable14小时前-22楼
mark一下,感谢大佬教程

Cecil_Never14小时前-23楼
绑定了 还是大佬懂得多

heihai14小时前-24楼
大佬又开始秀技术了

杀特马人14小时前-25楼
可以的,先收藏了

梦枫14小时前-26楼
好好学习一下。

逸二14小时前-27楼
教程说法有错误。nginx不仅仅只能反向代理还可以正向代理透明代理缓存等等

楼主 shc13小时前-28楼

逸二 发表于 2020-7-18 11:11教程说法有错误。nginx不仅仅只能反向代理还可以正向代理透明代理缓存等等 …

感谢大佬指点,查了一下确实现在的版本可以正代和透明代理了,老版本不可以正向代理和透明代理的 https://forum.nginx.org/read.php?2,15124,15256#msg-15256

loony13小时前-29楼
又拍早不用 Traffic Server 了 这就是个残缺品。。。。。没有自己开发能力的 谨慎使用

b6713小时前-30楼
帮顶

micto12小时前-31楼

loony 发表于 2020-7-18 11:40又拍早不用 Traffic Server 了 这就是个残缺品。。。。。没有自己开发能力的 谨慎使用 …

那么还是用Nginx?

loony12小时前-32楼

micto 发表于 2020-7-18 12:39那么还是用Nginx?

小文件 网页cdn nginx是够用的

cowe12小时前-33楼
香菇肥牛大佬的文章一定要顶,膜拜已久!zsbd

游乐王子12小时前-34楼
大佬能出个一键脚本吗?不太会用。。。

楼主 shc12小时前-35楼

游乐王子 发表于 2020-7-18 12:45大佬能出个一键脚本吗?不太会用。。。

哪里不会用?这个没办法一键

suwubee10小时前-36楼
ts应该是N年前就没人用了吧,和ng不是一个级别的,不知道还有啥优势?

tes9小时前-37楼
mark,支持大佬

发表评论