Squid Proxy Server 之架設

Reviews
Shared by: vixycn
Stats
views:
72
rating:
not rated
reviews:
0
posted:
10/9/2009
language:
0
pages:
0
Squid Proxy Server 之架設 國立中山大學資訊工程研究所 梁明章 目錄        一、硬體設備之選擇 二、作業系統之選擇 三、Proxy Server 之選擇 四、簡易安裝、設定與維護 五、進階:Squid 之架構原理與聯合運作 六、進階:增進效能的方法 七、進階:自動維護的方式 一、硬體設備之選擇  選擇重點:  記憶體與硬碟:    512MB Ram 搭配 45GB 硬碟 負荷越高、使用者越多的 Proxy 頇降低硬碟容量 反之,較輕鬆的 Proxy 可以用較少記憶體配較大的硬碟量 硬碟單顆容量不要太大,4 ~ 9GB即可,轉速要快 每個分割區大小適中(建議 2 ~ 4GB) 可以的話,多用幾張SCSI卡分散硬碟,加快IO處理速度  IO速度:     CPU  不一定要超級快,但是多顆會比單顆好,尤其是用Multi Threads的時候,多顆CPU會特別有效  中山proxy配備詳細規格(自組PC)      MainBoard: ASUS P2BD CPU: Intel PentiumII 450 (x2) RAM: 168Pin SDRAM 256MB (x4) SCSI: AHA2940UW (x2) HD: IBM-DDRS39130 (x7)  以上僅供參考,非廣告,請自行選購搭 配穩定之配法。 二、作業系統之選擇  三種免費的Unix可選擇:    Linux(建議 RedHat 6.0 以上,架構較大) FreeBSD 3.x Solaris 8 x86   若是主機有多顆CPU的話,建議採用Multi Threads最穩定成熟的Solaris8 若是主機僅有單顆CPU,Linux、FreeBSD速度 較快,但必頇注意各種極限值的放大 三、Proxy Server 之選擇  免費又強大的 Squid 2.x     現今世界上網路中心的 Proxy 多為 Unix 系 統,所採用的 Server 也以 Squid 居多,同 樣使用 Squid,設定搭配較為容易 使用者眾多、研究文獻多、經驗交流文章多 功能強大,可以做出許多複雜的功能組合以 及精密的控制 網路上關於 Squid 的各種分析器程式隨手可 得,有助於分析與研究 四、簡易安裝、設定與維護  1.取得 Source:  http://squid.nlanr.net/Squid/  http://ftp.nsysu.edu.tw/Unix/Proxy/squid/source/  2.版本辨識:    Squid-主版本.副版本-更新版次-src.tar.gz 更新版次順序(舊->新):Pre -> Stable -> Patch 範例(從舊到新):    Squid-2.1-patch2-src.tar.gz Squid-2.2-stable-src.tar.gz Squid-2.2-patch1-src.tar.gz  最好別使用發展中的 Pre、Dev 等版本  3.編譯與安裝:  cd /usr/local/src  gzip –d squid-2.3-stable2-src.tar.gz | tar xf –  cd squid-2.3-stable2  ./configure --help (以此參數看看有哪些編譯選項可以使用)  env CFLAGS='-O2 -mpentiumpro -mcpu=pentiumpro‘ ./configure --host=i686-pc-solaris2.8 --prefix=/home/squid --enable-dlmalloc --enable-gnuregex --enable-async-io=160 --enable-kill-parenthack --enable-cachemgr-hostname=proxy1.nsysu.edu.tw -enable-cache-digests --enable-err-language=Traditional_Chinese --enable-poll --disable-ident-lookups --enable-heap-replacement  make  make install  4.設定   cd /home/squid/etc ; vi squid.conf 範例可參考 http://proxy.nsysu.edu.tw/squid.conf  5.維護  關機或reboot必頇依照下列程序:    /home/squid/bin/squid –k shutdown tail /home/squid/logs/cache.log 確認 squid process 已正常exit System shutdown or reboot  Access.log 會非常大,尤其是區網中心的proxy,務必注 意剩餘空間,一旦log無法寫入,squid 會停住  /home/squid/bin/squid –k rotate 可以更換 log file  /home/squid/bin/squid –k reconfigure 可即時更新設定 五、進階:Squid 之架構原理與聯合運作  Squid 的基本概念  Squid server 之間的關係  Squid server 的架構  第一種 Loading Share 方式  第二種 Loading Share 方式 網頁 Proxy Only Group Proxy.kpp.edu.tw 163.28.130.1 Exchange Digest Table Proxy.kpp.edu.tw 163.28.130.2 Proxy.kpp.edu.tw 163.28.130.3 Exchange Digest Table Exchange Digest Table 下游的 Proxy End Users  目前中山的 Loading Share 方式 CCProxy1.nsysu.edu.tw Proxy1.nsysu.edu.tw Proxy2.nsysu.edu.tw CCProxy2.nsysu.edu.tw Proxy.nsysu.edu.tw CCProxy.nsysu.edu.tw 國內 國外 Proxy Auto Configure  目前中山的 Loading Share 方式 Proxy1.nsysu.edu.tw 的設定: cache_peer cache_peer cache_peer cache_peer cache_peer cache_peer proxy2.nsysu.edu.tw sibling 3128 3130 no-query proxy-only ccproxy1.nsysu.edu.tw sibling 3128 3130 no-query proxy-only ccproxy2.nsysu.edu.tw sibling 3128 3130 no-query proxy-only w3-cache1.nctu.edu.tw sibling 3128 3130 no-query no-netdb-exchange w3-cache2.nctu.edu.tw sibling 3128 3130 no-query no-netdb-exchange w3-cache3.nctu.edu.tw sibling 3128 3130 no-query no-netdb-exchange cache_peer_access proxy2.nsysu.edu.tw allow all cache_peer_access ccproxy1.nsysu.edu.tw allow all cache_peer_access ccproxy2.nsysu.edu.tw allow all cache_peer_access w3-cache1.nctu.edu.tw allow all cache_peer_access w3-cache2.nctu.edu.tw allow all cache_peer_access w3-cache3.nctu.edu.tw allow all 六、進階:增進效能的方法  最佳化編譯器    GCC(EGCS)or PentiumGCC GCC-2.95以上已經改為EGCS-2.95,如果CPU是Intel Pentium 以上,則PGCC的效能可能會較好,但是PGCC不一定會穩定, 因此,如果你的系統無法穩定的使用PGCC,請勿強求,使用 EGCS即可。 以上三種編譯器,皆可在下列位址取得Source  http://ftp.nsysu.edu.tw/Unix/GNU/ 因為頇與系統緊密契合,所以binary code移植性低,最好是在本 機進行編譯,且在本機使用 如果有某項周邊搭配不佳,會提高當掉的機率 系統管理者的功力會有很大的影響,必頇正確的做好最佳化編譯 器以及最佳化的系統環境,否則程式會容易當 穩定的話,盡量使用最佳化參數,如 -O2, -mpentiumpro 等等。  最佳化編譯器有幾個特點要注意:      調整作業系統環境  放大極限值:squid server 僅有一隻,因此,需要調大 fd_open num per process,如果使用MultiThreads,還要注意Threads上限  Solaris 8  Edit /etc/system 加入下列數行,reboot後即可生效  set maxusers=256  set rlim_fd_max = 8192  threads 上限不頇調整  Linux  修改/usr/src/linux/include/linux 下與極限相關的含括檔  limits.h : #define OPEN_MAX 4096 /* open files a process may have */  Rebuild kernel  FreeBSD 3.2以上 fd_open max 無限制  使用 Multi Threads    ./configure --enable-async-io=80 只要在編譯前的 configure 加入如上的選項,就可以啟動 Multi Threads 功能,後面的80表示提高threads數量到80個,此數字請自行參酌,請注 意,只有squid-2.3 以上才能在configure參數指定threads number, squid-2.2必頇修改source code的#define。 注意事項:  Squid 會詴圖使用 pthread lib,請先確定貴系統是否有此 lib,而且, pthread 穩定又成熟的Unix系統並不多,請特別注意觀察穩定性,若 是pthread不穩定,請考慮更換作業系統,或是不使用pthread,但是 如此一來多CPU主機也失去意義了。  目前大部分的系統雖然有 pthread lib,但是有些系統雖然可以在多 CPU的主機上執行,但是實際上並未妥善利用多CPU的資源,無法有 顯著的效能增進,必頇選擇能「真正」使用到多CPU的作業系統。  字串處理函式庫   Squid 大量使用字串處理做各種判斷,因此必頇使用更好的 regex lib, 推薦使用 GNU 的 GNUregex lib 在編譯前加此參數即可 link GNUregex  ./configure --enable-gnuregex  記憶體處理函式庫  Squid 為了快速反應 user reguest,在轉達檔案時是在RAM裡面做轉送, 因此常常在做 Memory Allocate & Free 的動作,所以,Memory Lib 的效 能對整體 Proxy 效能的影響非常大,推薦使用下列二種 Memory LIB:  GNUmalloc: source 在下列位址  http://ftp.nsysu.edu.tw/Unix/GNU/gnu/malloc.tar.gz ./configure --enable-dlmalloc  Dlmalloc: 在編譯前多加下列參數即可使用     以上兩者只能擇一使用,不能共用 GNUmalloc 擅長於常駐型 daemon 的記憶體配置與釋放,功能陽春但速度很快 Dlmalloc 具備一些 debug & status report 的便利,算是各方面表現皆中上的優秀函式庫  硬碟之規劃      每顆硬碟容量別太大,以免發生過度集中的現象 (建議別超過9GB) (此建議是針對沒有Raid的) 每個 Partition 別太小,會造成浪費,但是也別太大, 會使尋找檔案的速度變慢(建議在2~4GB之間) 最好一個 cache_dir 就是一個分割區,不要混在一起 系統、Swap、記錄檔所在的硬碟最好跟Cache資料 硬碟分開在不同硬碟上,不要互相干擾使用空間 以 Proxy 使用硬碟的方式,搜尋速度遠比直線存取 速度重要的多,所以建議轉速別太低,機械臂要能 忍耐極度頻繁的移動,所以發熱也大,頇選較低溫 的硬碟,以上為選購硬碟時的重點。  Cache_dir 的規劃  Cache 的一些演算式如下  Bucket數 = CacheDir * Level1_Dir * Level2_Dir  總檔案數 = Bucket * FilesPerBucket  檔案平均大小 = Cache總容量 / 總檔案數量  原則:      Level1 & Level2 的 Dir File Size 最好不超過 1024 Bytes,也就是說 每層目錄下不要有太多的子目錄或檔案。 Level1, Level2, FilesPerBucket 三個數字最好差不多大,才不會造成 某個數字偏大。 檔案平均大小無一定的決定規則,因使用者習慣而異,先估計出檔案 平均大小,再計算出總檔案數量,接著再去計算各層目錄與檔案數。 可以的話,盡量用16的倍數。 Bucket數量不要超過65536  Cache_dir 的規劃(舉例)       HD: 9GB * 7 Partition: 2.85GB(9GB / 3) Mean Object Size: 20KB 2850000/20 = 142500(file number per partition) 142500 = Level1 * Level2 * FilesPerBucket = 48 * 64 * 48 Buckets = partition * level1 * level2 = 21 * 48 * 64 = 64512 (buckets沒超過 65536,且48,64,48三個數字都不大,it’s nice)  其他重要原則  Cache 必頇一直維持著足夠的空間來容納新進入的檔案,否 則將使新檔堆積在RAM內而耗盡資源或大量swap,因此, Objects 的 expire 砍檔速度不能慢於新進檔案的成長速度,基 於這個理由,有下列方式可以嘗詴:  拉開cache容量的高水標與低水標     cache_swap_low 80 cache_swap_high 95 加快 LRU expire 的頻率 決定總檔案數量之後,可得到每個Partition內的檔案數量,再依 此format該partition的inode到適當的數量,過多、不足都不好。 parent 別設太多,設三四個效率好又擊中率高的友站即可,設多 了不只浪費頻寬,拖慢自己速度也拖慢別人   其他重要原則    Sibling的技術很重要,如果對方有允許抓取cache digest table,最好使用no-query選項,這樣對方沒 有的東西就不會用 ICP_QUERY 去問了。 盡量減少無法交換 cache digest table 的 sibling, 因為這種 sibling 只能用 ICP_QUERY。 Cache digest + no-query 的聯合應用,可以強制 proxy 只抓取 sibling 已經有的東西,不但節省頻寬, 且可省掉許多落空的 ICP_QUERY,也可提高 sibling 的 Hit Rate,一舉數得。

Related docs
Squid Server Linux Redhad 9
Views: 1  |  Downloads: 0
Proxy Server
Views: 42  |  Downloads: 1
squid-final
Views: 0  |  Downloads: 0
PROXY SERVER(2)
Views: 9  |  Downloads: 2
Squid-NTLM-ES
Views: 0  |  Downloads: 0
Proxy_server
Views: 218  |  Downloads: 17
Controlling Web Access with Squid
Views: 127  |  Downloads: 25
TALLER SQUID PROXY
Views: 0  |  Downloads: 0
CONFIGURACION DEL SERVIDOR PROXY SQUID
Views: 18  |  Downloads: 1
Proxy how to
Views: 0  |  Downloads: 0
premium docs
Other docs by vixycn