歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix教程 >> 实例经验教程:

实例经验教程:

日期:2017/2/27 17:42:43   编辑:Unix教程

  一、對使用者的分析
  
  現有網絡情況:
  
  我校校園網通過光纜已將31座建築物連通,光纜總長度約15Km,絕大多數樓中實現結構化布線,連入校園網的網絡多媒體教室、教學基地、實驗室、機房等約有數十個,連網計算機達3000多台 。 我校目前出口有2個,一條速率為10M bps,通過光纖接入中國教育科研網CERNET,另一條速率為4M bps連入中國電信。
  
  用戶的需求:
  
  我校校園網的使用者主體為在校學生及老師。根據統計,約80%的用戶使用WWW、FTP等資源。我校現有Chinanet ip 126個,不可能分給所有的用戶使用。通過架設代理服務器來實現讓所有用戶使用網絡資源是最簡單並且相對安全和可靠的方法。通過架設專門的WWW(FTP)代理來滿足用戶的主要需求,通過架設socks5代理來滿足用戶的其他需求。
  
  二、硬件及軟件的選擇
  
  硬件
  
  Cache Server可以是一台普通的PC服務器加上cache軟件(如Squid、Inktomi)構成,也可以是軟硬件系統和一台專門的cache服務器。根據Chinanet出口的實際情況,4Mbps速率的出口,每秒最大傳入數據量為約500K/s。我校主干網節點間為雙千兆連接,到達部分實驗室是百兆,到達宿捨為10M。送出的最大數據量為約12M/s。傳送的數據量不是很大,使用傳統的IA32構架服務器既可滿足需求。我校網絡中心主機房使用機櫃來存放服務器。惠普公司的LH6000服務器,具有很強的擴展性,是新型的六路服務器。代理服務器的運算負荷不是很重,對於IO的要求較高。LH6000通過自定義配置可以達到這個要求。通過使用raid可以提高磁盤性能,增加數據的可靠性。代理服務器軟件占用內存較大。LH6000可以支持8GB內存。最終選擇配置如下:
  
  配置
  
  處理器:1個100MHz系統總線的Intel Pentium III Xeon 700MHz處理器
  內存:1G PC-133 ECC SDRAM
  磁盤控制器:集成具有32MB高速緩存雙通道Ultra3 SCSI HP NetRAID控制器
  附加單通道:Ultra Wide SCSI控制器
  內置存儲:熱插拔5x18G半高驅動器
  網卡:內置INTEL 82559 100M網卡
  電源:3個熱插拔電源
  
  RAID使用了RAID5模式,這個模式是向陣列中的磁盤寫數據,奇偶校驗數據存放在陣列中的各個盤上,允許單個磁盤出錯。RAID 5也是以數據的校驗位來保證數據的安全,但它不是以單獨硬盤來存放數據的校驗位,而是將數據段的校驗位交互存放於各個硬盤上。這樣, 任何一個硬盤損壞,都可以根據其它硬盤上的校驗位來重建損壞的數據。
  
  軟件
  
  Squid Internet Object Cache (Harvest Project的後續版本) 是美國政府大力助的一項研究計劃。Squid是一個開放源代碼的代理服務器軟件。它是一個為UNIX系統下運行的全功能的代理服務器軟件。它可以為HTTP協議、FTP協議以及其他使用URL方式定位的協議作緩存。它支持客戶端使用SSL協議進行數據傳送。它可以使用ICP, HTCP, CARP, Cache Digests等協議和方式和其他運行squid的服務器進行協同。它支持SNMP協議,可以用相應的軟件來做協調和管理。並且能配置詳細的訪問控制列表(acl)。
  
  操作系統
  
  以前學校的代理服務器使用linux作為操作系統。這是因為以前的代理服務器通常還兼作其他的服務器。很多服務器軟件是專門為linux開發的,或者在linux上運行的效率最高。Squid本身是為unix-like操作系統開發的。本身對系統沒有太多的要求。目前我校Chinanet代理服務器使用的是FreeBSD作為操作系統。
  
  沒有選擇Linux有下面幾點原因:
  
  Linux的核心部分開發相對比較開放,FreeBSD的核心是由一個嚴格的core team來完成的。相對檢查更加嚴格。從核心部分比較BSD的內核更加穩定。
  
  Linux對高負荷的承載能力不如FreeBSD。對於高負荷下程序出錯的容忍力,BSD遠強於Linux。
  許多著名的網站,如:yahoo, netease 等著名的商業網站使用的就是freebsd,穩定性和性能早已通過很多專家的評測,遠遠強於Linux。
  
  在著名的文章“Linux vs BSD: A Tale of Two System”中,是這樣評價Freebsd的: FreeBSD focuses on the Intel Architecture PC and server platforms, and on providing the best performance and stability possible. The DEC/Compaq Alpha is also supported.
  
  但是Freebsd也有不如Linux的弱點。主要表現在磁盤IO的性能上。這主要是因為Freebsd使用的文件系統—UFS的性能不如linux上使用的ext2/ext3。但是在加上softupdate之後會有很大的改進。而且出國代理上配置的使用raid5模式,磁盤使用高轉速scsi硬盤,在上述硬件配置的情況下,讀取squid cache的數k大小的小文件使用ext2和ufs+softupdate的效率的差別在萬分之一以下。對於負載數千用戶的代理服務器來說,可以忽略這樣的效率差別。
  
  基於以上原因,最終選用Freebsd作為代理服務器的操作系統。
  
  三、代理服務器軟件的安裝
  
  squid的安裝
  
  freebsd本身的ports程序帶有squid的穩定版本。目前squid的最新版本是2.4.STABLE6。在freebsd的/usr/ports/www/squid 目錄下執行make;make install就會將最新版本的squid代碼下載、編譯並最終安裝到/usr中的相應路徑中。
  
  Squid本身會被安裝到/usr/local/sbin下
  Squid的cache目錄默認為/usr/local/squid/cache
  Squid的log目錄默認為/usr/local/squid/logs
  squid的配置文件目錄默認為/usr/local/etc/squid
  
  這樣的安裝方式比直接使用二進制的package安裝要好。因為二進制的package不能保證在自定義的系統上穩定運行。下載源代碼代碼在本地進行編譯之前,首先會校驗源代碼的MD5 checksum,這樣能保證我得到的源代碼是未經修改過的版本。然後再在本地進行編譯。最後安裝到相應目錄。
  
  Squid的配置
  
  Squid的配置文件是squid.conf
  
  部分參數的配置如下:(為保證代理服務器安全,部分參數用*代替)
  
  http_port 8080 設置http代理端口為8080
  cache_peer pa.us.ircache.net sibling 3128 3130 login=*:*
  cache_peer sj.us.ircache.net sibling 3128 3130 login=*:*
  cache_peer * parent 13280 4827 htcp *:*
  
  這幾行是使用squid可以和其他幾台機器進行協同工作的特性,同幾台組成cache_peer。具體設置在後面的優化部分會解釋。
  
  cache_peer_domain * .edu.cn設置.edu.cn的域名使用某個cache_peer訪問
  cache_mem 400 MB設定內存cache的大小為400M
  cache_swap_low 80
  cache_swap_high 97這兩行是設置cache進行替換的閘值。當占用到97%的cache後,cache中的內容將被清空20%。
  maximum_object_size 20000 KB 最大對象大小為20M.
  maximum_object_size_in_memory 10000 KB 內存中最大的對象大小為10M
  ipcache_size 4096 ip對應cache的大小為4096
  fqdncache_size 4096 域名全稱cache的大小為4096
  cache_replacement_policy heap LFUDA cache替換策略
  memory_replacement_policy heap LRU 內存替換策略
  cache_dir ufs /usr/local/squid/cache 25000 16 256 cache存放的路徑大小及具體配置
  dns_nameservers * * * * * 內部指定dns服務器
  authenticate_program * * 身份認證程序
  authenticate_children 32 身份認證程序啟動的進程數目
  request_body_max_size 5 MB 最大請求的body大小
  reply_body_max_size 20 MB 最大回應的body大小
  acl all src 0.0.0.0/0.0.0.0
  acl dorm proxy_auth 192.168.0.0/255.255.0.0 REQUIRED
  acl bjpu proxy_auth 202.112.64.0/255.255.240.0 REQUIRED
  acl bjpu2 proxy_auth 211.71.80.0/255.255.240.0 REQUIRED
  
  訪問控制列表
  
  acl banned_sites {過濾的關鍵字}
  http_access deny banned_sites
  deny_info ERR_BANNED_SITE banned_sites
  
  禁止訪問違禁站點的設置
  
  acl manager proto cache_object
  acl localhost src 127.0.0.1/255.255.255.255
  acl SSL_ports port 443 563
  acl Safe_ports port 80 # http
  acl Safe_ports port 21 # ftp
  acl Safe_ports port 443 563 # https, snews
  acl Safe_ports port 70 # gopher
  acl Safe_ports port 210 # wais
  acl Safe_ports port 1025-65535 # unregistered ports
  acl Safe_ports port 280 # http-mgmt
  acl Safe_ports port 488 # gss-http
  acl Safe_ports port 591 # filemaker
  acl Safe_ports port 777 # multiling http
  acl CONNECT method CONNECT
  
  設置可以連接的端口
  
  http_access allow dorm
  http_access allow bjpu
  http_access allow bjpu2
  http_access allow manager localhost
  http_access deny manager
  http_access deny !Safe_ports
  http_access deny CONNECT !SSL_ports
  http_access deny all
  
  允許http訪問
  
  icp_access allow *允許cache_peer使用ICP協議訪問
  proxy_auth_realm BJPU proxy-caching web server 驗證框提示的banner
  cache_mgr [email protected] cache管理員的電子郵件地址
  cache_effective_user *
  cache_effective_group * 執行cache程序的用戶uid和gid
  visible_hostname cnproxy.bjpu.edu.cn cache服務的機器名
  memory_pools on 內存
Copyright © Linux教程網 All Rights Reserved