<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[负载均衡之软硬件四层交换]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Wed, 06 Jan 2010 06:25:27 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。<br/>负载均衡技术发展了多年，有很多专业的服务提供商和产品可以选择，我个人接触过一些解决方法，其中有两个架构可以给大家做参考。<br/>硬件四层交换<br/>第四层交换使用第三层和第四层信息包的报头信息，根据应用区间识别业务流，将整个区间段的业务流分配到合适的应用服务器进行处理。　第四层交换功能就象是虚IP，指向物理服务器。它传输的业务服从的协议多种多样，有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上，需要复杂的载量平衡算法。在IP世界，业务类型由终端TCP或UDP端口地址来决定，在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。<br/>在硬件四层交换产品领域，有一些知名的产品可以选择，比如Alteon、F5等，这些产品很昂贵，但是物有所值，能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。<br/><br/>软件四层交换<br/>大家知道了硬件四层交换机的原理后，基于OSI模型来实现的软件四层交换也就应运而生，这样的解决方案实现的原理一致，不过性能稍差。但是满足一定量的压力还是游刃有余的，有人说软件实现方式其实更灵活，处理能力完全看你配置的熟悉能力。<br/>软件四层交换我们可以使用Linux上常用的LVS来解决，LVS就是Linux Virtual Server，他提供了基于心跳线heartbeat的实时灾难应对解决方案，提高系统的鲁棒性，同时可供了灵活的虚拟VIP配置和管理功能，可以同时满足多种应用需求，这对于分布式的系统来说必不可少。<br/><br/>一个典型的使用负载均衡的策略就是，在软件或者硬件四层交换的基础上搭建squid集群，这种思路在很多大型网站包括搜索引擎上被采用，这样的架构低成本、高性能还有很强的扩张性，随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。<br/><br/>对于大型网站来说，前面提到的每个方法可能都会被同时使用到，我这里介绍得比较浅显，具体实现过程中很多细节还需要大家慢慢熟悉和体会，有时一个很小的squid参数或者apache参数设置，对于系统性能的影响就会很大，希望大家一起讨论，达到抛砖引玉之效。<br/><br/><br/><br/><br/>1 四层交换技术简介<br/>我们知道，二层交换机是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。三层交换机是直接根据第三层网络层IP地址来完成端到端的数据交换的。<br/>四 层交换机不仅可以完成端到端交换，还能根据端口主机的应用特点，确定或限制它的交换流量。简单地说，四层交换机基于传输层数据包的交换过程，是一类基于 TCP/IP协议应用层的用户应用交换需求的新型局域网交换机。四层交换机支持TCP/UDP第四层以下的所有协议，可识别至少80字节的数据包包头长 度，可根据TCP/UDP端口号来区分数据包的应用类型，从而实现应用层的访问控制和服务质量的保证。所以，与其说四层交换机是硬件网络设备，还不如说它 是软件网络管理系统。也就是说，四层交换机是一类以软件技术为主、以硬件技术为辅的网络管理交换设备。<br/><br/><br/>2 四层交换机工作原理<br/>OSI 模型的第四层是传输层，负责端对端通信，即在网络源和目标系统之间协调通信。在IP协议栈中这是TCP和UDP所在的协议层。在第四层中，TCP和UDP 标题包含端口号，它们可惟一区分每个数据包包含哪些应用协议（例如HTTP、FTP等）。端点系统利用这种信息来区分包中的数据。<br/>TCP/UDP 端口号提供的附加信息可以为网络交换机利用，这是四层交换的基础。具有第四层功能的交换机能够起到与服务器相连接的“虚拟IP（VIP）”前端的作用。每 台服务器和支持单一或通用应用的服务器组都配置一个VIP地址。这个VIP地址被发送出去，并在域名系统上注册。<br/>在发出一个服务请求时，四层交换机通过判定TCP来识别一次会话的开始。然后利用复杂的算法来确定处理这个请求的最佳服务器。一旦做出决定，交换机就将会话与一个具体的IP地址联系在一起，并用该服务器的真正IP地址来代替服务器上的VIP地址。<br/><br/><br/>3 四层交换机的主要技术<br/>四层交换机的主要技术如下：<br/>包 过滤/安全控制：在大多数路由器上，采用第四层信息定义过滤规则已经成为默认标准，所以有许多路由器被用做包过滤防火墙，在这种防火墙上不仅能够配置允许 或禁止IP子网间的连接，还可以控制指定TCP/UDP端口的通信。和传统的基于软件的路由器不一样，四层交换区别于三层交换的主要不同之处，就在于这种 过滤能力是在ASIC专用高速芯片中实现的，从而使这种安全过滤控制机制可以全线速进行，极大提高了包过滤速率。<br/>服务质量：在网络系统的层次结构中，TCP/UDP第四层信息往往用于建立应用级通信优先权限。如果没有四层交换概念，服务质量/服务级别就必然受制于第二层和第三层提供的信息，如MAC地址、交换端口、IP子网或VLAN等。<br/>服务器负载均衡：四层交换机所支持的服务器负载均衡方<br/>式 是将附加有负载均衡服务的IP地址，通过不同的物理服务器组成一个集，共同提供相同的服务，并将其定义为一个单独的虚拟服务器。这个虚拟服务器是一个有单 独IP地址的逻辑服务器，用户数据流只需指向虚拟服务器的IP地址，而不直接和物理服务器的真实IP地址进行通信。只有通过交换机执行的网络地址转换 （NAT）后，未被注册IP地址的服务器才能获得被访问的能力。<br/>主机备用连接：主机备用连接为端口设备提供了冗余连接，从而在交换机发生故障时能 有效保护系统。这种服务允许定义主备交换机，同虚拟服务器定义一样，它们有相同的配置参数。由于四层交换机共享相同的MAC地址，备份交换机接收和主交换 机全部一样的数据。这使得备份交换机能够监视主交换机服务的通信内容。<br/>统计：通过查询第四层数据包，四层交换机能够提供更详细的统计记录。因为管 理员可以收集到更详细的哪一个IP地址在进行通信的信息，甚至可根据通信中涉及到哪一个应用层服务来收集通信信息。当服务器支持多个服务时，这些统计对于 考查服务器上每个应用的负载尤其有效。增加的统计服务对于使用交换机的服务器负载平衡服务连接同样十分有用。<br/><br/><br/>4 七层交换技术简介<br/>七 层交换机的智能性能够对所有传输流和内容的控制。由于可以自由地完全打开传输流的应用层和表示层，仔细分析其中的内容，因此可根据应用的类型而非仅仅根据 IP和端口号做出更智能的负载均衡决定。这就可以不仅仅基于URL做出全面的负载均衡决策，而且还能根据实际的应用类型做出决策。这将使用户可以识别视频 会议流，并根据这一信息做出相应的负载均衡决策。<br/>这类具有第七层认知交换机的部分功能保证不同类型的传输流可以被赋予不同的优先级。具有第七层认知的设备不依赖路由设备或应用来识别差别服务（Diff-Serv）、通用开放策略服务或其他服务质量协议的传输流。这就使用户不必依赖应用或网络设备来达到这些目的。<br/>在Internet网、Intranet网和Extranet网，七层交换机都大有施展抱负的用武之地。比如企业到消费者的电子商务、联机客户支持，人事规划与建设、市场销售自动化，客户服务，防火墙负载均衡，内容过滤和带宽管理等。<br/><br/>=============================<br/>代理模式和透明模式的比较<br/>在内容网络中，负载均衡器或XML交换机根据从应用层获取的各类详尽信息在Web服务器间智能地分配流量。第7层负 载均衡器与老式的第4层负载均衡器最本质的区别在于，直接利用HTTP头信息、SSL SESSION ID、cookie以及URI这些第7层（应用层）数据。尽管第4层负载均衡器也能像第7层负载均衡器一样在多个Web服务器间分配内容，但它基于端口的 流量分配方式使服务器群中的每个Web服务器都必须再生全部网页内容，显得很不经济。<br/>两种工作模式<br/>第7层负载均衡器有2种配置模 式：代理模式（Proxy）和透明模式（transparent）。代理模式是指负载均衡器作为两个或多个Web服务器间的服务中介，所有发向网站的服务 请求首先来到负载均衡器，由负载均衡器决定如何分配这些请求。在透明模式下，负载均衡器不断侦听网络，只对事先指定的某些特定服务的请求做出处理。<br/>单路并联和双路并联拓扑结构<br/>在代理模式下，负载均衡器是Web服务器群的唯一入口，集中进行安全管理、统一处理登录请求。负载均衡器能够始终对多个服务器开放多个TCP会话，这样，负载均衡器在与每个服务器第二次交换TCP握手信号时就不再有延迟，所以，代理模式比透明模式在性能上要略胜一筹。<br/>大多数的负载均衡器和XML交换机都支持代理模式。Netscaler公司的Request Switch 9000系列交换机在代理模式下工作时，既能进行HTTP识别，又能进行TCP会话，因此，能够利用既有的TCP连接处理HTTP1.1类型的服务请求。<br/>如果要处理运行在Web上的SSL加解密会话，负载均衡器一般来说必须工作在代理模式下。负载均衡器能够自行对数据解密，也可以使用第三方的相关产品， 解密后负载均衡器对流量进行检测，并做出路由选择，最后，用SSL把自己对客户端的响应进行加密。有些负载均衡器也可在透明方式下进行上述工作，但那样会 产生更多的延迟。<br/>串联式拓扑结构<br/>代理模式和透明模式的最显著区别是：在代理模式下，由负载均衡器结束会话，而在透明模式下，则由Web服务器结束会话。无论是哪种模式，都由负载均衡器决定由哪一台服务器处理客户端的请求。<br/>三种布局方式<br/>负载均衡器在网络中有三种布局方式，即：串联式（INLINE）、单路并联式（ONE-ARM）和双路并联式（SIDE-ARM）。<br/>串联式：负载均衡器位于路由器和交换机之间，路由器和交换机分别与服务器群相连。这种拓扑结构的缺点显而易见：不管负载均衡器是否需要对某些流量进行检测，所有流量都要流经负载均衡器。如果该负载均衡器吞吐量较低，整个网络的性能就会变差。<br/>在代理模式下，将负载均衡器进行串联配置是非常简单的，但在流量较大的网络中，这种配置需要另加一台负载均衡器作为备份，以防单点故障的发生。<br/>单路并联和双路并联结构：负载均衡器配置在交换机的旁边，而不是夹在它们中间。单路并联和双路并联的区别在于负载均衡器和交换机的接口数不同。单路并联 只有一个接口，双路并联则有两个。至于究竟采用单路并联还是双路并联，应该事先对通过交换机的流量进行评估。流量大，双路并联是最佳选择；流量小，单路并 联也就够了。<br/>负载均衡的备份问题<br/>由于负载均衡器通常是Web服务器群的唯一入口，因此，部署负载均衡器之前，必须首先考虑好负载 均衡器的备份问题。当主负载均衡器出现故障时，备份负载均衡器能立即接管工作。备份负载均衡器的配置方式有活动式（active-active）和旁路式 (active-standby)两种。在活动式配置下，两台负载均衡器同时处理来自同一IP地址的服务请求，因此，除了在出现故障时响应延迟极短外，在 平时，Web服务器还能够同时处理更多的客户请求。在旁路式配置下，主负载均衡器工作，备份负载均衡器仅在主负载均衡器出现故障时启动，启动时占用主负载 均衡器的IP地址和MAC地址。备份负载均衡器从故障发生开始到接管服务一般要有几秒钟的延迟，在这期间，客户的服务请求就会遭到拒绝。<br/><br/>===================================================<br/>七层设备除了F5还有很多，在七层上做负载均衡的软件业很多，比如大名鼎鼎的HaProxy，比如配上第三方工具的LVS，甚至因为负载均衡的重要 性，很多具有前瞻性的Web服务器开始提供这样的功能，比如nginx，比如light httpd，nginx的七层负载均衡实际上还是很不完善的，当后端代理一台机器死掉后，nginx还会发送请求给这个机器，这个机器不处理，那么 nginx就会一直等待超时，在超时后再将请求分配给其他的机器，在流量大时会很影响性能，造成一定程度的连接堆积甚至堵塞，nginx的负载均衡算法也 相对少很多，没有haproxy和LVS多，当然后者是专业负载均衡软件。<br/><br/>静态文件缓存也有很多，比如不朽的squid，比如最近两年很火的varnish，甚至号称比squid更快速更精准的nginx的模块 ncache,varnish使用的Visual Page Cache技术能够显著降低内存和磁盘的交换次数，使系统利用率更高，我没有在百万级以上环境检测过varnish，很多人说varnish不是足够的稳 定，我测试的时候没有发生什么问题。<br/><br/>静态文件缓存一般都不止一台，我一直推崇使用七层负载均衡来设计静态缓存架构，因为可以降低重复率，降低重复率自然是提高利用率。URL HASH能够很好的解决缓存浪费的情况，比如用户头像放在一台机器上，模板中的小文件放在另外一台机器上，利用七层负载均衡就很容易让头像的请求命中头像 服务器，模板请求命中模板缓存服务器，避免了三层或者四层负载均衡重复缓存导致的硬件利用率低下问题。而且服务单一，新切换的缓存机器，很容易重新缓存 满。<br/><br/>七层负载均衡和四层负载均衡相比，最大的缺点就是没有四层的负载能力高，Haproxy据说能跑到40万并发，LVS有几百万，这些都是理论上的数据，真的跑到40万的时候，服务器网卡早就挂了。<br/><br/>来自：http://blog.csdn.net/21aspnet/article/details/1534101
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 负载均衡之软硬件四层交换]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>