扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在升级网络的时候,存储是另一个主要考虑的硬件,我们首先考虑是将磁盘直接绑定在文件服务器上。作为一种新的技术SCSI可以用于此处,例如,最近生产的Ultra320 产品,就可以为服务器提供高达每秒320MB的数据存取速率。
SCSI技术支持一个控制器控制多个设备,这在存储阵列技术中是非常重要的一点,另外SCSI技术还是一种非常可靠和稳定的技术。
然而,由于ATA驱动器最近在能力和速度方面所取得的进步以及最近引入的串行ATA(SATA)产品也开始具有这方面的特性,使得SCSI技术的优势逐渐有所减弱,在低端产品中这一点尤其明显,在低端产品中SCSI产品的成本差异是主要的影响因素。
要想提高系统的性能,选择从ATA磁盘升级到SCSI产品的代价是非常昂贵的,但是,转向使用SATA产品还是一个性价比非常合适的办法。这种转换需要一个新的存储控制器以及替换所用的驱动器,如今SATA磁盘的容量可以达到100GB以上,并且其转速可以达到10,000rpm。
这一点很重要,因为转速是决定性能的最主要因素。当然,由于需要使用新的磁盘,所以你需要对数据进行全面的备份和恢复,这项工作需要时间,而且由此产生的中断也需要作为一种成本因素考虑在升级成本之中。
如果你考虑升级到磁盘阵列,这也是提高存储分系统性能和可用性的另一种方法。
使用阵列来保证可靠性
在使用存储阵列的情况下,数据将被分段写到多个磁盘驱动器上。使用这种技术就可以实现并行的读写数据,这与串行访问--数据全部写在一个驱动器上--相比较而言,具有更高的吞吐率。
可以有很多办法来配置磁盘阵列,有的方法可以增加额外的性能,有的方法则会实现更好的冗余备份,而有的方法则具备这两者的优点。这些不同的配置方法也就是大家所共知的RAID(独立冗余磁盘阵列)分级配置,最常见的实现方法就是RAID 0 和RAID5。
正如刚才所描述的一样,在使用RAID0阵列技术的情况下,数据将被简单的分成几段,分别写到不同的磁盘上。这种情况没有特殊的硬件需求,而且在大多数网络操作系统中都有软件来支持这种技术。
在这种情况下SCSI和ATA磁盘都可以使用(甚至可以将他们混合在一起使用),如果你想要以比较低的成本来提高存储性能的话,使用这种技术则是一种很好的选择。然而,在RAID0阵列中没有冗余,因此如果一旦其中一块硬盘损坏或者磁盘出现故障,那么所有与之相关的数据都将丢失。
在使用RAID5阵列技术的情况下,由于有额外的错误校正信息交叉在数据中,所以在出现错误时可以利用失效磁盘上的信息以及控制RAID软件等手段来重建数据。
至于不利的一方面,RAID 5并不一定改善存储的性能。在一个安装有硬件RAID控制器的文件共享服务器上我们进行了测试,其结果表明,与个别地访问磁盘(一种称为JBOD——完全磁盘束)相比较而言,将文件共享服务器设置为RAID 0的分段集合时,整个吞吐量只有小幅(7.5%)改进。
但是当相同的系统配置为RAID 5时,系统的吞吐量常常要比JBOD配置还要差,在系统的负载较低时这一点表现的尤其明显。
包括Windows在内,有些操作系统也支持RAID 5技术,但是如果你要求它的性能,那么你最好还是寻求专业的RAID控制器。很明确的是,你需要一个热切换磁盘,这样服务器可以不用关机就可以操作。虽然RAID控制器会占用一定的服务器CPU,但是它可以提供额外的缓存工具,并且在某些情况下,一旦出现停电时它还可以提供电池备份以维护缓存中的内容。
要求增加RAID支持的成本和工作量各不相同。例如,有些提供商在他们的服务器主板上集成了必要的电路,这样一来如果想要使用RAID技术,只需要增加一个很小的硬件进行连接即可。但是,大多数的提供商都要求在服务器中增加一个插件适配器和特定的驱动器支架。如果你想要实现热切换而不停机的话,则需要增加一个外部的驱动器机架。
从技术的角度考虑的话,我们既可以使用ATA磁盘也可以使用SCSI磁盘来创建一个存储阵列。然而,如果使用SATA驱动器来实现存储阵列,你会受到磁盘数量的限制,因为这些磁盘只能放在服务器的内部而不能放在服务器的外部。
除了小型网络之外,对于所有的网络来说,SCSI是一个最好的选择,但是这样一来你会花费大量的金钱,而性能的提高却很小。对于大多数公司来说,他们主要考虑的是如何提高存储的吞吐量,因此最好的选择应该是SAN。
如果使用SAN技术,用于存储的磁盘则不仅仅是绑定到单个的服务器上,而是分散在一个仅仅用于存储的网络上,当然,服务器也是连接在这个网络上。从传统意义上来说,使用这种技术需要使用价格昂贵的光纤通道硬件,但是大约从去年开始,使用普通以太网交换机的基于IP技术的SAN开始引入,从而可以大大降低SAN技术的成本。
软件也是一个非常重要的方面
在服务器上使用的操作系统和其他软件对性能也会有影响。虽然将他们升级为最新的版本非常具有诱惑力,但是同时也存在很多问题,并且会消耗一定的时间。如果升级的结果能够极大的提高文件共享的速度或者使得应用程序的反应速度更快的话,进行升级还是值得的。
最新发行的Windows Server 2003发行版就是一个很好的例子,在安全性和功能上有所增强的同时,普遍认为这是Windows 发行以来性能最好的版本,而微软也非常希望它的用户,尤其是那些还在使用NT(大约40%的服务器都是基于NT系统来安装的)的用户能够升级他们的系统。
当然,进行这样的升级还是需要一些成本的,但是好的一面是Windows Server 2003真的比NT和2000要快。当然,不升级服务器的硬件也可以获得这些收益。
对于新软件的不同版本来说,他们对硬件的最小需求可能会有所不同。我们针对常见系统和已经老化的主机系统进行了测试,看看将他们的操作系统软件升级到Windows Server 2003可能会有什么样的影响。
在客户端负载比较低的时候,几乎没有差别,所以对于小型网络来说,不值得进行升级。但是随着用户数量的增加,在吞吐量方面的差别还确实存在,而且是非常明显的。当然,你不仅是得到了更好的吞吐效率,还有更多的如文件和打印共享方面的改进也是使得现在的用户愿意迁移到新的操作系统上的原因。
例如,利用新的自动系统恢复(Automated System Recovery,ASR)功能选项来获得可用性,以及利用非常有用的映射复制(Shadow Copy)工具对重要的数据卷建立及时点的快速映象。一直以来,第三方的备份程序都提供这种服务,但是现在这种技术已经开始内置在操作系统中,使得如今的文件备份工作不需要求助于特定备份工具。
映射复制特征还允许用户使用Windows的浏览器来找寻各个文件的早期版本。
该软件还有一个SAN引导方面的特征,并且该软件已经改进成为分布式文件系统(Distributed File System--DFS),而且允许在多个服务器上创建一个逻辑的文件系统。
对于在服务器上运行应用程序这一点来说,随着处理器数量的增加,这些程序的性能也得到了明显的改善。当然它也支持更多的内存。另外,作为新操作系统的一部分,IIS6.0网页服务器的请求处理体系结构已经得到了修正,目前的这种体系结构使得网页服务器比以前的网页服务器更为强壮、而且功能更强。
对于这些改进以及其他改进的效果的量化依赖于所涉及到的应用程序,也许你希望得到这种改进的效果,因此为了明确的告诉你改进的大小,我们在一个两路的SMP服务器上进行了一次测试,测试内容是在该服务器上运行一个简单的基于网页的应用程序。
我们将操作系统从Windows 2000 Advanced Server 升级到Windows Server 2003,不论是安装一个处理器还是安装两个处理器,在处理请求的数量方面得到了很大程度的增加。在使用Windows Server 2003这个软件时,与使用一个处理器相比较而言,使用两个处理器在性能收益方面具有明显改进。
在IIS6.0中另一个关键的改变在于,它可以使用自我包含(self-contained)的工作进程来运行网站和应用程序,从而它们不会妨碍或者停止在服务器上运行的其他站点或程序。类似地,主要的web服务器程序以及相关的web管理服务各自都有专门的进程,使得那些应用程序很难降低服务器的性能。
在Windows Server 2003中,活动目录服务也得到了改进,并且具备了很多安全特征,包括新的改进具备了锁定服务器配置的能力,这主要为了减少连接到因特网上的服务器受到攻击的次数。
这些改进(包括文件共享以及应用程序性能的增强)都可以作为将系统升级到Windows Server 2003的强有力的理由。
如今,正如大多数公司所想要的那样,他们将这些升级工作变得相当的简单,他们在少数的硬件平台上将这些操作进行合并。这样一来,将新的软件迁移与硬件升级工作绑定在一起,使得在进行硬件升级的同时也就包含了软件的升级。
负载均衡
好了,在通过升级服务器的硬件和软件来改善网络性能和可用性方面,我们只能做这些工作。当然,还有另外一个办法可以实现相同的目标,在一个集群中的两个或者多个服务器上分散处理负载。
不幸的是,对于文件共享以及传统的客户端/服务器应用程序来说,采用这种方法需要特定的集群软件(并且还需要硬件),这是一个复杂而昂贵的选项。但是对于网页服务器集群来说却并不是这样,如果网页服务器采用这种方法则简单且费用也不高。
对于这种负载均衡集群来说,他们所必须实现的只是截获客户端的请求并将这些请求分散给构成集群的各个服务器(节点)。
我们将集群作为一个整体,给定一个虚拟的名字和IP地址,这好似是一个单个系统一样,并且可以使用各种不同的算法将客户端的请求重定向到其成员节点上。这些方法中最简单的方法也就是众所周知的round-robin算法,该算法通过依次向下一个服务器发送请求来实现负载均衡。
作为另外一种可以选择的方法,也可以将当前的请求定向到最不繁忙的服务器或者将其定向到活动会话数最少的服务器等等。 在集群中,仅仅只需要增加更多的节点就可以按照一定的比例来扩展其性能,同时可用性也会得到提高,因为在集群中,不论由于什么原因而导致其中一个节点失效时,其他的节点仍然可以正常工作。
有两种方法可以实现这种目的,一种方法是使用服务器上本身所带有的软件。Windows 2000 Server和Windows Server 2003都自带了负载均衡程序,在大多数的Linux中也带有这种程序,并且还有很多第三方的产品也可以使用。
另外一种实现方法是使用外部交换机,不是一个常见的二层交换机,而是一个能够在四层或者以上作出路由选择的交换机。这个交换机应该位于集群和局域网或者外围世界的连接之间,如果要得到最大吞吐量,路由需要以线速处理。
如果还考虑所有的其他硬件附件,那么负载均衡交换机的价格相当昂贵,但是与软件实现方法相比较而言,这种交换机确实有它的优势。例如,交换机可以处理运行各种不同应用程序的混合平台,而不需要在服务器上增加任何其他软件。
虽然许多交换机都包含处理数据复制的机制,但是大多数公司都是在前端web集群系统之后使用一个单一的数据库来处理这种情况。
使用交换机的另一个优势是能够构建额外的冗余——从节省空闲的电源到完成交换机的复制工作。它所能够实现的不仅仅是IP地址的均衡,还可以实现更多的工作。例如,有些产品可以接通URL以及应用程序的类型,有些更为智能,能够根据请求的内容来实现客户负载均衡。
然而,这种均衡配置起来非常麻烦,而且不能保证最后的结果是否值得。同样重要的是要具有"持续性"特征,例如,在一次事务处理的过程中,要确保现存的会话不会中途转换到一个新的服务器上。
必要的说明
最后,对于任何类型的网络扩展或者升级而言,需要强调的一点也是非常重要的一点,那就是我们需要一个面面具到的实现方法。这也是我们在本文中自始至终所强调的,如果服务器的其他部分不作改变或者支撑网络不进行升级的话,只是改变某个组件将只会带来非常有限的收益。
例如,要想从额外的局域网适配器中获得收益的话,就需要配备更快或者更多的处理器。不仅如此,你将会发现,改善基础设施的一部分和突出弱点没有什么差别,作出详细的规划并且进行充分的测试准备,然后才开始进行升级。
同样的,在同时升级几个组件的时候,不要期望性能的改善会累积,其结果可能会有相当大的不同。在我们的测试中,我们对一个老的基于奔腾III的服务器就做了多次建议性的更改。
在升级的过程中,我们所用到的材料如下:第二个处理器、将内存从128MB扩展到1GB,将标准的10/100Mbps 局域网适配器更换为吉比特以太网卡,用于配置RAID 0阵列的磁盘以及两个驱动器。
在每次单独进行改变的过程中,我们期望并且得到了很好的结果,但是我们将这些组件全部升级后,文件共享的性能仅仅增加了30%。
这多少让我们有些失望,但是我们还是能够理解的,因为我们不能改变的东西还有处理器的类型、总线的速度以及芯片等其他的东西。
也就是说,总的改进还是值得的。但是如果使用更高规格的硬件作为出发点的话,那性能还可以进一步改善。事实上,按照本专题所讨论的流程,任何想要改善或者扩展网络的人都可以从中获得类似的收益,甚至是更多的收益。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者