FreeBSD 研习课程讲义
Prev 基本概念 Next

  • Proxy Server简介

    随着全球资讯网(World Wild Web)的持续成长,为了减少网路频宽的浪费、降低伺服器 负荷、加快浏览网页时的反应速度,使用代理(proxy)快取(caching)伺服器是近年来 的趋势。所谓「快取(caching)」,就字面来看即「快速取得」的意思,常常有人将其与 「代理 proxy」的意义混淆,其实这是不同的两件事。

    「快取」主要意思就是将经常会使 用到的物品,放置在很方便又快速取得的地方,用以节省时间增加效率。而「代理」是指 代替某人做某事。在平常生活中,我们会把最近常会使用到的书、物品等,从书架上或物 品原本摆放的地方,搬移放置在书桌上方便取用,此书桌即可视为一个快取系统。

    而在电脑的世界里,也大量利用了快取技术来增强电脑的效能,目前几乎所有的电脑设备都有快 取,从中央处理器(CPU)的内外部快取、介於中央处理器与主记忆体中间的快取记忆体 ,显示卡、硬碟、光碟烧录机、网路卡也都有内建快取,这些皆是属於硬体的快取;而在 全球资讯网的网页存取上也应用了快取技术,从网页浏览器内建的个人使用快取,又因为在同个区域网路里浏览相同网页的机率较高的特性,且专线费用昂贵,因而衍生出在网路上建置多人共享的快取伺服器。

    一般而言,使用快取伺服器有三大优点: 一、减少频宽浪费;二、降低网页伺服器的负担 ;三、使用者可较顺畅快速浏览网页。但是快取伺服器也会发生几项问题,如不能保证所 看到的网页是最新的,设定不当可能耗费更长等待时间。
    此外,代理伺服器可透过网域名称或IP位置,进行辨别,拦下色情或不当网站。

  • 软体
    要架设 Proxy Server 所使用软体,在 FreeBSD 上最好的选择是「squid」因为这是一套发展成熟的软体,在网路上有比较多的文件可以查询。
    再来是分析软体,大概可以使用下列的组合:图形绘制程式 fly ; 和分析 log 的程式工具 pwebstats。

  • 硬体
    关於硬体的采购,一般而言有下列几个重点:
    硬碟要快。记忆体要够大。CPU够用即可。网路卡要稳定

    • 硬碟要快

      对於要当 Proxy Server 的硬碟,应该是着重在 Seek Time 和 Latency 的重点上,这比容量更为重要。Seek Time 是指在硬碟中找特定档案位置的平均时间,而Latency是指延迟时间, 硬碟机转速越高越小。
      选择的准则:Seek Time 越小越好,这样搜寻档案内容会变快;Latency 也是越小越好,代表转速要快。Cache 的最大负载量受到 Seek Time 影响,而硬碟传输速率主要影响资料写 入的速度。
      硬碟容量够用即可,不要因为要争取大容量,而牺牲上列所说的两者,针对提升效能来看 ,Seek Time 与 Latency 比较重要。在选择时,把握一个原则,就是使用多颗小容量硬碟比一个高容量好,这样可以降低 Seek Time,搜寻比较快速。小容量硬碟必须有很多才能组合成大容量 Cache 空间,比较合适的规格是 SCSI,因为 SCSI 在多颗时表现比 IDE 好。
      另外可以藉由流量估计需要多大容量,来扩充本身的机器的等级。

      当 IDE 对上 SCSI

      SCSI 目前在两者之间还是属较有选择自由且较快的系统汇流排。Ultra2Wide-SCSI 是日前常见的规格,允许在同一 SCSI 线上串接至多到十五个磁碟机,并拥有 80 MByte/s 的频宽。一些高阶磁碟机种则使用拥有双倍的频宽的 Ultra160 介面。但这些高速的代价是昂贵的。SCSI 磁碟机至少比 IDE 机种贵了三分之一以上。不仅如此,您还得去买张 SCSI 卡。在近几年出厂的主机板均有 IDE 介面,只有少数主机板有随板附加 SCSI 晶片。如果您打算花那笔钱,您可以得到非常稳健的系统基础。但除了资料传输率,同样的IDE和SCSI磁碟机根本没啥不同。如果您用许多磁碟机组成一个 RAID 阵列模式,SCSI系统会比较快。不过 IDE 的发展也从 66Mbytes/s (ATA66-规格)到 100 Mbytes/s (ATA100-规格),甚至出现了 133Mbytes/s(ATA-133)。
      受惠於 SCSI 的特殊功能(command queuing 指令堆叠)或是最新一代的系列,一些磁碟机可以达到更快的速度。高阶电脑通常需要最好的性能,所以最快的磁碟机种都是针对SCSI介面来研发的。
      IDE,在另一方面来说,操作起来简单多了。由於一条IDE排线只能接两个磁碟机,所以只有 Master (主)或 Slave (副)需要设。不须要去设磁碟机识别码(ID),也不需要接终端接头(termination)。近几年来,两个磁碟机不相容已非常少见。

      硬体选择

      当然,要做一些重要选择了,该选择哪一种硬碟?这应该是首要关心的事情。我们可以从服务的社群大小来分别。流量比较小的服务单位,例如:学校方面,IDE 的硬碟绝对够用,而且 IDE 的价格低廉,比较适合资金不甚宽裕的服务单位来使用;流量大的服务单位,例如:县网和区网,强烈建议使用 SCSI 的硬碟,因为高阶电脑通常需要最好的性能,所以最快的磁碟机种都是针对 SCSI 介面来研发的,为得到比较高的效能,建议使用。

    • 记忆体要够大

      在可能的范围内,尽量提高记忆体数量,记忆体数量若不足,会导致效能低落;记忆体的下限和硬碟中拿来做 Cache 的容量有关,和硬碟容量配合才能有效的利用记忆体。
      Squid 所使用的记忆体数量,取决於它使用的 HD Cache 空间。HD Cache 越大,因为 Index Table 越大,所以需要的记忆体也越大。计算公式:

      mem = Squid所需总记忆体
      SZhd = Proxy Server的Cache Disk大小
      SZobj = 每个物件的平均大小,统计值为8KByte
      SZobjidx = 每个物件索引在索引表中的大小,在 Intel x86 CPU上固定值为 72Byte
      SZhotobj = 在 Squid 设定档里面设定的最近取用物件阵列大小,也就是在 squid.conf 里的叁数 cache_mem
      SZprg = Squid 程式执行时本身的大小,视编译时选项不同而变化,但小於 1Mbyte

      举一范例:
      假设某 server 预计配备 50GB 的硬碟总快取空间 (不含系统碟),且将 SZhotobj 设定为128MByte,则计算式如下

      由以上的计算可以知道,一个有 50GB 快取空间的 proxy server 单单是 squid 所需要的记忆体就高达 579MByte。然而,一个 server 除了squid 以外,作业系统与其他的附属程式,例如将网路流量统计资料送出的 daemon,以及每天定时执行的 squid 效能分析程式等等,都需要占用记忆体。因此,整个系统需要的记忆体数量,必然是远大於 579MByte。
      由於 Proxy Server 在进行快取比对的时候,必须在索引表中进行搜寻与比对的动作,如果记忆体不足,而使用 swap 取代,由於记忆体与 swap 的速度相差达3个数量级,故系统的效能会有明显的下降。
      另外,squid 本身利用大量的硬碟空间储存快取资料(Cache Object),运作的时候原本就会有大量的硬碟读写动作,如果又加上 swap 那无疑是雪上加霜。
      因此,建议将系统的记忆体尽可能的加大,并且在可能的范围内增加 SZhotobj 大小,利用高速的记忆体来存放经常用到的快取资料,减少 squid 硬碟的读写次数。
      总归一句话:记忆体加到主机板可以用的极限,一定没错。

    • CPU够用即可

      在 Proxy Cache Server 会用到大量 CPU 运算,就是在流量统计和内容过滤,其实找 Pentium-III 等级以上的 CPU 大多够用,若发现 CPU 不够用应考虑软体方面问题,例如:流量统计可移到流量低的时间处理,内容过滤可考虑外加机器或写成比较精简的规则。建议:若要组效能比较高的 Proxy Server 时,可以使用双CPU,效果更为宏大,处理效率会提高,注意一点:OS 对於 SMP (Symmetric MultiProcessor) 的支援要不错,才能发挥潜力。

    • 网路卡要稳定

      这应该是首要条件,对外门户都不稳,再好机器也没有用武之地,故速度稳定是最为重要,尽可能和骨干网路有同等级的速度,而且较高级的网路卡比较不会影响到Server。最常见的就是 10/100BASE-T,大概市面上可以找到的。而且最好网路设备具备全双工,这样在高承载时,网路传输比较不会有拥塞情况产生。

  • 伺服器之间的关系

    在代理伺服器之间,有一些重要的相对关系。如图:

    Proxy Server 之间有阶层关系,对於上游单位,其关系为 parent,而在平行的单位,则其关系称为 sibling。其两者不同地方在於 parent 会协助下游单位抓取 object ,但是 sibling 则不会。

    在 Proxy Server 相互沟通方面,是用 ICP_QUERY 询问,但这样会降低一些效能,故若要作询问工作则是会利用到 Digest Table 来作交换讯息。

    而由 end user 来看,跟 Proxy Server 是以 HTTP 来作沟通,而伺服器对於目标网页也是利用 HTTP 来动作。


Prev Home Next
UP Cache 目录结构