在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3挂载SAS硬盘和SSD
生活随笔
收集整理的這篇文章主要介紹了
在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3挂载SAS硬盘和SSD
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我在調(diào)研ATS 4.2.3掛載SSD的過程中,遇到很多坑,特此詳細記錄我摸索的主要過程,以便大家以后避免之。
基本思路可以完全照搬參考文獻[2][3]
下面的安裝假定是以root用戶身份進行的,Linux服務器已經(jīng)安裝好系統(tǒng),磁盤已經(jīng)做好分區(qū)。
首先需要認識我們的Linux服務器的硬件配置和軟件情況
硬件配置:
DELL R720 2U服務器
CPU ?8核 Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
內(nèi)存 32G
硬盤 ?系統(tǒng)盤 /dev/sda 300GB
? ? ? ssd /dev/sd{b,c} 240GB * 2
? ? ? 普通磁盤 /dev/sd{d-l} ?2TB * 9
軟件配置:
操作系統(tǒng) CentOS release 6.3 (Final)
內(nèi)核 ? ? 2.6.32-279.el6.x86_64
注意:我們這里僅是測試,只使用兩塊2TB普通SAS磁盤和一塊240G SSD來供ATS測試,其他盤都沒有使用。
1.磁盤格式化問題
使用SSD作為interim cache緩存中間層解決方案,需要磁盤和SSD完全是裸盤,也就是不要分區(qū)和格式化。
如果是全新盤,可以不做任何操作,如果不是全新盤,需求刪除所有分區(qū),下面的bash腳本create_partition.sh實現(xiàn)了fdisk分區(qū)的功能,并創(chuàng)建了一個分區(qū),后來又使用另一個腳本delete_partition.sh刪除了這個分區(qū),最后得到了所謂的裸盤。
希望你有更好的方法得到一個裸盤。腳本create_partition.sh的內(nèi)容
#!/bin/bash
fdisk $1<<EOF
d
n
p
1
1
t
83
w
EOF
另一個腳本delete_partition.sh的內(nèi)容
#!/bin/bash
fdisk $1<<EOF
d
w
EOF
使用方法是:如果要將SAS或是SSD磁盤/dev/sdl變?yōu)槁惚P,運行
sh create_partition.sh /dev/sdl
sh delete_partition.sh /dev/sdl
就可以了。對于一個主流的服務器來說,如果只想使用其中的兩塊磁盤,可以對它們分別執(zhí)行上面的操作。當然,如果是線上環(huán)境,這個方法還待改進。
2.創(chuàng)建新用戶并管理裸設備
這一步非常關(guān)鍵,關(guān)系到后面步驟的順利性,故拿到前面來做。
新建用戶
useradd -s /sbin/nologin tserver
我們打算將tserver作為ATS所在的user和group名稱。使用如下命令檢測用戶組是否創(chuàng)建成功
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安裝時會自動創(chuàng)建該安裝目錄,同時為了內(nèi)網(wǎng)測試方便,采用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一定不要添加,因為它不是數(shù)據(jù)盤,你把它視作內(nèi)存就可以了。
修改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 ? #會產(chǎn)生類似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 ? ? ?#非常關(guān)鍵,確定緩存命中是在RAM cache還是SSD中
根據(jù)硬件配置設置RAM cache的大小,一般是物理內(nèi)存的1/2或1/3為宜,我這里采用默認配置-1,就是讓系統(tǒng)自動分配。
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文件內(nèi)容如下
<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.添加環(huán)境變量
echo "export PATH=/opt/ats/bin:$PATH" >> /etc/profile
更新配置文件
source /etc/profile
再次確認環(huán)境變量是否添加成功
echo $PATH
這樣的話,在命令行直接運行trafficserver start就可以識別了。
6.安裝tsar并監(jiān)控
需要能夠監(jiān)控ATS,特別是ssdhit選項,參見博文
http://blog.csdn.net/tao_627/article/details/44808637
安裝好tsar后直接使用如下命令就可以看到了
7.啟動查看狀態(tài)
trafficserver start
查看
也已經(jīng)說明我們指定的/dev/sdl已經(jīng)被自動加載了
另外,進入到日志目錄下面,查看訪問日志
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.磁盤的格式化非常關(guān)鍵,經(jīng)過測試,可以使用未分區(qū)的裸盤,也可以使用mkfs.ext4命令格式化的偽裸盤都可以,但建議使用純粹的裸盤
b.普通硬盤和SSD的格式化和加載完全一樣處理,可以在線上分批多次添加裸盤或是SSD,以前加載的磁盤不會再格式化,只會對新添加的磁盤做處理,所以已有的緩存數(shù)據(jù)應該不會損壞。但是對storage.conf的配置更新必須重啟ATS,簡單使用traffic_line -x并不湊效
c.線上服務器的硬盤配置都需要在storage.conf文件中明確指定,如果你有12塊磁盤,但是只在storage.conf中指定4塊,它就只會使用4塊,也就是說,用幾塊就指定幾塊。
f.tsar沒有ATS的監(jiān)控數(shù)據(jù)或者ssdhit沒有數(shù)據(jù),請檢查tsar編譯時注意修改正確mgmtapisocket路徑和interim相關(guān)的配置項
g.ssdhit數(shù)據(jù)很小,但是ramhit數(shù)據(jù)很大,這是因為records.config中的proxy.config.cache.ram_cache_cutoff選項造成的,為了壓測ssd性能,請盡量調(diào)大這個選項,并使用較大的請求樣本壓測,jtest中就是設置-q參數(shù),比如
? ./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中,它不是數(shù)據(jù)磁盤,但是應該將它添加到/etc/udev/rules.d/99-ats.rules中來設置正確的用戶組和權(quán)限
參考文獻
[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
基本思路可以完全照搬參考文獻[2][3]
下面的安裝假定是以root用戶身份進行的,Linux服務器已經(jīng)安裝好系統(tǒng),磁盤已經(jīng)做好分區(qū)。
首先需要認識我們的Linux服務器的硬件配置和軟件情況
硬件配置:
DELL R720 2U服務器
CPU ?8核 Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz
內(nèi)存 32G
硬盤 ?系統(tǒng)盤 /dev/sda 300GB
? ? ? ssd /dev/sd{b,c} 240GB * 2
? ? ? 普通磁盤 /dev/sd{d-l} ?2TB * 9
軟件配置:
操作系統(tǒng) CentOS release 6.3 (Final)
內(nèi)核 ? ? 2.6.32-279.el6.x86_64
注意:我們這里僅是測試,只使用兩塊2TB普通SAS磁盤和一塊240G SSD來供ATS測試,其他盤都沒有使用。
1.磁盤格式化問題
使用SSD作為interim cache緩存中間層解決方案,需要磁盤和SSD完全是裸盤,也就是不要分區(qū)和格式化。
如果是全新盤,可以不做任何操作,如果不是全新盤,需求刪除所有分區(qū),下面的bash腳本create_partition.sh實現(xiàn)了fdisk分區(qū)的功能,并創(chuàng)建了一個分區(qū),后來又使用另一個腳本delete_partition.sh刪除了這個分區(qū),最后得到了所謂的裸盤。
希望你有更好的方法得到一個裸盤。腳本create_partition.sh的內(nèi)容
#!/bin/bash
fdisk $1<<EOF
d
n
p
1
1
t
83
w
EOF
另一個腳本delete_partition.sh的內(nèi)容
#!/bin/bash
fdisk $1<<EOF
d
w
EOF
使用方法是:如果要將SAS或是SSD磁盤/dev/sdl變?yōu)槁惚P,運行
sh create_partition.sh /dev/sdl
sh delete_partition.sh /dev/sdl
就可以了。對于一個主流的服務器來說,如果只想使用其中的兩塊磁盤,可以對它們分別執(zhí)行上面的操作。當然,如果是線上環(huán)境,這個方法還待改進。
2.創(chuàng)建新用戶并管理裸設備
這一步非常關(guān)鍵,關(guān)系到后面步驟的順利性,故拿到前面來做。
新建用戶
useradd -s /sbin/nologin tserver
我們打算將tserver作為ATS所在的user和group名稱。使用如下命令檢測用戶組是否創(chuàng)建成功
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安裝時會自動創(chuàng)建該安裝目錄,同時為了內(nèi)網(wǎng)測試方便,采用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一定不要添加,因為它不是數(shù)據(jù)盤,你把它視作內(nèi)存就可以了。
修改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 ? #會產(chǎn)生類似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 ? ? ?#非常關(guān)鍵,確定緩存命中是在RAM cache還是SSD中
根據(jù)硬件配置設置RAM cache的大小,一般是物理內(nèi)存的1/2或1/3為宜,我這里采用默認配置-1,就是讓系統(tǒng)自動分配。
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文件內(nèi)容如下
<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.添加環(huán)境變量
echo "export PATH=/opt/ats/bin:$PATH" >> /etc/profile
更新配置文件
source /etc/profile
再次確認環(huán)境變量是否添加成功
echo $PATH
這樣的話,在命令行直接運行trafficserver start就可以識別了。
6.安裝tsar并監(jiān)控
需要能夠監(jiān)控ATS,特別是ssdhit選項,參見博文
http://blog.csdn.net/tao_627/article/details/44808637
安裝好tsar后直接使用如下命令就可以看到了
tsar --ts_cache -l i 2
7.啟動查看狀態(tài)
trafficserver start
查看
echo "show:cache-stats" | traffic_shell
也已經(jīng)說明我們指定的/dev/sdl已經(jīng)被自動加載了
另外,進入到日志目錄下面,查看訪問日志
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.磁盤的格式化非常關(guān)鍵,經(jīng)過測試,可以使用未分區(qū)的裸盤,也可以使用mkfs.ext4命令格式化的偽裸盤都可以,但建議使用純粹的裸盤
b.普通硬盤和SSD的格式化和加載完全一樣處理,可以在線上分批多次添加裸盤或是SSD,以前加載的磁盤不會再格式化,只會對新添加的磁盤做處理,所以已有的緩存數(shù)據(jù)應該不會損壞。但是對storage.conf的配置更新必須重啟ATS,簡單使用traffic_line -x并不湊效
c.線上服務器的硬盤配置都需要在storage.conf文件中明確指定,如果你有12塊磁盤,但是只在storage.conf中指定4塊,它就只會使用4塊,也就是說,用幾塊就指定幾塊。
d.ssd的配置項proxy.config.cache.interim.storage可以在線更新,但是需要先traffic_server -Cclear清空緩存再執(zhí)行traffic_server start重建索引,都需要很長時間處理
? traffic_line -s proxy.config.cache.interim.storage -v NULL
f.tsar沒有ATS的監(jiān)控數(shù)據(jù)或者ssdhit沒有數(shù)據(jù),請檢查tsar編譯時注意修改正確mgmtapisocket路徑和interim相關(guān)的配置項
g.ssdhit數(shù)據(jù)很小,但是ramhit數(shù)據(jù)很大,這是因為records.config中的proxy.config.cache.ram_cache_cutoff選項造成的,為了壓測ssd性能,請盡量調(diào)大這個選項,并使用較大的請求樣本壓測,jtest中就是設置-q參數(shù),比如
? ./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中,它不是數(shù)據(jù)磁盤,但是應該將它添加到/etc/udev/rules.d/99-ats.rules中來設置正確的用戶組和權(quán)限
參考文獻
[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
總結(jié)
以上是生活随笔為你收集整理的在CentOS 6.3 64bit上安装Apache Trafficserver 4.2.3挂载SAS硬盘和SSD的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ATS cache中的几个数据结构图收集
- 下一篇: 在CentOS 6.3 64bit上安装