首页 > 在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3挂载SAS硬盘和SSD

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

我在调研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<
d

n

p

1

1



t

83

w

EOF

另一个脚本delete_partition.sh的内容

#!/bin/bash

fdisk $1<
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文件内容如下



 

  % % % [%] %<{X-Forwarded-For}cqh> "%" % "%" %:% %<{Referer}cqh> "%<{User-Agent}cqh>" %"/>





 

 





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

更多相关:

  • nan 是not a number ,inf是无穷大 numpy.nan_to_num(x): 使用0代替数组x中的nan元素,使用有限的数字代替inf元素...

  • 简介 Simple Reference  基础CUDA示例,适用于初学者, 反映了运用CUDA和CUDA runtime APIs的一些基本概念.Utilities Reference  演示如何查询设备能力和衡量GPU/CPU 带宽的实例程序。Graphics Reference  图形化示例展现的是 CUDA, OpenGL,...

  • 在做开发的过程中难免需要给内核及下载的一些源码打补丁,所以我们先学习下Linux下使用如如何使用diff制作补丁以及如何使用patch打补丁。...

  • 该博文整理一些在使用stl编程过程中遇到的小经验: 1.在多线程环境下面打印调试,如何使用cout及时刷新到屏幕上? 在C中我们经常这样使用: printf("Hello World "); fflush(stdout); 如果使用stl,我们可以这样使用: cout << "Hello World" << endl <...

  • 由于ATS 5.3是社区刚推出的LTS最新版本,比以前的版本改动幅度相当大,所以我决定抛弃以前的经验,从零开始探索该版本。下面是我的摸索实录。 1.下载源码 cd /usr/local/src wget -d "http://mirror.bit.edu.cn/apache/trafficserver/trafficserv...

  • 转载自https://blog.zymlinux.net/index.php/archives/374 Apache Traffic Server的程序文件,与传统的服务器系统有大不同,这里我们将会对这些文件进行详细的解读,并尽可能的对程序的功能和基本用法、参数等进一步说明,以利于新入门的同学们快速上手。 本文中,我们以Fedor...

  • 下面的译文来自ATS官方交流博客中豪哥的一篇英文介绍,碰巧工作中又要用到,为了大家阅读方便,我特此翻译如下,不妥之处请指正: 说明: 慢速磁盘指普通的3.5寸硬盘,快速磁盘指ssd 缓存中间层 当我们考虑ATS的存储时,最原始的设计是支持具有相同容量的多块磁盘,(最适合没有做raid的块设备),由此构建分区,将每个分区...

  • 今天给主机加了一个希捷3TB硬盘,格式化是个头疼的问题,经过网上调研后,发现目前该问题已经被成功解决,现在使用希捷提供的DiscWizard可以成功解决。 下面记录一下我使用DiscWizard格式化2TB以上硬盘的基本过程。 1.首先从希捷官网下载并安装DiscWizard软件。 2.将3TB硬盘安装到主机上,并开启操作系统。...

  • df命令可以查看当前系统磁盘空间的使用情况 命令:df -h du -sh * 查看目录文件暂用磁盘大小 如果磁盘空间不够,需清理磁盘 磁盘速度测试,如果磁盘性能不好,性能测试数据会不准确(读写速度) 命令:dd if=/dev/zero of=/export/ddtest bs=8k count=1000000 oflag=dir...

  • 1. 磁盘的数据结构包括哪些内容?   答:分区,卷,磁盘分区,主分区,扩展分区,逻辑分区,逻辑驱动器,引导分区。 2. 什么是基本磁盘和动态磁盘?    (1) 基本磁盘和旧版本Windows操作系统中使用了相同的磁盘结构。    (2)动态磁盘功能最初发布于Windows2000,用于增强磁盘支持,在磁盘配置变动后需要重启动的次数...

  • 我们在重装好系统Win7系统后有时会碰到需要新建磁盘分区的情况,这时我们再重装系统进行磁盘分区就有些过于麻烦了,其实我们可以利用Win7系统自身的磁盘管理功能来新建一个磁盘分区。下面好系统重装助手就来介绍一下好系统Win7系统电脑磁盘新建分区的方法。 好系统Win7系统电脑磁盘新建分区的方法 1、右键点击我的电脑,选择管理,在计算机管...