我在调研ATS 4.2.3挂载SSD的过程中,遇到很多坑,特此详细记录我摸索的主要过程,以便大家以后避免之。
基本思路可以完全照搬参考文献[2][3]

下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区。
首先需要认识我们的Linux服务器的硬件配置和软件情况
硬件配置:
DELL R720 2U服务器
CPU  8核 Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
内存 32G
硬盘  系统盘 /dev/sda 300GB
      ssd /dev/sd{b,c} 240GB * 2
      普通磁盘 /dev/sd{d-l}  2TB * 9
软件配置:
操作系统 CentOS release 6.3 (Final)
内核     2.6.32-279.el6.x86_64
注意:我们这里仅是测试,只使用两块2TB普通SAS磁盘和一块240G SSD来供ATS测试,其他盘都没有使用。

1.磁盘格式化问题
使用SSD作为interim cache缓存中间层解决方案,需要磁盘和SSD完全是裸盘,也就是不要分区和格式化。
如果是全新盘,可以不做任何操作,如果不是全新盘,需求删除所有分区,下面的bash脚本create_partition.sh实现了fdisk分区的功能,并创建了一个分区,后来又使用另一个脚本delete_partition.sh删除了这个分区,最后得到了所谓的裸盘。
希望你有更好的方法得到一个裸盘。脚本create_partition.sh的内容
#!/bin/bash
fdisk $1<<EOF
d
n
p
1
1

t
83
w
EOF
另一个脚本delete_partition.sh的内容
#!/bin/bash
fdisk $1<<EOF
d
w
EOF
使用方法是:如果要将SAS或是SSD磁盘/dev/sdl变为裸盘,运行
sh create_partition.sh /dev/sdl
sh delete_partition.sh /dev/sdl
就可以了。对于一个主流的服务器来说,如果只想使用其中的两块磁盘,可以对它们分别执行上面的操作。当然,如果是线上环境,这个方法还待改进。

2.创建新用户并管理裸设备
这一步非常关键,关系到后面步骤的顺利性,故拿到前面来做。
新建用户
useradd -s /sbin/nologin tserver
我们打算将tserver作为ATS所在的user和group名称。使用如下命令检测用户组是否创建成功
cat /etc/passwd |cut -f 1 -d :
增加如下设备文件
vim /etc/udev/rules.d/99-ats.rules 
将你要管理的裸设备都添加到里面,包括SSD和SAS,我这里使用了两块2TB普通SAS磁盘和一块240G SSD,所以如下设置
KERNEL=="sdk",MODE="0660",OWNER="tserver",GROUP="tserver"
KERNEL=="sdl",MODE="0660",OWNER="tserver",GROUP="tserver"
KERNEL=="sdb",MODE="0660",OWNER="tserver",GROUP="tserver"
保存退出后,更新设备信息
start_udev
验证改动是否成功,查看
ll /dev/sd[bcdefghijkl]

3.下载并安装好ATS 4.2.3
我们打算将ATS安装到/opt/ats下面,并使用tserver作为用户和组来管理它。ATS安装时会自动创建该安装目录,同时为了内网测试方便,采用debug版本,线上可以去掉
3.1.安装依赖包
yum install gcc gcc-c++ pkgconfig pcre-devel tcl-devel expat-devel openssl-devel -y
yum install perl-ExtUtils-MakeMaker -y
yum install libcap libcap-devel hwloc hwloc-devel -y
yum install libunwind libunwind-devel -y
yum install autoconf automake libtool -y
yum install git -y

3.2.下载并解压
cd /usr/local/src
wget -d "http://mirror.bit.edu.cn/apache/trafficserver/trafficserver-4.2.3.tar.bz2"
tar -jxvf trafficserver-4.2.3.tar.bz2 
cd trafficserver-4.2.3

3.3.编译和安装
./configure --prefix=/opt/ats --with-user=tserver --with-group=tserver --enable-reclaimable-freelist --enable-interim-cache --enable-debug
make -j 8
make install -j 8
这里指定安装前缀的好处是,如果安装失败,可以直接删除掉ats文件夹,再重新编译和安装。

4.配置
主要有这几个文件需要配置:
records.config,storage.config,logs_xml.config
我要达到的效果是正向代理,裸盘,自定义日志等功能。
修改storage.config
添加
/dev/sdl
/dev/sdl
注意ssd的那块盘/dev/sdb一定不要添加,因为它不是数据盘,你把它视作内存就可以了。

修改records.cofig,将
LOCAL proxy.config.cache.interim.storage STRING NULL
改为
LOCAL proxy.config.cache.interim.storage STRING /dev/sdb
如果是正向代理测试,需要做如下配置
traffic_line -s proxy.config.reverse_proxy.enabled -v 0
traffic_line -s proxy.config.url_remap.remap_required -v 0 #1为只反向代理,0为正向+反向代理
traffic_line -s proxy.config.url_remap.pristine_host_hdr -v 0

traffic_line -s  proxy.config.http.insert_request_via_str -v 1    
traffic_line -s  proxy.config.http.insert_response_via_str -v 2   #会产生类似Via:http/1.1 localhost (ApacheTrafficServer/4.2.3 [cHs f ])的头
traffic_line -s proxy.config.http.cache.required_headers -v 0     #配置在源服务器没有定义缓存的情况缓存文件
traffic_line -s proxy.config.http.cache.enable_default_vary_headers -v 1
traffic_line -s proxy.config.cache.ram_cache_cutoff -v 40960      #非常关键,确定缓存命中是在RAM cache还是SSD中

根据硬件配置设置RAM cache的大小,一般是物理内存的1/2或1/3为宜,我这里采用默认配置-1,就是让系统自动分配。
CONFIG proxy.config.log.custom_logs_enabled INT 1
CONFIG proxy.config.log.squid_log_enabled INT 0
CONFIG proxy.config.log.xml_config_file STRING logs_xml.config
其中,logs_xml.config文件内容如下
<LogFormat>
  <Name = "access"/>
  <Format = "%<cqtq> %<ttms> %<pssc> %<sssc> [%<cqtt>] %<{X-Forwarded-For}cqh> \"%<cqtx>\" %<psql> \"%<pqsi>\" %<crc>:%<phr> %<{Referer}cqh> \"%<{User-Agent}cqh>\" %<psct>"/>
</LogFormat>
<LogObject>
  <Format = "access"/>
  <Filename = "access"/>
</LogObject>

5.添加环境变量
echo "export PATH=/opt/ats/bin:$PATH" >> /etc/profile
更新配置文件
source /etc/profile
再次确认环境变量是否添加成功
echo $PATH
这样的话,在命令行直接运行trafficserver start就可以识别了。

6.安装tsar并监控
需要能够监控ATS,特别是ssdhit选项,参见博文
http://blog.csdn.net/tao_627/article/details/44808637
安装好tsar后直接使用如下命令就可以看到了

tsar --ts_cache -l i 2

7.启动查看状态
trafficserver start
查看

echo "show:cache-stats" | traffic_shell

在diags.log中的显示如下:
也已经说明我们指定的/dev/sdl已经被自动加载了
另外,进入到日志目录下面,查看访问日志
cd /opt/ats/var/log/trafficserver
如果没有自定义日志文件格式,就是默认的squid日志,采用下面的命令查看
traffic_line -f squid.log
如果自定义了日志的文件格式,就直接查看
tail -f access.log
也可以查看traffic_server和traffic_manager进程的日志信息,或者是控制台信息
tail -f traffic.out
如果允许过程中有段错误,这里将会显示出来

8.说明
a.磁盘的格式化非常关键,经过测试,可以使用未分区的裸盘,也可以使用mkfs.ext4命令格式化的伪裸盘都可以,但建议使用纯粹的裸盘
b.普通硬盘和SSD的格式化和加载完全一样处理,可以在线上分批多次添加裸盘或是SSD,以前加载的磁盘不会再格式化,只会对新添加的磁盘做处理,所以已有的缓存数据应该不会损坏。但是对storage.conf的配置更新必须重启ATS,简单使用traffic_line -x并不凑效
c.线上服务器的硬盘配置都需要在storage.conf文件中明确指定,如果你有12块磁盘,但是只在storage.conf中指定4块,它就只会使用4块,也就是说,用几块就指定几块。

d.ssd的配置项proxy.config.cache.interim.storage可以在线更新,但是需要先traffic_server -Cclear清空缓存再执行traffic_server start重建索引,都需要很长时间处理

traffic_line -s proxy.config.cache.interim.storage -v NULL

e.每次关闭服务器,下次打开服务器时,需要使用traffic_server -Cclear清空缓存,在开启ATS,否则会有段错误。运行过程中的ATS重启不存在这个问题
f.tsar没有ATS的监控数据或者ssdhit没有数据,请检查tsar编译时注意修改正确mgmtapisocket路径和interim相关的配置项
g.ssdhit数据很小,但是ramhit数据很大,这是因为records.config中的proxy.config.cache.ram_cache_cutoff选项造成的,为了压测ssd性能,请尽量调大这个选项,并使用较大的请求样本压测,jtest中就是设置-q参数,比如
  ./jtest -P 10.10.110.81 -p 8080 -S ts.cn -s 9080 -z 1.0 -D 9080 -k 2 -c 500 -Z 1000 -q 100000000
h.使用SSD会极大改善缓存命中效果,并显著提升ATS的QPS指标,建议线上尽量使用
i.不要将ssd添加到storage.config中,它不是数据磁盘,但是应该将它添加到/etc/udev/rules.d/99-ats.rules中来设置正确的用户组和权限

参考文献
[1].https://cwiki.apache.org/confluence/display/TS/CentOS
[2].http://www.huilinwang.com/blog/post/425.html 
[3].http://www.shencan.net/index.php/2012/09/08/trafficserver-%e4%bd%bf%e7%94%a8%e8%a3%b8%e7%9b%98%e9%85%8d%e7%bd%ae/ 
[4].https://blog.zymlinux.net/index.php/archives/906

在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3挂载SAS硬盘和SSD相关推荐

  1. 在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3

    这篇博客是我整理的内网开发环境的ATS安装文档,以便日后参考. 下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区. 1.新建用户 useradd -s /sb ...

  2. 在CentOS 6.3 64bit上安装FTP服务器vsftpd 2.2.2

    vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序.特点是小巧轻快,安全易用.并且是一个完全免费开放源码的ftp软件 根据业务需要,要求支持ftp和sftp,我需要在Linux上架设一个 ...

  3. 在CentOS 6.6 64bit上安装Python 3.5.0

    python 3在官网的最新版本是3.5.0,下面是我在CentOS 6.6 64bit上的安装过程实操: 1.下载python 3源码 # cd /usr/local/src/ # wget htt ...

  4. 在CentOS 6.6 64bit上安装截图软件shutter

    系统自带的截图软件功能太有限,如何才能在CentOS 6.6 x86_64上安装shutter截图软件呢? 网上一些方法都不是很详细,无法安装成功,下面是我摸索的结果,记录如下: 问题:我想要在我的C ...

  5. 在CentOS 6.9 64bit上安装jdk1.8

    因为工作需要使用到ActiveMQ,它是Java语言实现的,所以需要事先安装Java集成环境,下面是我的实操过程,记录如下,参考了文末两篇链接. 一.系统环境说明 rMBP上的VMware Fushi ...

  6. 在CentOS 6.3 64bit上安装ATS 5.3 LTS版本并测试

    由于ATS 5.3是社区刚推出的LTS最新版本,比以前的版本改动幅度相当大,所以我决定抛弃以前的经验,从零开始探索该版本.下面是我的摸索实录. 1.下载源码 cd /usr/local/src wge ...

  7. Ubuntu 12.04 64bit上安装Apache Traffic Server 4.1.2

    说明: 对于企业级服务器来说,一般是使用Redhat或是CentOS上来跑Apache traffic server作为代理缓存服务器, 一般使用Ubuntu的机会很少,我这里探讨安装在Ubuntu ...

  8. 在CentOS 6.6 64bit上安装Oracle VirtualBox 5.0.12

    VirtualBox是一款开源虚拟机软件(类似vmware).VirtualBox是由德国Innotek公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在Sun被Oracle ...

  9. 在CentOS 6.3 64bit上为Apache Traffic Server 4.2.3挂载SSD并压测

    下面的安装假定是以root用户身份进行的,Linux服务器已经安装好系统,磁盘已经做好分区. 首先需要认识我们的Linux服务器的硬件配置和软件情况 硬件配置: DELL R720 2U服务器 CPU ...

最新文章

  1. ubuntu 10.04 安装eclipse及其中文语言包
  2. 一张图看懂华为2018年年报
  3. 来自Yang Terry的关于SAP CRM One Order事件回调机制的分享
  4. oracle 每日归档量,小知识:统计Oracle的日归档量
  5. SQL Server CTE 递归查询全解
  6. 利用 50 行 Python 代码构建一个在线文本生成器!
  7. 台式电脑开机显示节电模式怎么办_台式电脑的开机密码忘记了怎么办?
  8. [Silverlight]实战WCF RIA gzip压缩
  9. 【资料搬迁】虚拟机安装CentOS
  10. 【系统分析师】考试内容大纲内容
  11. JAVA---线程生命周期及状态转换图
  12. UE4_编辑器UMG关闭窗口不能立刻销毁UMG
  13. longest-common-prefix[最长公共子序列]
  14. ebay的api的开发技术笔记
  15. latex的段落间距设置
  16. 如何更改计算机属性里面的配置文件,电脑中如何设置共享文件夹的属性防止被删除...
  17. html5中移动旋转缩放,HTML5 Canvas进阶(一):渐变,透明,移动,旋转,缩放
  18. 如何制作伪原创视频短视频伪原创软件
  19. JS sort函数(按照首字母字符排序)
  20. 申报高新技术企业认定哪些地方需要注意?

热门文章

  1. JavaScript--正则
  2. hadoop系统 hdfs 命令行操作
  3. AC日记——[Hnoi2017]影魔 bzoj 4826
  4. objective-c abort() 与 exit() 函数的区别
  5. 《帝企鹅日记》观后感
  6. SharePoint 2013 配置开发环境,需安装VS2012插件
  7. 挨踢项目求生法则-团队建设篇
  8. 计算机网络实验五,计算机网络(实验五).docx
  9. 对于数据库进行设计在PHP,关于数据库表的设计
  10. java中字符串后加Box_PDFBox添加多行文档