记录 - 给 ATS 打 Cache

记录给ATS做cache预热的方法

磁盘准备

  1. 4 块 SSD 硬盘, 480G
  2. 给4块硬盘分别做 RAID 0 (记住要初始化)
  3. 编辑udev rules 文件, 配置raw磁盘

    # Apache Traffic Server owns disk for RAW access
    
    ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
    ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
    ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
    ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
    
    KERNEL=="raw[1-4]", OWNER="nobody", GROUP:="trafficserver", MODE="660
    

    执行命令

    groupadd trafficserver
    start_udev
    

ats配置文件

records.conf

CONFIG proxy.config.http.push_method_enabled INT 1
CONFIG proxy.config.http.cache.when_to_revalidate INT 3
CONFIG proxy.config.http.cache.required_headers INT 0
CONFIG proxy.config.log.logfile_dir STRING /data/var/log/trafficserver

remap.conf

regex_map http://(.*) http://$1
regex_map http://(.*):8080 http://$1

storage.conf

/dev/raw/raw1 
/dev/raw/raw2 
/dev/raw/raw3 
/dev/raw/raw4 

ip_allow.config

src_ip=192.168.5.151                             action=ip_allow method=ALL

开始执行

创建日志目录

mkdir -p /data/var/log/trafficserver

Clear Cache

traffic_server -Cclear

Run Manager

traffic_manager 

日志查看

traffic_logcat -f squid.blog

自动生成URL

sh gen_urls.sh

运行py脚本

sh ats_cache.sh

补充

由于该脚本频繁创建、关闭连接,导致系统出现很多TIME_OUT,用光了系统可用端口,故,
修改两个内核参数,
如下:
    #开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用
    echo 1 > /proc/sys/net/ipv4/tcp_timestamps
    #表示开启TCP连接中TIME-WAIT sockets的快速回收
    echo 1 > /proc/sys/net/ipv4/ipv4.tcp_tw_recycle

相关shell脚本代码

git clone git@github.com:khalily/ats-cache.git

参考资料

  1. RAID 磁盘阵列详解
  2. raw 磁盘详解
  3. ATS raw磁盘布局
  4. ATS Sample config