网站大量收购独家精品文档,联系QQ:2885784924

浅谈干事器集群技巧.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅谈干事器集群技巧

浅谈服务器集群技术 浅谈服务器集群技术 为了使得多台系统能表现的如同一台服务器系统一样,那么就必须具备一个基本条件,就 是这么多台服务器系统,每台单独运行,都能提供完全一致的服务,否则,不同的服务器 提供不一致的服务,又如何对外表现出完全一致的表现呢? 这里,最简单的例子是Web服务器,我们可以设置Web服务器,使多个Web服务器中保存的网 页文件内容完全一致,这样,无论访问哪个服务器,只要使用同样的URL就能得到同样的结 果。 因此,在这个阶段要保证内容的一致性,就需要使用诸如服务器之间的同步镜像、网络存 储系统NAS或SAN,数据库的同步复制等等技术。 2. 实现:任务调度 当所有的服务器都具备一致性的表现,接下来的任务就是将任务按照一定的方式分配给这 些服务器,这就是任务调度。 实现任务调度首先需要要将任务尽可能的按照小粒度分割,每个粒度应该是能够在不同服 务器部分上单独执行的最小单位。粒度划分的越小,任务分割得越平均,因而整体效果就 越好。但粒度的划分是有一定条件的,粒度越小,粒度之间的关联就越紧密,例如在SMP多 处理器的计算机系统中,任意一个线程都可以在任一个处理器上执行,因此执行粒度可以 划分为线程,但是线程之间是共享内存的,这已经在理论上提出,并在并行计算机上实现 ,但在不同服务器之间目前还是不现实的。 由于大多数网络服务都是基于TCP网络连接的,因此最简单的考虑,可以按照TCP连接划分 任务粒度,这适合包括Web服务,数据库连接等绝大多数情况。 实现任务调度的方式有很多种,一种方法是在系统内部完成,所有的服务器能够自我协调 ,完成任务调度,这种方法要涉及所有的服务器,依赖于具体的应用系统,因而更为复杂 。另一种方法是不在服务器之间实现调度,而依赖于外部的任务调度设备执行调度。 无论那种任务调度方式,最大的问题就是害怕任务调度本身带来的额外消耗或性能瓶颈, 因此使用硬件设备和单一的高效率系统,作为外部任务调度设备,成为了集群的首选方案 。 3. 外部任务调度:负载平衡和虚拟服务器 使用外部任务调度设备对任务按照网络连接进行分配,这种情况通常被称为网络服务器的 负载平衡。外部的任务调度设备有很多种,例如基于BSD/OS的F5,CISCO的LocalDirector ,以及一些七层交换机,例如Foundry的交换机等等,我也曾在98年基于FreeBSD的NATD做 过这方面的探讨。目前,除了一些基于硬件交换机设备之外,完全软件的实现中最为流行 的就是LVS,Linux Virtual Server,作为一个开放源代码的项目,他得到了Linux社区的 大力支持,并用于大部分Linux集群设备中。 LVS是由国防科技大学的章文松提出的一个开放源代码项目,事实上这也是国内Linux开发 工作中最被国际认可的一个工作,这也标志着国内在这个方向上的研究并不次于国际同行 。 LVS中最为优秀的特点是实现了策略路由的观念,它允许一个TCP连接由任务分配设备分配 给后端服务器中之后,后端服务器使用不同的路由,不再经过任务分配器,而是直接返回 给客户,这种方式需要后端服务器也是Linux设备,因此不是简单的任务调度。 4. 服务器负担:容错与监控 任务调度的关键是将所有的任务平均的分配给所有的服务器,如果不能做到合理的分配, 就能出现部分服务器上的拥塞现象,此时还可能有后台服务器类型差异造成的处理能力的 不一致等情况。 为了达到这个任务分配的目的,必须使用一种方法来获得服务器状态,这里就有不同的几 种方法。最简单的方法是按照当前服务器的任务数量来衡量服务器负荷,通常就是按照网 络连接的数量来衡量,这种方法应该是比较模糊的,因此不同的连接对服务器造成的压力 是不同的,例如一个静态网页的处理和一个后台CGI程序的处理,服务器负担就绝对不同。 一些负载均衡设备通过测量设备对网络连接响应时间来判断服务器的负荷,这基本上能够 反映一些情况,但也并非绝对如此,因为优秀的服务器对于基本的网络响应是迅速的,但 对于后面的处理过程则受系统负荷的影响。 因此,一些系统甚至引入了客户/服务器机制,在后台服务器中安装代理来完成探测系统 性能的任务。 当任务调度设备能够精确的了解服务器负荷的时候,它显然就能够达到了解后台服务器的 可用性,就是说任务调度设备能够检测出某些后台服务器不能正确运行,从而避开这个服 务器,将任务分配给其他设备,达到容错的目的。 5. 共享数据:会话管理 还是以Web访问为例,对于普通的网页,不同的HTTP连接就可以认为是不同的任务。但是, 对于更复杂的应用,例如需要用户登录,并根据不同用户提供不同服务的情况呢? 此时,如果仍然还是要把不同的HTTP连接看作不同的任务,那么这些连接之间实际上还是 有一定关系的,事实上每个用户从登录到

文档评论(0)

f8r9t5c + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档