Apache Traffic Server服務搭建

1、簡介

  Apache Traffic Server(ATS或TS)是一個高性能的、模塊化的HTTP代理和 緩存服務器,與 Nginx 和 Squid 相似。它經過將頻繁訪問的信息緩存在網絡的邊緣來改善網絡的效率和性能,使得訪問內容在地裏上更接近終端用戶,在更快分發的同事也減小帶寬的佔用。 Apache TrafficServer 如今是一個 開源項目,開發語言爲C++。

2、功能

  Apache Traffic Server是個快速、可伸縮、可擴展、兼容於HTTP/1.1緩存代理的服務器,它具備以下特點:
緩存:改進響應時間的同時下降了服務器負載與對帶寬的需求,這是經過緩存而且重用常常請求的網頁、圖片和Web Service調用實現的。
代理:很容易添加持續鏈接、過濾器或異步內容請求,還能夠經過添加代理層實現 負載平衡
速度:在現代的SMP硬件上具備很好的可伸縮性,每秒鐘能夠處理數以萬計的請求。
可擴展性:API考慮到了自定義插件,能夠修改頭與內容,還能夠實現新的協議處理器。
可靠性:可以完美處理TB級別的數據,包括正向與 反向代理
 
3、ATS部署選項
  • 做爲一個反向代理
  • 做爲一個web代理緩存
  • 部署在多級緩存
 ATS做爲反向代理
  做爲反向代理,ATS須要配置爲用戶直接鏈接的源服務器(典型的用法是將源服務器的主機名解析到ATS),反向代理的功能也被叫作服務器加速。
 ATS做爲web代理緩存
  做爲web代理緩存,ATS接收用戶直接發往源站的web內容請求。若是ATS包含請求的內容,它將直接提供服務。若是請求的內容再也不緩存裏,ATS將做爲一個代理;爲用戶從源站服務器獲取請求的內容,並在本地保存一份拷貝以服務於未來相同的請求。
ATS做爲多級緩存
  ATS能夠靈活地參與多級緩存,當internet請求不能在一個緩存中獲得知足的時候,將被路由到其餘區域的緩存,從而利用附近緩存的內容。在一個多級代理中,ATS能夠做爲其餘ATS系統或者其餘類似的緩存產品的父節點或者子節點。
 
4、ATS安裝
#官網
https://trafficserver.apache.org/
安裝環境
yum install 'liblz*' -y
yum install net-tools -y
yum install gcc gcc-c++ glibc-devel -y 
yum install autoconf automake pkgconfig libtool -y 
yum install perl-ExtUtils-MakeMaker perl-URI.noarch -y 
yum install openssl-devel tcl-devel expat-devel -y 
yum install pcre pcre-devel zlib-devel xz-devel -y 
yum install libcap libcap-devel flex hwloc hwloc-devel -y 
yum install lua-devel curl curl-devel sqlite-devel bzip2 -y 
1.安裝pcre
[root@web_01 pcre-8.36]# wget http://ftp.exim.llorien.org/pcre/pcre-8.36.tar.gz 
[root@web_01 pcre-8.36]# tar xf pcre-8.36.tar.gz   
[root@web_01 pcre-8.36]# cd pcre-8.36 
[root@web_01 pcre-8.36]# ./configure --prefix=/usr/local/trafficserver/pcre 
[root@web_01 pcre-8.36]# make && make instal
2.安裝trafficserver
[root@web_01 ~]# cd /usr/local/src/
[root@web_01 src]# wget https://mirrors.aliyun.com/apache/trafficserver/trafficserver-5.3.2.tar.bz2
[root@web_01 pcre-8.36]# tar xf trafficserver-5.3.2.tar.bz2 
[root@web_01 pcre-8.36]# cd trafficserver-5.3.2  
[root@web_01 trafficserver-5.3.2]# ./configure --prefix=/usr/local/trafficserver --with-pcre=/usr/local/trafficserver/pcre --enable-example-plugins --enable-experimental-plugins
[root@web_01 trafficserver-5.3.2]# make  && make install
 注:--enable-example-plugins --enable-experimental-plugins 這兩條指令是爲了安裝ATS官方集成的插件
[root@web_01 trafficserver-5.3.2]# cd /usr/local/trafficserver/bin/
[root@web_01 bin]# ./trafficserver start
Starting Apache Traffic Server:                            [  Ok  

 5、Traffic Server進程管理css

[root@localhost ~]# ps aux|grep traffic
root      7469  0.0  0.0 129628  7248 ?        Ssl  04:57   0:02 /usr/local/tcacheserver/bin/traffic_cop
176       7472  0.0  0.0 501692 19660 ?        Sl   04:57   0:30 /usr/local/tcacheserver/bin/traffic_manager
176       7482 19.8 20.8 15253324 10279168 ?   Sl   04:57 118:31 /usr/local/tcacheserver/bin/traffic_server

 咱們能夠看到ATS服務啓動了三個進程(traffic_cop、traffic_manager、traffic_server)來服務ats請求,管理,控制、監控系統的健康狀況,以下圖1所述:html

 

  • traffic_server 進程是ATS的事務處理引擎。負責接收和處理協議請求以及從本地緩存或源服務器提供資源。
  • traffic_manager進程是用來命令和控制ATS的工具,負責啓動、監控以及從新配置端口、統計接口、集羣管理以及VIP故障轉移。

    若是traffic_manager進程檢測到traffic_server進程失敗,它不只會當即重啓該進程,並且會爲全部轉入的請求維護一個鏈接隊列。在traffic_server從新啓動前的幾秒內傳入的全部鏈接將被保存在一個隊列,並以FIFO的方式處理,這個鏈接隊列接收任何server故障重啓時的鏈接。c++

  • traffic_top進程監控traffic_server和traffic_manager進程的健康情況。

   traffic_top進程經過抓取合成web頁面的心跳請求方式週期性地(每分鐘若干次)查詢traffic_server和traffic_manager進程。若是失敗事件發生(若是在超過期間間隔內沒有收到請求或者收到錯誤的請求)traffic_top重啓traffic_server和traffic_manager。web

 簡單配置
#修改records.config文件
#25行
CONFIG proxy.config.http.server_ports STRING 80
#29行
CONFIG proxy.config.http.insert_response_via_str INT 2
#添加
CONFIG proxy.config.log.custom_logs_enabled INT 1
#添加
CONFIG proxy.config.log.xml_config_file STRING logs_xml.config
#添加
CONFIG proxy.config.diags.show_location INT 1

#修改remap.config文件添加以下:
regex_map http://(.*) http://$1

#修改logs_xml.config文件添加以下:
<LogFormat>
  <Name = "ats_access_log"/>
  <Format = "%<cqtd>/%<cqtt> %<cqhm> \"%<cquuc>\" %<pssc> %<ttms> %<cqhl> 
%<psql> %<crc> \"%<chi>\" %<pqsn> \"%<{Referer}cqh>\" \"%<psct>\" \"%<{User-agent}cqh>\"
 %<csssc> %<pqsi>"/>
</LogFormat>

<LogObject>
  <Format = "ats_access_log"/>
  <Filename = "access"/>
  <Protocols = "http"/>
  <RollingEnabled = "3"/>
  <RollingIntervalSec = "7200"/>
  <RollingSizeMb = "2048"/>
</LogObject>

#修改storage.config文件
var/trafficserver 4G

#重啓服務
[root@controller bin]# pwd
/usr/local/trafficserver/bin
[root@controller bin]# ./trafficserver restart
#測試
[root@controller bin]# curl -vx 127.0.0.1:80 -o /dev/null 'http://news.sohu.com/'
* About to connect() to proxy 127.0.0.1 port 80 (#0)
*   Trying 127.0.0.1...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to 127.0.0.1 (127.0.0.1) port 80 (#0)
> GET http://news.sohu.com/ HTTP/1.1
> User-Agent: curl/7.29.0
> Host: news.sohu.com
> Accept: */*
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 OK
< Content-Type: text/html;charset=UTF-8
< Content-Length: 170289
< Server: ATS/5.3.2
< Date: Fri, 01 Dec 2017 03:26:44 GMT
< Cache-Control: max-age=120
< X-From-Sohu: X-SRC-Cached
< FSS-Cache: EXPIRED from 9206494.16415464.10543436
< Accept-Ranges: bytes
< FSS-Proxy: Powered by 3308164.4618894.4645016
< Age: 0
< Proxy-Connection: keep-alive
< Via: http/1.1 controller (ApacheTrafficServer/5.3.2 [cSsSfU])
< 
{ [data not shown]
100  166k  100  166k    0     0   152k      0  0:00:01  0:00:01 --:--:--  152k
* Connection #0 to host 127.0.0.1 left intact

 查看運行狀況:sql

[root@controller bin]# ./traffic_top 

相關文章
相關標籤/搜索