本帖最后由 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
这一步是和之前的文章一样的。
- wget https://mirrors.ocf.berkeley.edu/apache/trafficserver/trafficserver-8.0.8.tar.bz2
- tar xjf trafficserver-8.0.8.tar.bz2
- 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
- cd trafficserver-8.0.8
- ./configure --enable-experimental-plugins
- make
- make install
- ln -s /usr/local/etc/trafficserver /etc/trafficserver
复制代码
2, 设置映射规则
可以使用正代或者反代配置CDN, 都可以实现全部功能,两者性能都很高。不过由于安全原因,最外层节点不建议用正代。
(1) 正代规则
- #records.config
- CONFIG proxy.config.reverse_proxy.enabled INT 0
- CONFIG proxy.config.url_remap.remap_required INT 0
- CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
复制代码
然后配置DNS
(2) 反代规则
- #records.config
- CONFIG proxy.config.reverse_proxy.enabled INT 1
- CONFIG proxy.config.url_remap.remap_required INT 1
- CONFIG proxy.config.url_remap.pristine_host_hdr INT 1
复制代码
- #remap.config 88.88.88.88为源站IP
- map https://qing.su/ https://88.88.88.88:443/
复制代码
3, 设置缓存规则
- #records.config
- CONFIG proxy.config.http.cache.http INT 1
- CONFIG proxy.config.http.cache.ignore_client_cc_max_age INT 1
- CONFIG proxy.config.http.normalize_ae_gzip INT 1
- CONFIG proxy.config.http.cache.cache_responses_to_cookies INT 1
- CONFIG proxy.config.http.cache.cache_urls_that_look_dynamic INT 1
- CONFIG proxy.config.http.cache.when_to_revalidate INT 0
- CONFIG proxy.config.http.cache.required_headers INT 2
- CONFIG proxy.config.http.cache.ignore_client_no_cache INT 1
复制代码
- #cache.config 按需配置
- url_regex=.* suffix=js ttl-in-cache=5d
- url_regex=.* suffix=css ttl-in-cache=5d
- url_regex=.* suffix=html ttl-in-cache=5d
- url_regex=.* suffix=xml ttl-in-cache=5d
- url_regex=.* suffix=ts ttl-in-cache=5d
- url_regex=.* suffix=jpeg ttl-in-cache=5d
- url_regex=.* suffix=mp4 ttl-in-cache=5d
- url_regex=.* suffix=zip ttl-in-cache=5d
- url_regex=.* suffix=gif ttl-in-cache=5d
- url_regex=.* suffix=jpg ttl-in-cache=5d
- url_regex=.* suffix=swf ttl-in-cache=5d
- url_regex=.* suffix=m3u8 ttl-in-cache=5d
- url_regex=.* scheme=https ttl-in-cache=1h
- 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, 惊群配置与拥塞控制,其他的如果没有特殊需求可以不用设置。
有任何疑问欢迎在这里或者在我博客上留言哈,如需转载请注明原文链接。谢谢大家!
|