一、ATS简介
Apache Traffic Server™ 是一种高性能 Web 代理缓存,可通过在网络边缘缓存经常访问的信息来提高网络效率和性能。这使内容在物理上更接近最终用户,同时实现更快的交付和减少带宽使用。Traffic Server 旨在通过最大化现有和可用带宽来改善企业、Internet 服务提供商 (ISP)、骨干提供商和大型 Intranet 的内容交付。
官方网站:https://trafficserver.apache.org/
二、安装
1、系统优化
1、优化Linux参数
cat << 'EOT' >> /etc/sysctl.conf
fs.file-max=655350
net.ipv4.tcp_max_tw_buckets = 300000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 32768
net.core.rmem_default=98304
net.core.wmem_default=98304
net.core.rmem_max=2097152
net.core.wmem_max=2097152
net.ipv4.tcp_rmem=4096 98304 2097152
net.ipv4.tcp_wmem=4096 98304 2097152
net.ipv4.tcp_low_latency=1
net.ipv4.tcp_slow_start_after_idle=0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_syncookies = 0
#net.ipv4.tcp_tw_len = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.ip_local_port_range = 1024 65000
EOT
sysctl -p /etc/sysctl.conf
2、修改文件最大打开数
cat << 'EOT' >> /etc/security/limits.d/nofile.conf
* soft nofile 655350
* hard nofile 655350
EOT
cat <<EOF>>/etc/rc.local
#open files
ulimit -HSn 655350
#stack size
ulimit -s 655350
EOF
3、安装ATS必须的环境
yum install -y gcc gcc-c++ pkgconfig pcre-devel tcl-devel expat-devel openssl-devel perl-ExtUtils-MakeMaker bzip2
yum install -y libcap libcap-devel hwloc hwloc-devel ncurses-devel libcurl-devel libunwind libunwind-devel autoconf automake libtool
yum -y install git gcc gcc-c++ autoconf automake libtool pkgconfig pcre-devel tcl-devel expat-devel openssl-devel xz-devel boost-devel perl-ExtUtils-MakeMaker libcap libcap-devel hwloc hwloc-devel libunwind libunwind-devel curl curl-devel ncurses ncurses-devel
yum install centos-release-scl -y
yum install devtoolset-6-gcc* -y
scl enable devtoolset-6 bash
2、编译安装
# wget http://archive.apache.org/dist/trafficserver/trafficserver-9.2.0.tar.bz2
# bzip2 -d trafficserver-9.2.0.tar.bz2
# tar xf trafficserver-9.2.0.tar
# cd trafficserver-9.2.0
./configure --prefix=/opt/ts --with-user=ats --with-group=ats --enable-example-plugins --enable-experimental-plugins
make -j $(nproc)
make install
3、yum安装
安装软件源
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh epel-release-latest-7*.rpm
确保将版本号替换为适合您系统的值。一旦你安装了 EPEL,你就可以安装 Traffic Server 本身。
yum -y install trafficserver
4、常用的命令
# 启动
trafficserver start
# 关闭
trafficserver stop
# 重启
trafficserver restart
# 重载配置文件(很多情况下好像都没有生效)
traffic_ctl config reload
# 监控ats的状况 类似于top命令
traffic_top
# 清理所有缓存
traffic_server -Cclear
三、配置
我们将在以下部分中处理两个单独的配置方案。第一个是面向外部网站的性能增强缓存代理的最常见应用,一个透明的缓存反向代理,它将提交给它的所有请求转发到一个单一的源地址,并根据它们的缓存控制标头缓存响应(如以及当缓存控制标头不存在时针对特定内容类型的一些简单启发式方法)。
1、配置反向代理
最小的反向代理配置只需要更改几个配置文件,如果您按照上面从源代码安装/opt/ts/etc/trafficserver
中的说明配置了安装,这些文件都将位于目录中 。
1、启用反向代理
在records.yaml
配置文件中,确保已配置以下设置,如下所示:
ts:
http:
cache:
http: 1 # 启用代理 HTTP 请求的缓存
server_ports: 8080 8080:ipv6 # 这会将 Traffic Server 配置为将自身绑定到 HTTP 流量的端口8080,同时适用于 IPv4 和 IPv6
reverse_proxy:
enabled: 1 # 启用反向代理支持
url_remap:
pristine_host_hdr: 1
remap_required: 1 # 此设置会导致 Traffic Server 保持Host:客户端请求标头的完整性,这在您的源服务器可能正在执行基于域的虚拟主机或根据该标头的内容采取其他操作的情况下是必要的。
2、配置主机及回源地址
使用此映射规则,Traffic Server 收到的所有带有 Host:www.acme.com
标头的路径都 将被代理到localhost:8080
map http://www.acme.com/ http://localhost:8080/
如果 Acme Widgets 决定使用 Traffic Server 来反向代理第二个域static.acme.com
,其源服务器与原始域不同,则他们需要进行进一步的更改,因为需要添加新的重映射行来处理其他域
map http://static.acme.com/ http://origin-static.acme.com/
如果他们还决定请求以www.acme.com
开头的路径 /api
到不同的源服务器。api 源服务器不应该得到/api
,他们会重新映射它。而且,由于上面的重映射规则捕获所有路径,因此此重映射规则需要在它之上:
map http://www.acme.com/api/ http://api-origin.acme.com/
有了这个重新映射规则,对的请求http://www.acme.com/api/example/foo
将被代理到http://api-origin.acme.com/example/foo
。
最后,如果 Acme Widgets 决定使用 https 保护他们的站点,他们将需要两个额外的重映射规则来处理 https 请求。Traffic Server 可以将入站 https 请求转换为对源的 http 请求。因此,他们会有额外的重映射规则,例如:
map https://www.acme.com/ http://localhost:8080/
map https://static.acme.com/ https://origin-static.acme.com/
3、调整缓存参数
默认的 Traffic Server 配置将提供 256 MB 的磁盘缓存,位于 var/trafficserver/
您的安装前缀下方。您可能希望调整此缓存的大小和位置中的一个或两个。这是通过 storage.config
配置文件完成的。在我们的示例中,Acme Widgets 在其缓存服务器上有一个专用的大型存储池,该存储池安装在/cache
. 要使用它并禁用默认缓存存储设置,以下将是唯一的条目storage.config
:
/cache/trafficserver 500G
2、配置转发代理
使用 Traffic Server 配置转发代理稍微简单一些,尽管有两种主要方法可以通过代理引导客户端流量:显式或透明。
1、启用转发代理
与反向代理相反,在反向代理中,您有一个定义的要代理(和可选缓存)的原始服务器列表,正向代理用于代理(和可选缓存)任意远程主机。因此,以下设置records.yaml
是最小转发代理的基本配置:
ts:
http:
cache:
http: 1 # 启用代理 HTTP 请求的缓存
url_remap:
remap_required: 0 # 在 Traffic Server 将请求代理到远程主机之前,禁用重映射规则存在并匹配传入请求的要求。
如果您的安装将是严格的转发代理,则应明确禁用反向代理
ts:
reverse_proxy:
enabled: 0
评论区