高可靠性可以看作为系统的一种冗余设定。对于一个特定的请求,如果所申请的http://www.chinahtml.com/systems/' target=_blank>服务器不能进行处理的话,那么其他的http://www.chinahtml.com/systems/' target=_blank>服务器能不能对之进行有效的处理呢?对于一个高效的系统,如果一个Webhttp://www.chinahtml.com/systems/' target=_blank>服务器失败的话,其他的http://www.chinahtml.com/systems/' target=_blank>服务器可以马上取代它的位置,对所申请的请求进行处理,而且这一过程对用户来说,要尽可能的透明,使用户察觉不到!
稳定性决定了应用程序能否支持不断增长的用户请求数量,它是应用程序自身的一种能力。稳定性是影响系统性能的众多因素的一种有效的测量手段,包括机群系统所能支持的同时访问系统的最大用户数目以及处理一个请求所需要的时间。
在现有众多的均衡http://www.chinahtml.com/systems/' target=_blank>服务器负载的方法中,广泛研究并使用的是以下两个方法:
DNS负载平衡的方法RR-DNS(Round-Robin Domain Name System)
负载均衡器
以下,我们将就这两种方法进行讨论。
DNS轮流排程 RR-DNS(Round-Robin Domain Name System)
域名http://www.chinahtml.com/systems/' target=_blank>服务器(Domain Name Server)中的数据文件将主机名字映射到其IP地址。当你在浏览器中键入一个URL时(例如:www.loadbalancedsite.com),浏览器则将请求发送到DNS,要求其返回相应站点的IP地址,这被称为DNS查询。当浏览器获得该站点的IP地址后,便通过该IP地址连接到所要访问的站点,将页面展现在用户面前。
域名http://www.chinahtml.com/systems/' target=_blank>服务器(DNS)通常包含一个单一的IP地址与该IP地址所映射的站点的名称的列表。在我们上面所假象的例子中,www.loadbalancedsite.com 这个站点的映射IP地址为203.24.23.3。
为了利用DNS均衡http://www.chinahtml.com/systems/' target=_blank>服务器的负载,对于同一个站点来讲,在DNShttp://www.chinahtml.com/systems/' target=_blank>服务器中同时拥有几个不同的IP地址。这几个IP地址代表集群中不同的机器,并在逻辑上映射到同一个站点名。通过我们的例子可以更好的理解这一点,www.loadbalancedsite.com将通过下面的三个IP地址发布到一个集群中的三台机器上:
203.34.23.3
203.34.23.4
203.34.23.5
在本例中,DNShttp://www.chinahtml.com/systems/' target=_blank>服务器中包含下面的映射表:
www.loadbalancedsite.com 203.34.23.3
www.loadbalancedsite.com 203.34.23.4
www.loadbalancedsite.com 203.34.23.5
当第一个请求到达DNShttp://www.chinahtml.com/systems/' target=_blank>服务器时,返回的是第一台机器的IP地址203.34.23.3;当第二个请求到达时,返回的是第二台机器的IP地址203.34.23.4,以此类推。当第四个请求到达时,第一台机器的IP地址将被再次返回,循环调用。
利用上述的DNS Round Robin/jishu511524532技术,对于某一个站点的所有请求将被平均的分配到及群中的机器上。因此,在这种/jishu511524532技术中,集群中的所有的节点对于网络来说都是可见的。
DNS 轮流排程的优势
DNS Round Robin的最大的优点就是易于实现和代价低廉:
代价低,易于建立。 为了支持轮流排程,系统管理员只需要在DNShttp://www.chinahtml.com/systems/' target=_blank>服务器上作一些改动,而且在许多比较新的版本的DNShttp://www.chinahtml.com/systems/' target=_blank>服务器上已经增加了这种功能。对于Web应用来说,不需要对代码作任何的修改;事实上,Web应用本身并不会意识到负载均衡配置,即使在它面前。
简单. 不需要网络专家来对之进行设定,或在出现问题时对之进行维护。
DNS 轮流排程的缺点
这种基于软件的负载均衡方法主要存在两处不足,一是不实时支持服务期间的关联,一是不具有高可靠性。
• 不支持http://www.chinahtml.com/systems/' target=_blank>服务器间的一致性。http://www.chinahtml.com/systems/' target=_blank>服务器一致性是负载均衡系统所应具备的一种能力,通过它,系统可以根据会话信息是属于http://www.chinahtml.com/systems/' target=_blank>服务器端的,还是底层http://www.chinahtml.com/databases/' target=_blank>数据库级别的,继而将用户的请求导向相应的http://www.chinahtml.com/systems/' target=_blank>服务器。而DNS轮流排程则不具备这种智能化的特性。它是通过cookie、隐藏域、重写URL三种方法中的一种来进行相似的判断的。当用户通过上述基于文本标志的方法与http://www.chinahtml.com/systems/' target=_blank>服务器建立连接之后,其所有的后续访问均是连接到同一个http://www.chinahtml.com/systems/' target=_blank>服务器上。问题是,http://www.chinahtml.com/systems/' target=_blank>服务器的IP是被浏览器暂时存放在缓存中,一旦记录过期,则需要重新建立连接,那么同一个用户的请求很可能被不同的http://www.chinahtml.com/systems/' target=_blank>服务器进行处理,则先前的所有会话信息便会丢失。
不支持高可靠性。设想一个具有N个节点的集群。如果其中的一个节点毁坏,那么所有的访问该节点的请求将不会有所回应,这是任何人都不愿意看到的。比较先进的路由器可以通过每隔一定的时间间隔,对节点检查,如果有毁坏的节点,则将之从列表中去除的方法,解决这个问题。但是,由于在Internet上,ISPs将众多的DNS存放在缓存中,以节省访问时间,因此,DNS的更新就会变得非常缓慢,以至于有的用户可能会访问一些已经不存在的站点,或者一些新的站点得不到访问。所以,尽管DNS轮流排程在一定程度上解决了负载均衡问题,但这种状况的改变并不是十分乐观和有效的。
除了上面介绍的轮流排程方法外,还有三种DNS负载均衡处理分配方法,将这四种方法列出如下:
Ø Round robin (RRS): 将工作平均的分配到http://www.chinahtml.com/systems/' target=_blank>服务器 (用于实际服务主机性能一致)
Ø Least-connections (LCS): 向较少连接的http://www.chinahtml.com/systems/' target=_blank>服务器分配较多的工作(IPVS 表存储了所有的活动的连接。用于实际服务主机性能一致。)
Ø Weighted round robin (WRRS): 向较大容量的http://www.chinahtml.com/systems/' target=_blank>服务器分配较多的工作。可以根据负载信息动态的向上或向下调整。 (用于实际服务主机性能不一致时)
Ø Weighted least-connections (WLC): 考虑它们的容量向较少连接的http://www.chinahtml.com/systems/' target=_blank>服务器分配较多的工作。容量通过用户指定的砝码来说明,可以根据装载信息动态的向上或向下调整。(用于实际服务主机性能不一致时)
负载均衡器
负载均衡器通过虚拟IP地址方法,解决了轮流排程所面临的许多问题。使用了负载均衡器集群系统,在外部看来,像是具有一个IP地址的单一http://www.chinahtml.com/systems/' target=_blank>服务器一样,当然,这个IP地址是虚拟的,它映射了集群中的每一台机器的地址。所以,在某种程度上,负载均衡器是将整个集群的IP地址报漏给外部网络。
当请求到达负载均衡器时,它会重写该请求的头文件,并将之指定到集群中的机器上。如果某台机器被从集群中移除了,请求不会别发往已经不存在的http://www.chinahtml.com/systems/' target=_blank>服务器上,因为所有的机器表面上都具有同一个IP地址,即使集群中的某个节点被移除了,该地址也不会发生变化。而且,internet上缓存的DNS条目也不再是问题了。当返回一个应答时,客户端看到的只是从负载均衡器上所返回的结果。也就是说,客户端操作的对象是负载均衡器,对于其更后端的操作,对客户端来讲,是完全透明的。
负载均衡器的优点
• http://www.chinahtml.com/systems/' target=_blank>服务器