全球主机交流论坛

标题: 【吃灰的小鸡能干啥?】教你轻松搭建高性能的CDN集群 [打印本页]

作者: shc    时间: 2020-7-18 09:57
标题: 【吃灰的小鸡能干啥?】教你轻松搭建高性能的CDN集群
本帖最后由 shc 于 2020-7-19 02:00 编辑

EDIT: 一键脚本已经在编写中,预计月底之前出炉。

前几天,我在这里介绍了使用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, 惊群配置与拥塞控制,其他的如果没有特殊需求可以不用设置。


有任何疑问欢迎在这里或者在我博客上留言哈,如需转载请注明原文链接。谢谢大家!


作者: inkedus    时间: 2020-7-18 09:58
大佬,还是你懂得多
作者: 你好,再见    时间: 2020-7-18 09:58
厉害厉害,收藏了,一直想了解一下自建CDN
作者: tdd    时间: 2020-7-18 09:59
技术贴 绑定   
作者: haoava    时间: 2020-7-18 10:00
先收藏再回复
作者: sky21022    时间: 2020-7-18 10:02
先收藏再说
作者: shc    时间: 2020-7-18 10:04
inkedus 发表于 2020-7-18 09:58
大佬,还是你懂得多

大佬你是真快……
作者: 1016797313    时间: 2020-7-18 10:05
帮顶 技术贴啊

作者: yueyyy    时间: 2020-7-18 10:06
火钳留名,感谢大佬分享
作者: xyx4693    时间: 2020-7-18 10:06
nbnb绑定绑定
作者: 睿数据    时间: 2020-7-18 10:07
哎呦不错哦
作者: 爱因斯坦    时间: 2020-7-18 10:08
有管理面板吗
作者: fule    时间: 2020-7-18 10:09
感谢大佬分享,比预期中的教程快了一天
作者: micto    时间: 2020-7-18 10:14
原博客也看了,没看到如何防cc。
现在大家的困境就在DDCC,买高防来防DD,然后CC是最让人头大的。

1. 怕误伤正常的访客
2. 担心开启奇怪的防御后,影响用户体验:譬如输验证码
3. 担心影响搜索引擎收录
作者: shc    时间: 2020-7-18 10:15
爱因斯坦 发表于 2020-7-18 10:08
有管理面板吗

命令行管理,或者搭建群控平台Traffic Control https://traffic-control-cdn.readthedocs.io/en/latest/index.html
作者: shc    时间: 2020-7-18 10:21
micto 发表于 2020-7-18 10:14
原博客也看了,没看到如何防cc。
现在大家的困境就在DDCC,买高防来防DD,然后CC是最让人头大的。

文章第9节的内容就是为了防CC的。DD是没法防的。

实测源站双核2GB内存,只能勉强扛到500并发。套了一个单核1G的CDN节点之后,CDN节点承受2000并发,一分钟38万请求没有任何压力。
作者: shc    时间: 2020-7-18 10:27
fule 发表于 2020-7-18 10:09
感谢大佬分享,比预期中的教程快了一天

感谢大佬支持
作者: micto    时间: 2020-7-18 10:32
shc 发表于 2020-7-18 10:21
文章第9节的内容就是为了防CC的。DD是没法防的。

实测源站双核2GB内存,只能勉强扛到500并发。套了一个 ...

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

不知道,不过量大了,CDN节点服务器的配置和数量肯定得跟上
作者: remarkable    时间: 2020-7-18 10:43
mark一下,感谢大佬教程
作者: Cecil_Never    时间: 2020-7-18 10:47
绑定了 还是大佬懂得多
作者: heihai    时间: 2020-7-18 10:58
大佬又开始秀技术了
作者: 杀特马人    时间: 2020-7-18 11:03
可以的,先收藏了
作者: 梦枫    时间: 2020-7-18 11:06
好好学习一下。
作者: 逸二    时间: 2020-7-18 11:11
教程说法有错误。nginx不仅仅只能反向代理还可以正向代理透明代理缓存等等
作者: shc    时间: 2020-7-18 11:30
逸二 发表于 2020-7-18 11:11
教程说法有错误。nginx不仅仅只能反向代理还可以正向代理透明代理缓存等等 ...

感谢大佬指点,查了一下确实现在的版本可以正代和透明代理了,老版本不可以正向代理和透明代理的 https://forum.nginx.org/read.php?2,15124,15256#msg-15256
作者: loony    时间: 2020-7-18 11:40
又拍早不用 Traffic Server 了    这就是个残缺品。。。。。没有自己开发能力的 谨慎使用
作者: b67    时间: 2020-7-18 12:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: micto    时间: 2020-7-18 12:39
loony 发表于 2020-7-18 11:40
又拍早不用 Traffic Server 了    这就是个残缺品。。。。。没有自己开发能力的 谨慎使用 ...

那么还是用Nginx?
作者: loony    时间: 2020-7-18 12:40
micto 发表于 2020-7-18 12:39
那么还是用Nginx?

小文件 网页cdn nginx是够用的
作者: cowe    时间: 2020-7-18 12:42

香菇肥牛大佬的文章一定要顶,膜拜已久!

zsbd
作者: 游乐王子    时间: 2020-7-18 12:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: shc    时间: 2020-7-18 13:08
游乐王子 发表于 2020-7-18 12:45
大佬能出个一键脚本吗?不太会用。。。

哪里不会用?这个没办法一键
作者: suwubee    时间: 2020-7-18 14:52
ts应该是N年前就没人用了吧,和ng不是一个级别的,不知道还有啥优势?
作者: tes    时间: 2020-7-18 15:24
mark,支持大佬
作者: typecho    时间: 2020-7-18 23:01
为啥外层不能正向?
作者: ncnc    时间: 2020-7-18 23:03
今天看了cdn的原文 太杂负。。 我还是用另两个
作者: onsy    时间: 2020-7-19 00:34
膜拜大佬,赞赞赞
作者: micms    时间: 2020-7-19 00:40
大佬能出个一键脚本吗?不太会用。。。




欢迎光临 全球主机交流论坛 (https://sunk.eu.org/) Powered by Discuz! X3.4