熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Squid+MRTG實現完善的緩存代理和http服務加速代理

2013-11-13 15:51:39  來源: Oracle 

  Squid是一種源代碼開放的高性能代理緩存服務器它可支持FTPgopher和Http數據對象的代理另外Squid也支持SSL多樣化訪問控制和代理請求的完整日志功能通過輕量級的網際緩存協議Squid以網狀或層次的方式分配內存這樣能節省額外的帶寬提供Http服務加速代理Web服務器把Http數據推到Squid緩存中外界的請求訪問可以通過緩存提取所需數據實現Web服務器的動態鏡像
  另外為了實現對Squid服務器的監控采用MRTGMRTG 是 Multi Router Traffic Grapher 的縮寫它主要的用途是監測網絡服務設備的流量並生成包括圖片的HTML文件可以直觀的顯示網絡服務的流量以提供Squid緩存服務的監測
  通過Squid+MRTG可以配置一個完善的代理服務提供方案下面為具體配置步驟
  一.基礎准備
  Squid下載地址
  版本squidSTABLEsrctargz
  MRTG下載地址~oetiker/webtools/mrtg/pub/
  版本mrtgtargz
  機器配置為M內存G硬盤(其中G分區專用緩存目錄)PII
  
  二.安裝步驟
  解壓Squid(一般做法把軟件包括在/opt目錄下)
  #tar zxvf squidSTABLEsrctargz
  #cd squid
  //進行編譯
  #/configure prefix=/usr/local/squid enabledelaypools enablesnmp enablecachedigests enableauthmodules=NCSA
  #make all
  #make install
  *對編譯項目的解釋
  prefix 為編譯Squid所存放的目錄這裡為/usr/local/squid
  enabledelaypools 此選項使能一個延時池這樣能對某些特定的請求限制額定帶寬
  enablesnmp 此選項可以讓MRTG使用SNMP協議對服務器的流量狀態進行監測因此必須選擇此項使Squid支持SNMP接口
  enablecachedigests 使能緩存摘要本來此項目的是為了在Squid集群服務之間迅速發現緩存對象這裡在本地使用可以加快請求時檢索緩存內容的速度
  enableauthmodules 此編譯選項啟用認證模塊可以對訪問代理用戶進行授權
  
  安裝MRTG
  #tar zxvf mrtgtargz
  #cd mrtg*
  #/configure prefix=/usr/local/mrtg
  #make
  #make install
  /* 幾點說明
  .MRTG大部分程序是用Perl腳本寫成需要Perl版本為以上才能運行RH 帶有perl版本為v非常滿足要求(如果版本不夠請到下載安裝
  .MRTG需要zlibgd和libpng三個處理圖形的庫支持RH滿足此要求(如果沒有安裝請到下載安裝)
  
  三.具體配置
  lSquid配置(僅對必要選項配置並說明)
  http_port
  此選項用於Squid代理所偵聽的端口由於要實現Http加速代理則偵聽端口
  tcp_outgoing_address
  此句法指定了遠程服務器的IP地址這裡我們使用來指定為所有地址
  tcp_incoming_address
  這裡可以使用http_port語法進行綁定端口和IP地址表示客戶端的請求可以不使用
  cache_mem MB
  由於Squid在讀寫磁盤I/O通道數據轉貯等需要大量內存我們可以把內存值稍微設置大一些這樣可以提供服務器性能
  
  cache_swap_low
  這用做表示緩存內部對象的替換的衡量基線當交換分區的磁盤利用率超越這個基線那麼緩存對象替換也就隨之開始這裡是用百分率做衡量標准
  
  cache_swap_high
  此標記用於緩存對象替換的最高程度當交換分區磁盤利用率接近此設置則表示對象的更新程度更為劇烈這裡由於我的緩存區設置比較大因此設置為%
  
  下面幾個配置標記采用系統默認配置
  { maximum_object_size KB
  { 超過此尺寸的對象將不緩存
  { minimum_object_size KB
  { 小於此尺寸的對象將不緩存
  { maximum_object_size_in_memory KB
  { 內存中能緩存的最大對象尺寸
  { ipcache_size
  { 指定IP緩存大小
  { ipcache_low
  { 緩存IP地址的最低基線
  { ipcache_high
  { 緩存IP地址的最高極限
  { fqdncache_size
  { 緩存DNS全域名解析的尺寸
  
  cache_replacement_policy lru
  此標記用於當緩存新對象時使用緩存策略來清除緩存中特定對象這裡使用lru表示它只替換長時間沒有被訪問過的對象其他策略請參看配置文檔介紹
  
  memory_replacement_policy lru
  此用法同上區別在於替換內存對象
  
  cache_dir ufs /cache
  設置緩存根目錄為/cache類型為ufs緩存區大小為G可以有個二級子目錄每有二級目錄有個三級子目錄
  
  cache_access_log /var/log/squid/accesslog
  cache_log /var/log/squid/cachelog
  cache_store_log /var/log/squid/storelog
  cache_swap_log /var/log/squid/swaplog
  上面幾項是緩存日志記錄的路徑和文件名
  
  log_ip_on_direct on
  記錄客戶端主機的IP地址
  
  log_fqdn on
  記錄全DNS域名解析
  
  mime_table /usr/local/squid/etc/nf
  Squid所用mime的文件路徑
  
  pid_filename /usr/local/squid/logs/squidpid
  Squid進程ID的文件
  
  ftp_user
  這裡可以使用匿名登陸FTP服務器
  
  ftp_list_width
  FTP文件列表長度超過長度則截斷文件名
  ftp_passive on
  允許主動連接FTP服務器
  
  dns_nameservers
  指定代理的域名解析服務器
  
  authenticate_program /usr/local/squid/bin/ncsa_auth
  /usr/local/squid/etc/passwd
  代理認證程序這裡在/usr/local/squid/etc使用htpasswd產生一個密碼文件具體方法如下
  #htpasswd –cdb passwd auth_usr pass
  #htpasswd –db passwd auth_usr pass
  #htpasswd –db passwd auth_usr pass
  創建passwd文件並添加auth_usrauth_usrauth_usr三個認證用戶
  
  authenticate_children
  所需要要產生的認證進程數
  
  authenticate_ttl
  此標記設置認證保持時間
  
  authenticate_ip_ttl
  此標記設置認證綁定IP地址的時間長度
  
  authenticate_ip_ttl_is_strict on
  此標記可在authenticate_ttl時間內拒絕其他非認證IP地址訪問
  
  request_header_max_size KB
  request_body_max_size MB
  設置了Http請求的包頭和數據大小
  
  request_body_max_size
  這裡請求所返回的數據大小為意義為沒有任何限制
  
  connect_timeout seconds
  read_timeout minutes
  request_timeout seconds
  上面幾項是代理服務幾個超時設置這裡使用配置文件默認值
  
  下面是訪問控制列表一些配置這裡對訪問的IP地址域名訪問類型極其訪問代理的權限做的限制
  acl acldomain dstdomain
  acl acceleratedport port
  acl acceleratedhost dst /
  acl aclprotocol proto HTTP FTP
  acl aclmethod method GET POST
  
  acl aclauth proxy_auth required
  (注這裡使用required表示任何passwd文件中存在的合法用戶才授予訪問權限
  
  acl aclsnmp snmp_community secrect
  MRTG可以使用snmp協議檢測此代理服務運行狀態
  
  acl aclconn maxconn
  可並行連接的最大數量
  
  啟用定義的訪問控制列表
  http_access allow manager localhost
  http_access deny manager
  http_access allow aclauth
  http_access allow acceleratedport acceleratedhost
  http_access deny all
  
  下面為緩存管理設置
  cache_mgr
  設置緩存管理者的接受郵件地址
  
  cache_effective_user squidusr
  cache_effective_group squidgrp
  設置執行Squid的用戶和用戶組
  {注設置用戶和用戶組及其權限修改方法如下
  #groupadd squidgrp
  #useradd –g squidgrp –d /home/squidusr squidusr
  修改log日志權限屬性使squidusr有寫權限
  #chown squidusr /var/log/squid
  #chgrp squidgrp /var/log/squid
  #chown squidusr /var/log/squid/*log
  #chown squidgrp /var/log/squid/*log
  }
  
  下面配置Http服務加速代理
  
  httpd_accel_port
  httpd_accel_with_proxy on
  (注如果配置代理和加速服務必須httpd_accel_with_proxy選項打開如果需要配置多個加速可以使用虛擬的概念)
  
  snmp_port
  此標記設置snmp_port端口為可以使MRTG監測服務運行狀態
  
  snmp_access allow aclsnmp localhost
From:http://tw.wingwit.com/Article/program/Oracle/201311/17413.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.